Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts

Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job

designers computer client site

Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work

Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop

Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.

Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements

Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job

As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook

There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions

Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information

HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits

The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next] [back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job

User Comments

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?

Cancel or

Vote down Vote up

over 3 years ago

602-230-4210 we will do some wacky stuff.

Vote down Vote up

about 5 years ago

This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne

Vote down Vote up

over 5 years ago

Thank you very much for sharing it helped http://www.urunmania.com

Vote down Vote up

almost 6 years ago

idk why write them nasty things wen this is a informational site , get a life ppl....

Vote down Vote up

over 7 years ago

website design is my passion

Vote down Vote up

over 7 years ago

This page was very helpful and organized

Vote down Vote up

almost 7 years ago

hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients

Vote down Vote up

over 6 years ago

Yall so dang nasty

Vote down Vote up

almost 7 years ago

i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.

Vote down Vote up

over 6 years ago

sex <3

Vote down Vote up

almost 7 years ago

ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!

Vote down Vote up

over 7 years ago

Good Job

Vote down Vote up

over 7 years ago

Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up

about 7 years ago

It is very hepful for shaping my carreer

Vote down Vote up

almost 7 years ago

This helped me out alot thanks

Vote down Vote up

over 7 years ago

tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

almost 7 years ago

hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients

Vote down Vote up

over 6 years ago

i like pooping

Vote down Vote up

over 6 years ago

This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.

Vote down Vote up

over 7 years ago

i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!

Vote down Vote up

about 7 years ago

how does the salary range in freshar and experince in web design/web devlopement

Vote down Vote up

over 6 years ago

I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea

Vote down Vote up

about 7 years ago

good job...i m web deigner..

Vote down Vote up

about 7 years ago

Hawaii Web Designer

Vote down Vote up

about 7 years ago

wow1 now i want to be an web designer now. I am not talking about the money!

Vote down Vote up

over 6 years ago

suck my bmw you maggit penis sucker queer bates penis munchers

Vote down Vote up

over 7 years ago

Good Job

Vote down Vote up

over 7 years ago

sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job

Vote down Vote up

over 5 years ago

I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?

Vote down Vote up

over 5 years ago

i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!

Vote down Vote up

over 5 years ago

i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!

Vote down Vote up

over 5 years ago

i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!

Vote down Vote up

almost 6 years ago

Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.

Vote down Vote up

almost 6 years ago

interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages

Vote down Vote up

almost 6 years ago

wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com

Vote down Vote up

almost 6 years ago

I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design

Vote down Vote up

almost 6 years ago

Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up

almost 7 years ago

http://www.sherwinhermogenes.com/

Vote down Vote up

about 6 years ago

thanks to u very much for given information for web career. by bangladesh

Vote down Vote up

about 6 years ago

Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur

Vote down Vote up

about 6 years ago

8==========D~~~~~

Vote down Vote up

over 6 years ago

thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.

Vote down Vote up

almost 7 years ago

i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design

Vote down Vote up

over 6 years ago

poop

Vote down Vote up

over 7 years ago

sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job

Vote down Vote up

almost 7 years ago

sup?

Vote down Vote up

over 7 years ago

perfect your information.

Vote down Vote up

over 8 years ago

Is this job open for everyone.
Hardware Designer Job Description

Vote down Vote up

over 7 years ago

Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran

Vote down Vote up

over 6 years ago

I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com

Vote down Vote up

almost 7 years ago

Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,

Vote down Vote up

almost 7 years ago

i just going to complete my web design course i would like to open an office for myself. so how do i get clients?

Vote down Vote up

almost 7 years ago

how does the salary differs from freshers web designers to experienced.

Vote down Vote up

almost 7 years ago

I love black penis

Vote down Vote up

over 3 years ago

This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

almost 4 years ago

sewdfweq

Vote down Vote up

about 4 years ago

IM A #FUCKMOTHERINGVAMPIRE

Vote down Vote up

about 4 years ago

THIS MADE MY BRO KILL HIM SELF

Vote down Vote up

over 4 years ago

tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfid

Vote down Vote up

over 4 years ago

tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfid

Vote down Vote up

over 4 years ago

tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDtjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfid

Vote down Vote up

over 4 years ago

PoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoopPoo

Vote down Vote up

over 4 years ago

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Vote down Vote up

over 4 years ago

I like to swim in a pool of semen and and walk into a walmart pretending im a female with mental retardation.

Vote down Vote up

over 4 years ago

I like to shave my balls and glue my pubes to my face and go to the store and pretend im a pirate

Vote down Vote up

over 7 years ago

Hello, I'm going to college to get my Bachelor in Multimedia Design and Development and so far I've learned about design and done very little with photoshop & any of the other programs. My ultimate goal is to be a web graphic designer what i would like to know is why is math & algebra such a high line course with this career most of this math is pointless

Vote down Vote up

almost 6 years ago

Do your work class!

Vote down Vote up

almost 6 years ago

Male

Vote down Vote up

about 6 years ago

i love having anal with my cat

Vote down Vote up

over 6 years ago

Web Designer jobs requirements please send me Sir

Vote down Vote up

over 6 years ago

hi. i relly like this page ur luky i watched it cuz im famus. lots more ppl will watch this now. it was a good storey. thank u for it.

-mirandas!!!!!!

Vote down Vote up

over 6 years ago

Dear Sir,





I am sending this mail to apply for the Graphic Designer.



As requested, my updated resume has been attached for your reference.



I find the opportunity that your job is offering is very interesting, I believe that

my technical know-how will make me a very competitive candidate for this position.







I am having 2 years experience as a in Digital Advertisement in Nagpur.





I am also having 3 experience in Event Management in Themes Designer .











Please revert for any clarification and further details.





Waiting for your positive response.





Thank you.





Waiting for your positive response.





Thank you.





Regards

Nitin S Parwatkar



Phone:- 9922446845



Email Id:- nitin_100in1@yahoo.com

Alternate Email ID:- nitin100in1@gmail.com





Vote down Vote up

over 6 years ago

this helps a lot.. thanks for this information... i love web design although im not that quite good in xhtml and paintshop pro and flash.

Vote down Vote up

over 6 years ago


Online watch videos
Sinhala Songs,Hindi Songs,Video Songs,Rock,Hip-Hop, Pop, Rap,RNB,Classic, Remix,
New songs,Sinhala movie songs, Hindi movie songs, Funny Videos ,Live Shows ,


This is Totally Free Service. You can Sell Products and Services On this Web Portal.
Place your Ads in front of millions of eyes instantly! Find or Post Ads for Jobs,
Personals,Real Estate, Pets, Vehicles , Furniture , Apartments , Housing , Services ,
Events and more...

Add your web site here.. Get more visitors to your site..
Reference,Travel, Shopping,Science, Nature & Technology, Recreation & Sports,
Real Estate, Professions & Industries, People, Society & Culture, News & Media,
Marketing & Promotion, Home & Garden, Health, Medicine & Fitness, Government
& Politics, Fashion & Beauty, Family & Friends, Entertainment & Games,Education
, Computers & Internet ,Business, Economy & Finance,Arts ,Animals & Pets

Vote down Vote up

over 6 years ago

This is good job. Thank you very much.

I do not web designing. so please direct to me about this.

Vote down Vote up

over 6 years ago

I want to get a job as a php programmar

Vote down Vote up

over 5 years ago

POOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP

Vote down Vote up

over 7 years ago

Good Job

Vote down Vote up

almost 7 years ago

I am attending college at the Art Institute of Pittsburgh Online Division for Web Design and Interactive Media. I haven't started my actual classes as I am doing pre-algrebra at this point. I am also a part time student. My question is when researching for my classes how algebra will affect my career, and to give an example of a practical application of algebra in my career, where do I go to find this information. Most web sites on google are just question and answer. Thank you

Vote down Vote up

almost 7 years ago

for security

Vote down Vote up

almost 7 years ago

h

Vote down Vote up

about 7 years ago

Thanks for this info..

Vote down Vote up

almost 7 years ago

You guys are queers!!!!!!!!!! GO S A D!!!! REAL TALK FBGM!!! ;) TGOD (Taylor game or die) lick MY NUTS!!!! FAGS...... SMOKE MY POLE!! 8=D~~0:

