SPH 215: GIS and Public Health
Professor Peter James
The following is an abridged version of the course syllabus. A full
course syllabus can be found on the Canvas class
website.
Lecture and Lab
Lecture: Mondays 3:50p-5:20p
Lab: Wednesdays 3:50p-5:20p
Lecture and Lab are held in person.
Teaching Staff
Instructor Dr. Peter James
Associate Professor in the Department of Public Health Sciences
Contact: pjames.at.health.ucdavis.edu
Office: Medical Sciences 1C Room 138
Office hours: By appointment over Zoom. Please email any time to set
up a meeting!
Teaching Assistant Sidney Parel
Contact: skparel.at.ucdavis.edu
Office hours: By appointment over Zoom. Please email any time to set
up a meeting!
Course Objectives
In this course, students will gain
- A theoretical understanding of the role of space and place in
community-level phenomenon
- An understanding of what kinds of spatial data are available and
where to find them
- Proficiency in spatial analytic tools (R) to
- Manage and process spatial data
- Descriptively examine spatial data
- Run spatial models for statistical inference
- An understanding of how these methods are employed in community
research
Required Readings
There are also a set of weekly readings listed in the syllabus that
provide applications of the methods. Required reading material is
composed of journal articles from peer-reviewed journals.
Handouts
I will provide lecture handouts on Canvas in advance of the assigned
class.
Additional Readings
The other major course material are lab guides, which will be
released at the beginning of Thursday’s lecture on the class website.
Many of the R lab guides will closely follow two textbooks. These
textbooks are not required, but are great resources.
The first textbook provides the foundation for using R
(RDS) Wickham, Hadley & Garret Grolemund. (2017). R for Data
Science. Sebastopol, CA: O’Reilly Media. The textbook is free online at:
http://r4ds.had.co.nz/introduction.html
The second textbook covers spatial data in R
(GWR) Lovelace, Robin, Jakub Nowosad & Jannes Muenchow.
Geocomputation with R. CRC Press. The textbook is free online at: https://geocompr.robinlovelace.net/
Course Software
R is the only statistical language used in this course, as it has
become an increasingly popular program for data analysis in the social
sciences. We will use RStudio as a user friendly interface for R. R is
freeware and you can download it on your personal laptop and desktop
computers (along with RStudio, which is a user friendly interface for
R). Note that although the course does not require students to have
experience with R, this class does not devote too much time introducing
students to the program. In other words, this is a not an introduction
to R programming. The lab guides will provide as much detail as possible
to execute tasks and functions, but you will likely run into tasks that
will require you to go beyond the guides. My suggestion is to (1) look
up RDS or GWR as they are excellent resources and (2) if (1) fails,
search online. As such, you are expected to do as much independent
learning of the software as I teach in the labs.
Course Requirements
Homework Assignments (4 x 10%: 40%):
Students will be expected to submit their completed GIS lab
assignments. These assignments will be posted Wednesday mornings and due
the following Monday before class. Each assignment will be 10% of the
final grade, with four lab assignments making up a total of 40% of the
final grade.
Mid-Term Exam (20%):
Students will be given a mid-term based on the use of GIS for public
health. This mid-term will be multiple choice and short answer, and all
questions will be related to coursework, lectures, and readings. The
mid-term will be open book and will posted on Wednesday and due on
Friday. The mid-term will be 20% of the final grade.
Final Project (20% Final Paper + 10% Final Presentation):
The course will end with a final project where the students will be
able to apply the skills they have learned in the course to a project
that involves either creating a map relevant to public health (e.g., a
choropleth map of asthma rates across counties in California) or
conducting an analysis with spatial data (e.g., examining the
correlation between air pollution levels and cardiovascular disease
rates across counties in California). All projects will have to contain
at least one map. Each student will propose their own project midway
through the course, and they will have to identify datasets (public or
privately-owned) to visualize in their project. Students will prepare a
final paper (6-8 pages double-spaced) that will be in the format of a
manuscript. This manuscript could be a preliminary analysis of secondary
data, a preliminary analysis of primary data, or a commentary / public
opinion piece translating research to the public. The final paper will
be 30% of the final grade. Participants will also present on their topic
during the last week of class. The final presentation will be 10% of the
final grade.
Class Participation (10%):
All students are expected to be active participants in class,
speaking and contributing to class discussion on most days. On Mondays,
during the second half of class there will be student-led discussions of
readings. Each student will participate in leading a group discussion on
the reading assignments. Students will sign up to lead the classes in
groups of 1-4 and will be expected to facilitate class discussion. These
discussions can involve presentations, or other interactive approaches
to involve students in discussion of the paper (I’d even accept
interpretive dance). Class discussions are an important teaching
component of the course. Overall class participation will make up 10% of
the final grade.
Course Agenda
The schedule is subject to revision throughout the quarter. Please
see the full syllabus for a more detailed version of the agenda.
LS0tCnRpdGxlOiAiU3lsbGFidXMiCm91dHB1dDogaHRtbF9kb2N1bWVudAotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyMjIFNQSCAyMTU6IEdJUyBhbmQgUHVibGljIEhlYWx0aAojIyMgUHJvZmVzc29yIFBldGVyIEphbWVzCgpcCgpUaGUgZm9sbG93aW5nIGlzIGFuIGFicmlkZ2VkIHZlcnNpb24gb2YgdGhlIGNvdXJzZSBzeWxsYWJ1cy4gQSBmdWxsIGNvdXJzZSBzeWxsYWJ1cyBjYW4gYmUgZm91bmQgb24gdGhlIFtDYW52YXMgY2xhc3Mgd2Vic2l0ZV0oaHR0cHM6Ly9jYW52YXMudWNkYXZpcy5lZHUvY291cnNlcy8xMDY0MjI3KS4KCiMgTGVjdHVyZSBhbmQgTGFiCgoqKkxlY3R1cmU6KiogTW9uZGF5cyAzOjUwcC01OjIwcAoKKipMYWI6KiogV2VkbmVzZGF5cyAzOjUwcC01OjIwcAoKTGVjdHVyZSBhbmQgTGFiIGFyZSBoZWxkIGluIHBlcnNvbi4KClwKCiMgVGVhY2hpbmcgU3RhZmYKCioqSW5zdHJ1Y3RvcioqCkRyLiBQZXRlciBKYW1lcwoKQXNzb2NpYXRlIFByb2Zlc3NvciBpbiB0aGUgRGVwYXJ0bWVudCBvZiBQdWJsaWMgSGVhbHRoIFNjaWVuY2VzCgpDb250YWN0OiBwamFtZXMuYXQuaGVhbHRoLnVjZGF2aXMuZWR1CgpPZmZpY2U6IE1lZGljYWwgU2NpZW5jZXMgMUMgUm9vbSAxMzgKCk9mZmljZSBob3VyczogQnkgYXBwb2ludG1lbnQgb3ZlciBab29tLiBQbGVhc2UgZW1haWwgYW55IHRpbWUgdG8gc2V0IHVwIGEgbWVldGluZyEKClwKCioqVGVhY2hpbmcgQXNzaXN0YW50KioKU2lkbmV5IFBhcmVsCgpDb250YWN0OiBza3BhcmVsLmF0LnVjZGF2aXMuZWR1CgpPZmZpY2UgaG91cnM6IEJ5IGFwcG9pbnRtZW50IG92ZXIgWm9vbS4gUGxlYXNlIGVtYWlsIGFueSB0aW1lIHRvIHNldCB1cCBhIG1lZXRpbmchCgpcCgojIENvdXJzZSBPYmplY3RpdmVzCkluIHRoaXMgY291cnNlLCBzdHVkZW50cyB3aWxsIGdhaW4KCi0gQSB0aGVvcmV0aWNhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByb2xlIG9mIHNwYWNlIGFuZCBwbGFjZSBpbiBjb21tdW5pdHktbGV2ZWwgcGhlbm9tZW5vbgotIEFuIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBraW5kcyBvZiBzcGF0aWFsIGRhdGEgYXJlIGF2YWlsYWJsZSBhbmQgd2hlcmUgdG8gZmluZCB0aGVtCi0gUHJvZmljaWVuY3kgaW4gc3BhdGlhbCBhbmFseXRpYyB0b29scyAoUikgdG8KICAtIE1hbmFnZSBhbmQgcHJvY2VzcyBzcGF0aWFsIGRhdGEKICAtIERlc2NyaXB0aXZlbHkgZXhhbWluZSBzcGF0aWFsIGRhdGEKICAtIFJ1biBzcGF0aWFsIG1vZGVscyBmb3Igc3RhdGlzdGljYWwgaW5mZXJlbmNlCi0gQW4gdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgZW1wbG95ZWQgaW4gY29tbXVuaXR5IHJlc2VhcmNoCgpcCgojIENvdXJzZSBGb3JtYXQKTGVjdHVyZSBzZXNzaW9ucyB3aWxsIGFkaGVyZSB0byB0aGUgZm9sbG93aW5nIGZvcm1hdDogCgotIDQ1IG1pbnV0ZSBvciBzbyBsZWN0dXJlIC8gZGlzY3Vzc2lvbiBhYm91dCB0aGF0IHdlZWsncyB0b3BpYyAtLSBGZWVsIGZyZWUgdG8gaW50ZXJydXB0IG1lIHRvIGFzayBxdWVzdGlvbnMhIAotIFNob3J0IGJyZWFrCi0gNDAgbWludXRlIG9yIHNvIHN0dWRlbnQtbGVkIGRpc2N1c3Npb24gb2YgdGhlIHdlZWsncyByZWFkaW5nLgoKXAoKTGFiIFNlc3Npb25zIHdpbGwgYWRoZXJlIHRvIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgoKLSBBIGhhbmRzIG9uIGxhYiB3aGVyZSB3ZSBhcHBseSB0aGUgbWV0aG9kcyBsZWFybmVkIGluIGxlY3R1cmUvZGlzY3Vzc2lvbiB1c2luZyByZWFsIGRhdGEgaW4gUi4gCgpcCgpBbGwgc3R1ZGVudHMgYXJlIGV4cGVjdGVkIHRvIGFjdGl2ZWx5IHBhcnRpY2lwYXRlIGluIGFsbCBjb21wb25lbnRzIG9mIHRoZSBjb3Vyc2UsIHdoaWNoIG1lYW5zIG5vdCBvbmx5IGJlaW5nIHByZXNlbnQsIGJ1dCByZWFkaW5nIGFsbCBtYXRlcmlhbCBhbmQgZW5nYWdpbmcgaW4gY2xhc3MgZGlzY3Vzc2lvbnMuIAoKXAoKIyBSZXF1aXJlZCBSZWFkaW5ncwpUaGVyZSBhcmUgYWxzbyBhIHNldCBvZiB3ZWVrbHkgcmVhZGluZ3MgbGlzdGVkIGluIHRoZSBzeWxsYWJ1cyB0aGF0IHByb3ZpZGUgYXBwbGljYXRpb25zIG9mIHRoZSBtZXRob2RzLiBSZXF1aXJlZCByZWFkaW5nIG1hdGVyaWFsIGlzIGNvbXBvc2VkIG9mIGpvdXJuYWwgYXJ0aWNsZXMgZnJvbSBwZWVyLXJldmlld2VkIGpvdXJuYWxzLgoKXAoKIyBIYW5kb3V0cwpJIHdpbGwgcHJvdmlkZSBsZWN0dXJlIGhhbmRvdXRzIG9uIENhbnZhcyBpbiBhZHZhbmNlIG9mIHRoZSBhc3NpZ25lZCBjbGFzcy4KClwKCiMgQWRkaXRpb25hbCBSZWFkaW5ncwpUaGUgb3RoZXIgbWFqb3IgY291cnNlIG1hdGVyaWFsIGFyZSBsYWIgZ3VpZGVzLCB3aGljaCB3aWxsIGJlIHJlbGVhc2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgVGh1cnNkYXnigJlzIGxlY3R1cmUgb24gdGhlIGNsYXNzIHdlYnNpdGUuIE1hbnkgb2YgdGhlIFIgbGFiIGd1aWRlcyB3aWxsIGNsb3NlbHkgZm9sbG93IHR3byB0ZXh0Ym9va3MuIFRoZXNlIHRleHRib29rcyBhcmUgbm90IHJlcXVpcmVkLCBidXQgYXJlIGdyZWF0IHJlc291cmNlcy4KClRoZSBmaXJzdCB0ZXh0Ym9vayBwcm92aWRlcyB0aGUgZm91bmRhdGlvbiBmb3IgdXNpbmcgUgoKKFJEUykgV2lja2hhbSwgSGFkbGV5ICYgR2FycmV0IEdyb2xlbXVuZC4gKDIwMTcpLiBSIGZvciBEYXRhIFNjaWVuY2UuIFNlYmFzdG9wb2wsIENBOiBP4oCZUmVpbGx5IE1lZGlhLgpUaGUgdGV4dGJvb2sgaXMgZnJlZSBvbmxpbmUgYXQ6IGh0dHA6Ly9yNGRzLmhhZC5jby5uei9pbnRyb2R1Y3Rpb24uaHRtbAoKVGhlIHNlY29uZCB0ZXh0Ym9vayBjb3ZlcnMgc3BhdGlhbCBkYXRhIGluIFIKCihHV1IpIExvdmVsYWNlLCBSb2JpbiwgSmFrdWIgTm93b3NhZCAmIEphbm5lcyBNdWVuY2hvdy4gR2VvY29tcHV0YXRpb24gd2l0aCBSLiBDUkMgUHJlc3MuClRoZSB0ZXh0Ym9vayBpcyBmcmVlIG9ubGluZSBhdDogaHR0cHM6Ly9nZW9jb21wci5yb2JpbmxvdmVsYWNlLm5ldC8KClwKCiMgQ291cnNlIFNvZnR3YXJlClIgaXMgdGhlIG9ubHkgc3RhdGlzdGljYWwgbGFuZ3VhZ2UgdXNlZCBpbiB0aGlzIGNvdXJzZSwgYXMgaXQgaGFzIGJlY29tZSBhbiBpbmNyZWFzaW5nbHkgcG9wdWxhciBwcm9ncmFtIGZvciBkYXRhIGFuYWx5c2lzIGluIHRoZSBzb2NpYWwgc2NpZW5jZXMuIFdlIHdpbGwgdXNlIFJTdHVkaW8gYXMgYSB1c2VyIGZyaWVuZGx5IGludGVyZmFjZSBmb3IgUi4gUiBpcyBmcmVld2FyZSBhbmQgeW91IGNhbiBkb3dubG9hZCBpdCBvbiB5b3VyIHBlcnNvbmFsIGxhcHRvcCBhbmQgZGVza3RvcCBjb21wdXRlcnMgKGFsb25nIHdpdGggUlN0dWRpbywgd2hpY2ggaXMgYSB1c2VyIGZyaWVuZGx5IGludGVyZmFjZSBmb3IgUikuIE5vdGUgdGhhdCBhbHRob3VnaCB0aGUgY291cnNlIGRvZXMgbm90IHJlcXVpcmUgc3R1ZGVudHMgdG8gaGF2ZSBleHBlcmllbmNlIHdpdGggUiwgdGhpcyBjbGFzcyBkb2VzIG5vdCBkZXZvdGUgdG9vIG11Y2ggdGltZSBpbnRyb2R1Y2luZyBzdHVkZW50cyB0byB0aGUgcHJvZ3JhbS4gSW4gb3RoZXIgd29yZHMsIHRoaXMgaXMgYSBub3QgYW4gaW50cm9kdWN0aW9uIHRvIFIgcHJvZ3JhbW1pbmcuIFRoZSBsYWIgZ3VpZGVzIHdpbGwgcHJvdmlkZSBhcyBtdWNoIGRldGFpbCBhcyBwb3NzaWJsZSB0byBleGVjdXRlIHRhc2tzIGFuZCBmdW5jdGlvbnMsIGJ1dCB5b3Ugd2lsbCBsaWtlbHkgcnVuIGludG8gdGFza3MgdGhhdCB3aWxsIHJlcXVpcmUgeW91IHRvIGdvIGJleW9uZCB0aGUgZ3VpZGVzLiBNeSBzdWdnZXN0aW9uIGlzIHRvICgxKSBsb29rIHVwIFJEUyBvciBHV1IgYXMgdGhleSBhcmUgZXhjZWxsZW50IHJlc291cmNlcyBhbmQgKDIpIGlmICgxKSBmYWlscywgc2VhcmNoIG9ubGluZS4gQXMgc3VjaCwgeW91IGFyZSBleHBlY3RlZCB0byBkbyBhcyBtdWNoIGluZGVwZW5kZW50IGxlYXJuaW5nIG9mIHRoZSBzb2Z0d2FyZSBhcyBJIHRlYWNoIGluIHRoZSBsYWJzLgoKXAoKIyBDb3Vyc2UgUmVxdWlyZW1lbnRzCiAKXAogCiMjIEhvbWV3b3JrIEFzc2lnbm1lbnRzICg0IHggMTAlOiA0MCUpOgpTdHVkZW50cyB3aWxsIGJlIGV4cGVjdGVkIHRvIHN1Ym1pdCB0aGVpciBjb21wbGV0ZWQgR0lTIGxhYiBhc3NpZ25tZW50cy4gVGhlc2UgYXNzaWdubWVudHMgd2lsbCBiZSBwb3N0ZWQgV2VkbmVzZGF5IG1vcm5pbmdzIGFuZCBkdWUgdGhlIGZvbGxvd2luZyBNb25kYXkgYmVmb3JlIGNsYXNzLiBFYWNoIGFzc2lnbm1lbnQgd2lsbCBiZSAxMCUgb2YgdGhlIGZpbmFsIGdyYWRlLCB3aXRoIGZvdXIgbGFiIGFzc2lnbm1lbnRzIG1ha2luZyB1cCBhIHRvdGFsIG9mIDQwJSBvZiB0aGUgZmluYWwgZ3JhZGUuCgpcCgojIyBNaWQtVGVybSBFeGFtICgyMCUpOiAKU3R1ZGVudHMgd2lsbCBiZSBnaXZlbiBhIG1pZC10ZXJtIGJhc2VkIG9uIHRoZSB1c2Ugb2YgR0lTIGZvciBwdWJsaWMgaGVhbHRoLiBUaGlzIG1pZC10ZXJtIHdpbGwgYmUgbXVsdGlwbGUgY2hvaWNlIGFuZCBzaG9ydCBhbnN3ZXIsIGFuZCBhbGwgcXVlc3Rpb25zIHdpbGwgYmUgcmVsYXRlZCB0byBjb3Vyc2V3b3JrLCBsZWN0dXJlcywgYW5kIHJlYWRpbmdzLiBUaGUgbWlkLXRlcm0gd2lsbCBiZSBvcGVuIGJvb2sgYW5kIHdpbGwgcG9zdGVkIG9uIFdlZG5lc2RheSBhbmQgZHVlIG9uIEZyaWRheS4gVGhlIG1pZC10ZXJtIHdpbGwgYmUgMjAlIG9mIHRoZSBmaW5hbCBncmFkZS4KClwKCiMjIEZpbmFsIFByb2plY3QgKDIwJSBGaW5hbCBQYXBlciArIDEwJSBGaW5hbCBQcmVzZW50YXRpb24pOgpUaGUgY291cnNlIHdpbGwgZW5kIHdpdGggYSBmaW5hbCBwcm9qZWN0IHdoZXJlIHRoZSBzdHVkZW50cyB3aWxsIGJlIGFibGUgdG8gYXBwbHkgdGhlIHNraWxscyB0aGV5IGhhdmUgbGVhcm5lZCBpbiB0aGUgY291cnNlIHRvIGEgcHJvamVjdCB0aGF0IGludm9sdmVzIGVpdGhlciBjcmVhdGluZyBhIG1hcCByZWxldmFudCB0byBwdWJsaWMgaGVhbHRoIChlLmcuLCBhIGNob3JvcGxldGggbWFwIG9mIGFzdGhtYSByYXRlcyBhY3Jvc3MgY291bnRpZXMgaW4gQ2FsaWZvcm5pYSkgb3IgY29uZHVjdGluZyBhbiBhbmFseXNpcyB3aXRoIHNwYXRpYWwgZGF0YSAoZS5nLiwgZXhhbWluaW5nIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGFpciBwb2xsdXRpb24gbGV2ZWxzIGFuZCBjYXJkaW92YXNjdWxhciBkaXNlYXNlIHJhdGVzIGFjcm9zcyBjb3VudGllcyBpbiBDYWxpZm9ybmlhKS4gQWxsIHByb2plY3RzIHdpbGwgaGF2ZSB0byBjb250YWluIGF0IGxlYXN0IG9uZSBtYXAuIEVhY2ggc3R1ZGVudCB3aWxsIHByb3Bvc2UgdGhlaXIgb3duIHByb2plY3QgbWlkd2F5IHRocm91Z2ggdGhlIGNvdXJzZSwgYW5kIHRoZXkgd2lsbCBoYXZlIHRvIGlkZW50aWZ5IGRhdGFzZXRzIChwdWJsaWMgb3IgcHJpdmF0ZWx5LW93bmVkKSB0byB2aXN1YWxpemUgaW4gdGhlaXIgcHJvamVjdC4gU3R1ZGVudHMgd2lsbCBwcmVwYXJlIGEgZmluYWwgcGFwZXIgKDYtOCBwYWdlcyBkb3VibGUtc3BhY2VkKSB0aGF0IHdpbGwgYmUgaW4gdGhlIGZvcm1hdCBvZiBhIG1hbnVzY3JpcHQuIFRoaXMgbWFudXNjcmlwdCBjb3VsZCBiZSBhIHByZWxpbWluYXJ5IGFuYWx5c2lzIG9mIHNlY29uZGFyeSBkYXRhLCBhIHByZWxpbWluYXJ5IGFuYWx5c2lzIG9mIHByaW1hcnkgZGF0YSwgb3IgYSBjb21tZW50YXJ5IC8gcHVibGljIG9waW5pb24gcGllY2UgdHJhbnNsYXRpbmcgcmVzZWFyY2ggdG8gdGhlIHB1YmxpYy4gVGhlIGZpbmFsIHBhcGVyIHdpbGwgYmUgMzAlIG9mIHRoZSBmaW5hbCBncmFkZS4gUGFydGljaXBhbnRzIHdpbGwgYWxzbyBwcmVzZW50IG9uIHRoZWlyIHRvcGljIGR1cmluZyB0aGUgbGFzdCB3ZWVrIG9mIGNsYXNzLiBUaGUgZmluYWwgcHJlc2VudGF0aW9uIHdpbGwgYmUgMTAlIG9mIHRoZSBmaW5hbCBncmFkZS4KClwKCiMjIENsYXNzIFBhcnRpY2lwYXRpb24gKDEwJSk6CkFsbCBzdHVkZW50cyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWN0aXZlIHBhcnRpY2lwYW50cyBpbiBjbGFzcywgc3BlYWtpbmcgYW5kIGNvbnRyaWJ1dGluZyB0byBjbGFzcyBkaXNjdXNzaW9uIG9uIG1vc3QgZGF5cy4gT24gTW9uZGF5cywgZHVyaW5nIHRoZSBzZWNvbmQgaGFsZiBvZiBjbGFzcyB0aGVyZSB3aWxsIGJlIHN0dWRlbnQtbGVkIGRpc2N1c3Npb25zIG9mIHJlYWRpbmdzLiBFYWNoIHN0dWRlbnQgd2lsbCBwYXJ0aWNpcGF0ZSBpbiBsZWFkaW5nIGEgZ3JvdXAgZGlzY3Vzc2lvbiBvbiB0aGUgcmVhZGluZyBhc3NpZ25tZW50cy4gU3R1ZGVudHMgd2lsbCBzaWduIHVwIHRvIGxlYWQgdGhlIGNsYXNzZXMgaW4gZ3JvdXBzIG9mIDEtNCBhbmQgd2lsbCBiZSBleHBlY3RlZCB0byBmYWNpbGl0YXRlIGNsYXNzIGRpc2N1c3Npb24uIFRoZXNlIGRpc2N1c3Npb25zIGNhbiBpbnZvbHZlIHByZXNlbnRhdGlvbnMsIG9yIG90aGVyIGludGVyYWN0aXZlIGFwcHJvYWNoZXMgdG8gaW52b2x2ZSBzdHVkZW50cyBpbiBkaXNjdXNzaW9uIG9mIHRoZSBwYXBlciAoSeKAmWQgZXZlbiBhY2NlcHQgaW50ZXJwcmV0aXZlIGRhbmNlKS4gQ2xhc3MgZGlzY3Vzc2lvbnMgYXJlIGFuIGltcG9ydGFudCB0ZWFjaGluZyBjb21wb25lbnQgb2YgdGhlIGNvdXJzZS4gT3ZlcmFsbCBjbGFzcyBwYXJ0aWNpcGF0aW9uIHdpbGwgbWFrZSB1cCAxMCUgb2YgdGhlIGZpbmFsIGdyYWRlLgoKXAoKIyBDb3Vyc2UgQWdlbmRhCgpUaGUgc2NoZWR1bGUgaXMgc3ViamVjdCB0byByZXZpc2lvbiB0aHJvdWdob3V0IHRoZSBxdWFydGVyLiBQbGVhc2Ugc2VlIHRoZSBmdWxsIHN5bGxhYnVzIGZvciBhIG1vcmUgZGV0YWlsZWQgdmVyc2lvbiBvZiB0aGUgYWdlbmRhLgo=