Vote down Vote up

over 7 years ago

Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job

Vote down Vote up

over 7 years ago

S.ABDUL MUTHALIF
Mobile : +91 9791602282
E-mail : abdul_sty@rediffmail.com,amabdulsms711@gmail.com


Objective

To obtain a progressive and a challenging position to utilize my skills in the field of in an environment and continual up-gradation of my gradual cultivation of Technical skills to grow as a complete, competent and consummate Computer Professional.
Area of Interset
Web Development
Web Designing
3D Modeling

Working Experience

1. APOLLO COMPUTER INSTUTITUTE [may 2009 – Till date]
Co-ordinator

Responsibilities:

• Facility in multimedia flash,photoshop,3d and maya

2. IMAGINATORS FILM PRIVATE LIMITED(FILM PRODUCTION LINE) chennai
[jun 2008-may 2009]
1. web page designer ,html, php,css,mysql,flashwebpage animate,
2. 3d Designer
3. Maya Rendering


3. INFOCOMPUTERSERVICES. [Nov 2005 – Jan 2008]
Responsibilities:

• Providing Technical Support for Both Laptops and Destops.

• Technical Support Laptops and Desktops

• Installation os

4. Squares Design
• Web page designer in photoshop
• Web developer

Education Qualification

• Diploma in Information Technology from
Sri Ramakrishna Mission Vidyalaya Polytechnic College,
Periyanakenpalayam, Coimbatore.
Technical Skill

Web development:
• PHP
• Mysql
Web designing:
• ADOBE PHOTOSHOP
• Adobe Dreamweaver
• Adobe flash
• Html
• Css
3D packages:
• 3DMAX
• MAYA
Operating System:
• XP, VISTA, Windows 7

Windows 2000 & 2003 Server:

• Installing, configuring Win 98 / NT / 2000 / XP and Server Win 2000 / 2003.
• Installing and Administrating Network Printer
• Laptops and Desktops Service
• Configure Wireless Equpiments
Computer Proficiency

• Operating System : Red Hat, Linux,XP,VISTA,Windows 7,2003server
• Languages : Basic C,vb,java
• Database : Mysql,


Personal Information


Father’s Name : M.S.Saidalivi
Date of Birth : 14.06. 1986
Nationality : Indian
Sex : Male
Marital Status : Single.
Languages Known : Tamil , English and Malayalam,Hindi
Alternate E-mail : abdul_sty@rediffmail.com
Current Address : s.m.s.bakkerry
101/a railwaystation,road
Katttor,mettupalayam-641305


I hereby declare that the above furnished details are true to my Knowledge and belief.




Vote down Vote up

over 6 years ago

hahahahahahahhahahahahhahahahahhahahahahahahhahahaha

Vote down Vote up

about 7 years ago

Hi Sir
I am Girish Limje I am just i complate my Graduation then i doing a Web Designer course and web Development HTML, CSS, JAVA SCRIPT,AJAX, XML, XHTML, PHP, MSQL,and etc all web designer related course.
so please tell me so best carrear in web designer can i do a good future in web designer and also mostaly my future are depeended. then my complate web designer course then i looking for a Good job.

and you tell me a best information thanks Sir very very thanks

any quary so please call me 09021679418 i am India in Maharashtra 441106

Regarded
Girish Limje
At.post Kodamendhi
Ta. Mouda Dist. Nagpur
Maharashtra India 441106


Vote down Vote up

about 7 years ago

Hi Sir
I am Girish Limje I am just i complate my Graduation then i doing a Web Designer course and web Development HTML, CSS, JAVA SCRIPT,AJAX, XML, XHTML, PHP, MSQL,and etc all web designer related course.
so please tell me so best carrear in web designer can i do a good future in web designer and also mostaly my future are depeended. then my complate web designer course then i looking for a Good job.

and you tell me a best information thanks Sir very very thanks

any quary so please call me 09021679418 i am India in Maharashtra 441106

Regarded
Girish Limje
At.post Kodamendhi
Ta. Mouda Dist. Nagpur
Maharashtra India 441106


Vote down Vote up

about 7 years ago

state school and busery requirements



Vote down Vote up

almost 7 years ago

That pstriple betta than xbawks circle

Vote down Vote up

almost 7 years ago

sir i have interested in graphic & web desiging so pls suggest me this course is the best or not so reply me & its career oppotunities.....my education is B.C.C.A final year appeared

Vote down Vote up

about 6 years ago

I hope to become a web designer. :)

Vote down Vote up

over 7 years ago

sir,

i want to be web page designing job so help me sir

Vote down Vote up

about 7 years ago

Excellent article to read.
it really filled courage in myself since, i am freshener in web designing field,so hands-off to the author of the article

Vote down Vote up

about 7 years ago

Excellent article to read.
it really filled courage in myself since, i am freshener in web designing field,so hands-off to the author of the article

Vote down Vote up

almost 7 years ago

Okay look no one cares about this stupid gay website,as well as whoever put "website design is my passion" keep it to yourself GAAAAHHH fags

Vote down Vote up

almost 7 years ago

Okay look no one cares about this stupid gay website,as well as whoever put "website design is my passion" keep it to yourself GAAAAHHH fags

Vote down Vote up

over 7 years ago

dear sir,
i am a web developer in Bangladesh. our work rate is cheap rate.so please knock my yahoo messenger.our portfolio in http://www.missiongroupbd.net,http://www.blackfasionuk.com,http://www.cheapwebhostr.com

Vote down Vote up

about 5 years ago

Ain't no one got time for that!

Vote down Vote up

about 5 years ago

This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne

Vote down Vote up

over 5 years ago

I am interested of taking on this career in the near future.

Vote down Vote up

over 5 years ago

I would enjoy doing this very much (y)

Vote down Vote up

over 5 years ago

.......
while(1==1){
echo 'this is awsome!';
}
?>......

Vote down Vote up

over 5 years ago

.......
while(1==1){
echo 'this is awsome!';
}
?>......

Vote down Vote up

over 5 years ago

...
while(1==1){
echo 'this is awsome!';
}
?>...

Vote down Vote up

over 5 years ago


while true{
alert("http://careers.stateuniversity.com/pages/142/Web-Designer.html");
}

Vote down Vote up

over 5 years ago


Hi,
I am a masudulhaque.My another and great site
http://www.bdjob.com.bd/
all members welcome
Thanks

Vote down Vote up

over 5 years ago


Hi,
I am a masudulhaque.My another and great site
http://www.bdjob.com.bd/
all members welcome
Thanks

Vote down Vote up

over 5 years ago


Hi,
I am a masudulhaque.My another and great site
http://www.bdjob.com.bd/
all members welcome
Thanks

Vote down Vote up

over 5 years ago


Hi,
I am a masudulhaque.My another and great site
http://www.bdjob.com.bd/
all members welcome
Thanks

Vote down Vote up

over 5 years ago


Hi,
I am a masudulhaque.My another and great site
http://www.bdjob.com.bd/
all members welcome
Thanks

Vote down Vote up

over 5 years ago

MY penis is small.

Vote down Vote up

over 5 years ago

I wish i wasnt gay because i love Levi sooooo much

Vote down Vote up

almost 6 years ago

i ;luv u and i luv trees and matthew and I LUV ALL DA PEEPS XXXXXXXXXXXXXX DIS FING WOS SO HELPFUL 4 MY LYF !! :D OMG DUDEEEEEEE CHILLLLLL jk lol i fancy u








`

Vote down Vote up

about 6 years ago

Great post, I think blog owners should learn a lot from this weblog its rattling user pleasant.

Vote down Vote up

about 6 years ago

i wish i was a jew...

Vote down Vote up

over 7 years ago

156156561556159865615158965ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdssudsfhudfhshdfhdhsfdhsfhhsdhfhdhhsuhfdifdsufdsuifsdhfdhsufuhewufwgqrjhrgfhrfhBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BM MRFBM7 RBOL B5615OL BOL BOL BOL BOL BOLJKXD0FHSDHF0SHT1GBER1IWGBSRT1G0WF401T0F0R40RQFD1013DFQ93AFRIAHHY54W8454TY5W0YT5Y7Y77101010010000110101010410101101101010101010101010101010101001010101010101010101010101111010011 AWE6T7RGRGYFASDFGADGFARDF347Q0EY478WQRUUDHU34989WQRFHWG78IDF8349RIJTHGUWPVJHTRWE8GHTEY8948WTTG-IEW49TII58W4-Y54U6UFGR-T04U8T4QU58TRQ-05U48Q35-FUROWE4TUUTFREIOTPWYHAGYIOWTGRYARA3O5TY3478QTYQ342O7TW348773

Vote down Vote up

over 7 years ago

2nd

Vote down Vote up

about 7 years ago

plz give me info. of web designing

Vote down Vote up

over 5 years ago

White House,I love Barack Obama is he's my hubby and my daughters and I hate working I work everyday uhh :( and to take care of the children of the USA

Vote down Vote up

almost 7 years ago

My name is Methon Sarkar, I can HTML CSS and JavaScripts to work for web design, I am respectful of your organization to apply for a job in a roundabout way.

Vote down Vote up

over 5 years ago

cool

Vote down Vote up

almost 6 years ago

OMG I LUV BALLS

Vote down Vote up

almost 6 years ago

hi

Vote down Vote up

almost 6 years ago

Male

Vote down Vote up

about 6 years ago

This stuff really helped me and crazy about web designing!!!!!thanks to career state university!

Vote down Vote up

about 6 years ago

wow nice job description if you want a web designer visit

http://www.get-awebsite.com/

Vote down Vote up

over 6 years ago

fdszfghxg

Vote down Vote up

over 6 years ago

I found this article to be extremely

helpful and informative.

Thank you.

Vote down Vote up

over 6 years ago

sir, we are preparing the case studies for software design under the topics Domain Name System – Email – World Wide Web (HTTP) – Simple Network
Management Protocol – File Transfer Protocol – Security – Mutimedia applications.so please provide us references.

Vote down Vote up

about 6 years ago

i love having anal with my cat

Vote down Vote up

over 4 years ago

sir
I am student of BE in CSE who like to be a web designer ,so i would like ask some questions regarding that
1.what are the main subjects should i study ?
2.Is web designing has boom and will it be help full in building some one career ?
3. what is the basic salary?what would be salary for a highest post in web designing ?
4.will we be able to build our own company or industry on it with some finance ?

Vote down Vote up

over 4 years ago

This is great

Vote down Vote up

9 months ago

this is so good thanks for your work

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

Stateu_super_nav_bgTop UniversitiesK-12 SchoolsCareersJob BoardFinancial AidStudy Guides ▼ ForumsBlog

Enter career name...
Search
Job Descriptions and Careers, Career and Job Opportunities, Career Search, and Career Choices and Profiles » Communication and the Arts
Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
designers computer client site

Search All U.S. Universities

Search
Education and Training: Varies—see profile

Salary Range: Median—$59,894 per year

Employment Outlook: Excellent

Definition and Nature of the Work
Web designers are responsible for creating the look and feel of World Wide Web pages for a client's Web site. This involves developing a graphic design that effectively communicates the ideas being promoted by the Web site. A web designer may take part in the initial planning of a Web site, meeting with the client to discuss ideas for the layout and organization of the site, the types of colors or images to use (photos, illustrations, videos, etc.), and other matters concerning overall graphic design. Sometimes a web producer has already developed a basic concept for the web page. In this case it is the web designer's task to create a design that matches the producer's ideas.

Web designer with green laptop
Once the basic concept is agreed upon, the web designer must collect the text documents and images that will appear on the page and convert them into a form in which they can be viewed. This requires a mastery of HTML (hypertext markup language), the computer language used to create web pages. The designer must also have knowledge of the most current HTML extensions—programs that make it possible to add special features to web pages such as animations and interactive surveys. Because a Web site may incorporate a variety of different functions, including clickable e-mail contacts or the ability to download files to a computer, the designer must have a working knowledge of FTP (file transfer protocol) and other programs that enable these functions to work.

Web designers must have an understanding of software functionality as well as graphic design skills to create successful Web pages.
Part of the web designer's task is to create pages that can be used on any type of server (a central computer in a network that stores files and provides these files to individual computers) and viewed with any type of browser (the software that enables people to access the World Wide Web). To do this, a web designer must be familiar with issues of browser/server compatibility, including which browsers and servers work well together and which ones do not. In addition, the designer must know computer languages such as Javascript, which can be used to create web pages that are compatible with a wide range of hardware and software.

Because web designers work with a client or web producer to develop and refine ideas, they must have strong verbal and visual communications skills. Designers should be able to listen closely to the client and create pages that reflect what the client is looking for. They also need to be flexible because they may be called upon to change their designs. Since Web sites are constantly updated to remain current, a designer has to be able to work well under the pressure of tight deadlines and changing demands.

Education and Training Requirements
Web designers typically have a background in fine arts, graphic design, or publishing combined with college courses in computer science and hands-on computer experience. A web designer may have a four-year college degree, a two-year associate's degree, or perhaps no advanced schooling at all. Many web designers teach themselves HTML and acquire other necessary computer skills on their own.

All designers must have training in computer graphics packages such as Dreamweaver, Photoshop, Adobe Illustrator, and Paint Shop Pro as well as knowledge of Flash, XML-based web applications and programming, XHTML programming, and other web development languages and technologies. The designer should also be comfortable working with a variety of operating systems such as Windows, Macintosh, and Unix. Since computer technology changes rapidly, web designers must constantly stay abreast of new developments in graphics software packages as well as those in the World Wide Web and related technologies.

The HTML Writers Guild offers web training and a certification program. There are four web study certification levels offered: Web Technologies, Web Programming, Web Graphics and Multimedia, and Web Business. Students must pass the web study courses before obtaining certification.

Getting the Job
As more companies develop their own Web sites, web designer openings can be found in classified ads in local newspapers, magazines, and on the Internet itself. Quite often, web designers begin their careers as graphic designers or layout artists for advertising firms or publishing companies. After learning the appropriate computer skills, they can transfer their artistic experience to the online world.

Prospective web designers should put together a portfolio of their work to show to potential employers. Many web designers are freelancers who sell their services to clients on a consulting or contractual basis. Self-employed web designers often establish a personal page on the World Wide Web that showcases their design skills for potential customers.

Advancement Possibilities and Employment Outlook
There are several different career paths available in the field of web design. The entry-level position of assistant designer involves designing certain elements of a web page or Web site. Project managers are in charge of the design or redesign of entire Web sites. The project manager may work with freelance artists and writers who supply materials to be incorporated into the Web site. Design directors oversee the work of a number of web designers, reviewing and correcting it and making suggestions to improve the design. A design director is usually the person who meets most often with the client to discuss ideas and make sure a project meets the client's expectations.

The World Wide Web and its related businesses are growing at an astounding rate, so the employment outlook for web designers is excellent through 2014.

Working Conditions
Web designers usually work in a modern office environment. Much of the work requires long hours of solitary effort, although designers must also meet with clients and supervisors to discuss projects in progress. Freelance web designers work mainly out of a home office, but they may be asked to perform some work at the client's place of business. Web design takes place in a fast-paced, creative atmosphere in which one must constantly develop new ideas and respond quickly to changing needs. This may involve working long and irregular hours to meet tight deadlines or make last-minute changes to an existing design.

Where to Go for More Information
HTML Writers Guild
119 E. Union St., Ste. F
Pasadena, CA 91103
(626) 449-3709
http://www.hwg.org/

Web Developers Association of America
221 Liberty St.
New York, NY 10281
http://www.wdaa.org/

Earnings and Benefits
The Bureau of Labor Statistics reports the salary for web designers ranges from $51,750 to $74,520 per year. The median annual salary is $59,894. Project managers and assistant design directors make slightly more, while design directors can earn up to $80,000 per year. A college student engaged in web design might charge anywhere from $25 to $50 per hour, while an experienced professional freelance designer can earn significantly more.

Writers and Editors Job Description, Career as a Writers and Editors, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job [next][back] Translator or Interpreter Job Description, Career as a Translator or Interpreter, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Citing this material

Please include a link to this page if you have found this material useful for research or writing a related article. Content on this website is from high-quality, licensed material originally published in print form. You can always be sure you're reading unbiased, factual, and accurate information.

Highlight the text below, right-click, and select “copy”. Paste the link into your website, email, or any other HTML document.


Web Designer Job Description, Career as a Web Designer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job
Tweet
User Comments

Name

Email

Your email address will be altered so spam harvesting bots can't read it easily.
Hide my email completely instead?
Body

Cancel or Save changes
Vote down Vote up
over 4 years ago
Seo Melbourne
This is a good post. This post give truly quality information.I'm definitely going to look into it.Really very useful tips are provided here.thank you so much.Keep up the good works.
Seo Melbourne
Vote down Vote up
almost 5 years ago
urunmania
Thank you very much for sharing it helped http://www.urunmania.com
Vote down Vote up
about 5 years ago
latina123
idk why write them nasty things wen this is a informational site , get a life ppl....
Vote down Vote up
over 6 years ago
justice
website design is my passion
Vote down Vote up
almost 7 years ago
The Guy
This page was very helpful and organized
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
over 5 years ago
Pretty_Gelly
Yall so dang nasty
Vote down Vote up
about 6 years ago
katie
i cant wait to become a web designer!!! its going to be a ton of fun i can already see it..





Not.
Vote down Vote up
almost 6 years ago
BBD
sex
Vote down Vote up
about 6 years ago
John Smith
ILIKESEX!!!!!!!!!!!!!!!!!!!!!!!!
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
almost 7 years ago
kalpana
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 6 years ago
Ravi Chandra
It is very hepful for shaping my carreer
Vote down Vote up
about 6 years ago
michelle
This helped me out alot thanks
Vote down Vote up
almost 7 years ago
dfdasdf
tjofjdkgjflkgjflkdjglkrjekljklfdjgklfjdklsgjfkldjgklfjdsklgjfdklgjklfjekgljeskrjigjiorfjgiojdfisg;oio;jfiod;sjfiog;jeiogjiofdjgiojfdiogjiofdjgoifdjiosgjfiod;jgiofdjigjfidjgdios;jgio;djgi;erjio;gjrioegjiod;gjodfjgiofdjigofjdiogjiofdjgiofdjiogjfidojgoifdsjiogjfid;sgjif;j;jdgilojiesjriogjiodrjgiorjeig;jdf;gjfdks;jgklfdjklgjkldfjglkfdjlkgjreiojeiotnvu oi rtnjoireniuwtovernouitpvutoireentvueoiputreptuiortnuhuierreiojriethjregujuoiuernoyevuiroehiueroiajtioueujiogrejngviorejigorjeiojgiorejigoeiogjnoirejngiorejmoigjrmeogjiorejgiorejgiorejio;gsajgoirejgoeijgioej;htrhygyghtha3qkufgy;ppppppppppppppppppppazqswxxdecfrvjhertly5v;rtimophvtirpmgklfdkgl;fkdsl;gfkjdlgjfdkl'gk'f;ldklg;fdsjglk;fjkdsljfdklgjklfdsjgklfdjglkfjdsgkljfdlk;gjfdkl;gjlkfd;jglkfd;jlgk;fjdlks;gjfldk;gjklfd;jgkl;dfjgkl;fdjlkg;jfdkl;gjklfd;jgklfd;sjkglf;djsklg;jdgkldjgklfdjlk;gjflkdjgklfd;jgfld;gjfklds;gjkfl;dsgjfd;lsjgklf;dsjgklfdsjglkfdjglkfdjgklfdjgkldfjgklfdjglk;fdsjglk;fdjglk;fdjglk;fdjgl;dfsjgklfd;jgklf;djg;lfjgkf;djg;kljfdlk;gjfdgk;l;urewiquriewquriewirewuqipreuwiruewipruiewuripewurpewuqripewquripwquirpewuriewuqipruiewpuripewuqripewuripewuripwquripewuqiruewijrf4kjfnrje4jdsknfkjehwjrkewnhjfkhewlrwehiuprjewkljfemjnewiajhfehjfiujhwufivshyfiudufidsfjdisfjidsjfijsdifsdjfpjdsifjidsjfidsjfidsjifdjsifjdsifjdsjfidpsafipdsjfidsjfisjfisdjfipdsjfidsijfidsjfidsjfipdsjafidjfipdjifpjdsifjiidpsdjfsdijfidsjfidpsjfispajfdipajfidspjfisadjfjiajfisadjfidisafjdjfisdjfisafjasfjdspajfisadjfidsjfidsjafidsjafidsfpppadsfffffffffffffffffffffffffffffjidsjfidsjfisdjaifsdjifsdjaifdjsifjsifjisfjidsjfidjsifpjsipfdjsaipfjidspjfidpsjaisdjfijfidsjddddddd;kjfadshjfkhdsjkfhdsjkhfkjsdhfkjhdskjafhsdhfjkdshjkfdshkjlhkdljs; jhfkdsahfdslhfjkshjfkdsahjkfhdsjkfahjkdsahjkfdsahkjfhjkdslhfdkjslhfjkldshfdkdshafdskjlfhdksjhfkjsdhfjdshfshajfhdsjfhdwsfhjkhauirwehuifrhwriufhuifhuihuhfsdhfjkdsfhjkdhfkjhdsfhdskjfkhhjkdhjkhjkdsfhjksdfkhjdsfhjkdsfkhjsdfkjhsdfkhjfsdkhjdsfjkdfskhjdsfhjkfdshkjdsfhkjdfshkjldfhkljfdshkjfdshkjfdhjkhkjlfdfdsfkdskfldsl;fkds;lfkdl;slkfldskfl;dkslfjdlksjfkldsjklfjdkljfkldsjklfjsdlkjflkdsjflkdsjflkjdslkjflkds;jflkdsjlkfjsdlafjlkdsjflkdsjlkfjdslkfjldksjflkdsjflkdsjflkjsdlkfjdskljfkldsjfkldsjfklsdjflkdsjlkfjdklsjfkldjsjlkfjsfjdslkafjdsjflkdsajfsdjfdsjfdklsjflkdsjlkfjsal;kfjdslkkjjjjjjjjjjjjjjjjjkkkkkkkkllllllll;;;;;;;;;;;yyyyyyyyuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiibhjjbhbkhjbhkjbbhjjbhkbhkjjbhbhkjhkjlhkjhlhkjlkjhlkhjlkjhlkhjlhkljkhjlhkjkhjlhjklkhjkhjlkhjlhjklkjhlhjkhjkjhkjjhhjhjhjhhhhhhhhhhhhjhjkhjklhjklkhljhkljhljkhjklhkjhjkhkjkhjkhjkhjkhjljhkhkjhkjhjkkjhhjkhjkhjkjhkjhkhjkhkjhkjhkjlkhjkhjlhjklkhjlhjklhjkhjkkhjkhjhjkhkjkhjhjkhkjkhjkjhkjhkhjlkhjlhkjhkjfdsdfsdfsfdsafdsfsdffdsdsfsdfdfdfssaddsfdssdasdfdsasaddssdsdfsdsdfsdfsdsdsdfsdsdsddassdfsfdsfdsfffdsafdsafdsafdsfdsafdsdfdsfsdfdsafdsfdsfdsfdsfdsfsdsffsdafdsfdsafdsafdsafdsafdsafdsafdsafdfsafsdafdsafdsfsdfdsfdsdsdfsdsadsfdfssdfsdfdsfdsafsadfdsadsafdasfsdfdfsdsfadsfdsfdsfdedfsdfsadfsdfdsfdfsdfsdsdsdfsssssssssssssssssssssssssssssdfdfdsfdsafdssfdsfdsfsdfdsfdsfdsafdsfdfddfdfssadsdfdsfsdfdsfdfsssdfsdfsadfsdfdfsasdfsdfdsafsdfsdfdfsdsdfdsfdfdfsdsafsdfdfsasadadsfdafsdasadsasdsadasdsadfsdfsdfsdfsdfsdfdfssdfdsfadfsdfsafdasfdsfdfdsdfssdfsdfsdfadsfdfsdfsadsfdfssdfsdfsdfsdfsdffsdsdfsdfdsfsdfsdfdsfdfsdsfasdfsdafsdfsdfsadffdsdfsdsfdsfsdfadfsdfsdsfadsdfssddsdfsdfssfdsafdsafdsafdsafdsfdsafdsfdsafdsfdsafdsafdsfdsfdsafsdafdsfdfdsfdssdfssdasdfsadfdsasdafsdasddassaddsadsafsadfsdfadfsasadfsdfdfssdfsdfsdfsdfsdfdfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfffefsddsfsdfsadfsadfsdafsadfsadfdsfsdfasadfsadfsdfsdfsfdsfdsfdsfdsfdsfdssfdsasfdsaassssssssssssssssssssdddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Vote down Vote up
over 6 years ago
KARTHIKI
hi i'm trying to start new company
how could i get clients .... is there there any network to connect the clients
Vote down Vote up
almost 6 years ago
ben
i like pooping
Vote down Vote up
almost 6 years ago
Julian
This has caught my interest. I am definitely going to be looking into this more. I don't know that much about computer technology but it's about time. This career looks excellent. Thanks.
Vote down Vote up
over 6 years ago
chrisb chickin
i have experience but im not creatin web pages id rather break them peace!!!!!!!!!!!
Vote down Vote up
over 6 years ago
pratu
how does the salary range in freshar and experince in web design/web devlopement
Vote down Vote up
over 5 years ago
samantha
I LOVE COW PENIS AND SMALL WHITE PENIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8======================D oh yea
Vote down Vote up
over 6 years ago
shital
good job...i m web deigner..

Vote down Vote up
over 6 years ago
Hawaii Web Designer
Hawaii Web Designer
Vote down Vote up
over 6 years ago
shirley
wow1 now i want to be an web designer now. I am not talking about the money!
Vote down Vote up
over 5 years ago
john paz
suck my bmw you maggit penis sucker queer bates penis munchers
Vote down Vote up
over 6 years ago
jitender tanwar
Good Job
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
almost 5 years ago
Jessica Higgins
I am A 11th grader and I might like to join into this line of work but is there any fun included I want to enjoy my work?
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
almost 5 years ago
phil
i think that mexicans are ducking gay and should all die, duck you and and duck mexico you Ducking spics!!!
Vote down Vote up
about 5 years ago
ABC
Some of you people are nasty and need to stop. Nobody cares. Thanks to some of you I cant use this site for school. It may not harm you but you harm other peole and its wrong so STOP.
Vote down Vote up
about 5 years ago
johnugs
interesting blog. It would be great if you can provide more details about it. Thank you...


Web Design Packages
Vote down Vote up
about 5 years ago
ms.swapi
wana job in music arrenger like nuendo 4 & cuebase 5 operator plz if have career chance for me contact me on:9222367701 my self ms swapi from india my email u required my resume :log.on2011@gmail.com
Vote down Vote up
about 5 years ago
Nika Reagans
I love the imformation yiu have given me it's helped me so much with me working on my career in Graphic Design
Vote down Vote up
about 5 years ago
kawshick sarkar
Thanks,

This is essential for the persons they want to go for web desiging career

Vote down Vote up
over 5 years ago
sherwin
http://www.sherwinhermogenes.com/
Vote down Vote up
over 5 years ago
prince
thanks to u very much for given information for web career. by bangladesh
Vote down Vote up
over 5 years ago
sardar harale
Dear sir
I am sardar harale my qualification B.A.F.Y and my web designer course completely : HTML,XHTML,DHTML,CSS,XML,JAVASCRIPT,ASP,
PHP,PROJECT
Complete for my course
I any company no exprience
I your company this for job web designer
Bio-Data
Age:20
Birthdate:31/7/1992
Mob:8600416041
Dist:kolhapur
Conutry:india
Parmant address: at post nigave dumala tal karveer Dist-kolhapur
Vote down Vote up
over 5 years ago
oh yeah
8==========D~~~~~
Vote down Vote up
almost 6 years ago
luke
thanks for the incite on everything. I am starting my bachelors of science and web design on the 2nd. My wife was wanting to know more about it. you explained everything she wanted to know.
Vote down Vote up
about 6 years ago
Harley
i think that this website has helped me for my school project on web disgning and i thank the creator for making this for my use and every one eleses that come to look up web design
Vote down Vote up
over 5 years ago
lnjkbjk
poop
Vote down Vote up
over 6 years ago
tarun
sir, i want to earn from web building,sir i have complete knowledge about codings and java script by which i made a website named as rockingalaxy.com ,sir i want to go more,i am also earnig from google adsense and another ad providers but i want more.,please guide me so i earn more from web building as a job
Vote down Vote up
about 6 years ago
nathan
sup?
Vote down Vote up
almost 7 years ago
S.AlwinRaja
perfect your information.
Vote down Vote up
about 8 years ago
Hardware Designer Job Description
Is this job open for everyone.
Hardware Designer Job Description
Vote down Vote up
over 6 years ago
Subramaniam Surenthiran
Sir,



I am studying hardware course. I do not have experince in this field.



Please Sir, help me. I am wating for favourable answer from this company.



Thank you



S. Surenthiran
Vote down Vote up
over 5 years ago
naren
I need this all website project and E-commerce site to processing in my company so plz contact 9171303091.my site www.iconinfos.com
Vote down Vote up
about 6 years ago
Damien Kingi
Exceelent Services for a WEB Designer.,/GOD Bless!!!.,/D'Angelo/.,
Vote down Vote up
about 6 years ago
freind
i just going to complete my web design course i would like to open an office for myself. so how do i get clients?
Vote down Vote up
about 6 years ago
hari
how does the salary differs from freshers web designers to experienced.
Vote down Vote up
about 6 years ago
Samantha
I love black penis
Vote down Vote up
over 2 years ago
Hacker
This make me feel good xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Vote down Vote up

9 months ago

oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oofoof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof

Vote down Vote up

9 months ago

oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oof oo