library(tidyverse)
This analysis explores the data used by P. Aldhous in this
Buzzfeed article. The article claims that one key factor in the US’s
leadership in science and technology is immigration because while most
living Nobel laureates in the sciences are based in the US, many of them
were born in other countries.
The Dataset
🚧 You’ll need to get the
nobel dataset, install it in a data
folder, and load
it.
🚧 Because there is no formal webpage for this dataset, study the
dataset and give a short summary here on what it contains. How many
observations and how many variables are in the dataset? What does each
observation represent? Use inline code to answer this question. Please
include this data dictionary.
id
: ID number
firstname
: First name of laureate
surname
: Surname
year
: Year prize won
category
: Category of prize
affiliation
: Affiliation of laureate
city
: City of laureate in prize year
country
: Country of laureate in prize year
born_date
: Birth date of laureate
died_date
: Death date of laureate
gender
: Gender of laureate
born_city
: City where laureate was born
born_country
: Country where laureate was born
born_country_code
: Code of country where laureate was
born
died_city
: City where laureate died
died_country
: Country where laureate died
died_country_code
: Code of country where laureate
died
overall_motivation
: Overall motivation for
recognition
share
: Number of other winners award is shared
with
motivation
: Motivation for recognition
In a few cases the name of the city/country changed after laureate
was given (e.g. in 1975 Bosnia and Herzegovina was part of the Socialist
Federative Republic of Yugoslavia). In these cases the variables below
reflect a different name than their counterparts without the suffix
_original
.
born_country_original
: Original country where laureate
was born
born_city_original
: Original city where laureate was
born
died_country_original
: Original country where laureate
died
died_city_original
: Original city where laureate
died
city_original
: Original city where laureate lived at
the time of winning the award
country_original
: Original country where laureate lived
at the time of winning the award
Cleansing the Data
🚧 Create a new data frame called nobel_living
that
includes only:
- laureates for whom country is available (i.e., it isn’t
NA
– remember to use the is.na()
function)
- laureates who are people as opposed to organizations (organizations
are denoted with
"org"
as their gender)
- laureates who are still alive (their died_date is
NA
)
Confirm that once you have filtered for these characteristics you are
left with a data frame with 228 observations.
Determining Where Nobel Laureates Lived
The Buzzfeed article claims that most living Nobel laureates were
based in the US when they won their prizes. First, we’ll create a new
variable to identify whether the laureate was in the US when they won
their prize.
We include a mutate()
function that uses a functional
variant of the classic “if” statement, called if_else()
, to
create this variable. The arguments to this new function, to be covered
in more detail later in the course, are:
- the condition for which we’re testing (e.g., is the country the
USA?)
- the value to use if the condition is true (e.g., if
country
is equal to "USA"
, it gives us
"USA"
)
- the value to use otherwise (e.g., if the country isn’t
"USA"
, we get "Other"
).
mutate(
country_us = if_else(country == "USA", "USA", "Other")
)
🚧 Add a code chunk that creates a data frame called
nobel_living_science
by combining the two transformations
above into a pipeline: use the mutate()
with the
if_else
discussed above to create the a
country_us
variable; and use filter()
to limit
the results to include only categories with values %in%
“Physics”, “Medicine”, “Chemistry”, “Economics”.
🚧 Create a faceted bar plot, with horizontal bars, visualizing the
relationship between the category of prize and whether the laureate was
in the US when they won the Nobel prize. Interpret your visualization,
and say a few words about whether the Buzzfeed headline is supported by
the data.
- Your visualization should be faceted by category.
- For each facet you should have two bars, one for winners in the US
and one for Other.
Determining Where Nobel Laureates Were Born
🚧 Go back to the code chunk that created
nobel_living_science
and add a new variable called
born_country_us
that has the value "USA"
if
the laureate is born in the US, and "Other"
otherwise. Do
this by modifying your earlier code chunk; you won’t add anything new
here.
🚧 Remake your visualization and add a second variable: whether the
laureate was born in the US or not. Your final visualization should
contain a facet for each category, within each facet a bar for whether
they won the award in the US or not, and within each bar whether they
were born in the US or not. (Don’t over-think this: you can do this by
just adding another aesthetic mapping!) Based on your visualization, do
the data appear to support Buzzfeed’s claim? Explain your reasoning in
1-2 sentences.
The data show that very few Nobel prize winners who won in other
countries emmigrated there from the US. Conversely, however, the data
show that many US prize winners were born in other countries, at least
for fields other than Economics in which the majority of winners were
not US-born.
Determining Where Immigrant Nobel Laureates Were Born
🚧 Make a table for where immigrant Nobelists were born, using a
single pipeline:
- filter for living STEM laureates who won their prize in the US, but
were born outside of the US,
- then create a frequency table for their birth country,
born_country
,
- then sort the result in descending order of number of Nobelists for
each country.
Recreating the Buzzfeed Visualizations [OPTIONAL]
The plots in the Buzzfeed article are called waffle plots. You can
find the code used for making these plots in Buzzfeed’s GitHub repo
(yes, they have one!) here.
You’re not expected to recreate them as part of your assignment, but
you’re welcome to do so for fun!
LS0tCnRpdGxlOiAiTGFiIDUuMSAtIE5vYmVsIExhdXJlYXRlcyIKYXV0aG9yOiAiQXV0aG9yIEdvZXMgSGVyZSIKZGF0ZTogIlNlbWVzdGVyIEdvZXMgSGVyZSIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKYGBge3IgbG9hZC1wYWNrYWdlcywgbWVzc2FnZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpIApgYGAKClRoaXMgYW5hbHlzaXMgZXhwbG9yZXMgdGhlIGRhdGEgdXNlZCBieSBQLiBBbGRob3VzIGluIFt0aGlzIEJ1enpmZWVkIGFydGljbGVdKGh0dHBzOi8vd3d3LmJ1enpmZWVkbmV3cy5jb20vYXJ0aWNsZS9wZXRlcmFsZGhvdXMvaW1taWdyYXRpb24tYW5kLXNjaWVuY2UpLiBUaGUgYXJ0aWNsZSBjbGFpbXMgdGhhdCBvbmUga2V5IGZhY3RvciBpbiB0aGUgVVMncyBsZWFkZXJzaGlwIGluIHNjaWVuY2UgYW5kIHRlY2hub2xvZ3kgaXMgaW1taWdyYXRpb24gYmVjYXVzZSB3aGlsZSBtb3N0IGxpdmluZyBOb2JlbCBsYXVyZWF0ZXMgaW4gdGhlIHNjaWVuY2VzIGFyZSBiYXNlZCBpbiB0aGUgVVMsIG1hbnkgb2YgdGhlbSB3ZXJlIGJvcm4gaW4gb3RoZXIgY291bnRyaWVzLgoKIyMgVGhlIERhdGFzZXQKCvCfmqcKWW91J2xsIG5lZWQgdG8gZ2V0IFt0aGUgbm9iZWwgZGF0YXNldF0oaHR0cHM6Ly9jcy5jYWx2aW4uZWR1L2NvdXJzZXMvaW5mby82MDEvMDV3cmFuZ2xpbmcvbGFiL2RhdGEvbm9iZWwuY3N2KSwgaW5zdGFsbCBpdCBpbiBhIGBkYXRhYCBmb2xkZXIsIGFuZCBsb2FkIGl0LgoK8J+apwpCZWNhdXNlIHRoZXJlIGlzIG5vIGZvcm1hbCB3ZWJwYWdlIGZvciB0aGlzIGRhdGFzZXQsIHN0dWR5IHRoZSBkYXRhc2V0IGFuZCBnaXZlIGEgc2hvcnQgc3VtbWFyeSBoZXJlIG9uIHdoYXQgaXQgY29udGFpbnMuIEhvdyBtYW55IG9ic2VydmF0aW9ucyBhbmQgaG93IG1hbnkgdmFyaWFibGVzIGFyZSBpbiB0aGUgZGF0YXNldD8gV2hhdCBkb2VzIGVhY2ggb2JzZXJ2YXRpb24gcmVwcmVzZW50PyBVc2UgaW5saW5lIGNvZGUgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24uIFBsZWFzZSBpbmNsdWRlIHRoaXMgZGF0YSBkaWN0aW9uYXJ5LgoKLSBgaWRgOiBJRCBudW1iZXIKLSBgZmlyc3RuYW1lYDogRmlyc3QgbmFtZSBvZiBsYXVyZWF0ZQotIGBzdXJuYW1lYDogU3VybmFtZSAKLSBgeWVhcmA6IFllYXIgcHJpemUgd29uCi0gYGNhdGVnb3J5YDogQ2F0ZWdvcnkgb2YgcHJpemUKLSBgYWZmaWxpYXRpb25gOiBBZmZpbGlhdGlvbiBvZiBsYXVyZWF0ZQotIGBjaXR5YDogQ2l0eSBvZiBsYXVyZWF0ZSBpbiBwcml6ZSB5ZWFyCi0gYGNvdW50cnlgOiBDb3VudHJ5IG9mIGxhdXJlYXRlIGluIHByaXplIHllYXIKLSBgYm9ybl9kYXRlYDogQmlydGggZGF0ZSBvZiBsYXVyZWF0ZQotIGBkaWVkX2RhdGVgOiBEZWF0aCBkYXRlIG9mIGxhdXJlYXRlCi0gYGdlbmRlcmA6IEdlbmRlciBvZiBsYXVyZWF0ZQotIGBib3JuX2NpdHlgOiBDaXR5IHdoZXJlIGxhdXJlYXRlIHdhcyBib3JuCi0gYGJvcm5fY291bnRyeWA6IENvdW50cnkgd2hlcmUgbGF1cmVhdGUgd2FzIGJvcm4KLSBgYm9ybl9jb3VudHJ5X2NvZGVgOiBDb2RlIG9mIGNvdW50cnkgd2hlcmUgbGF1cmVhdGUgd2FzIGJvcm4KLSBgZGllZF9jaXR5YDogQ2l0eSB3aGVyZSBsYXVyZWF0ZSBkaWVkCi0gYGRpZWRfY291bnRyeWA6IENvdW50cnkgd2hlcmUgbGF1cmVhdGUgZGllZAotIGBkaWVkX2NvdW50cnlfY29kZWA6IENvZGUgb2YgY291bnRyeSB3aGVyZSBsYXVyZWF0ZSBkaWVkCi0gYG92ZXJhbGxfbW90aXZhdGlvbmA6IE92ZXJhbGwgbW90aXZhdGlvbiBmb3IgcmVjb2duaXRpb24KLSBgc2hhcmVgOiBOdW1iZXIgb2Ygb3RoZXIgd2lubmVycyBhd2FyZCBpcyBzaGFyZWQgd2l0aAotIGBtb3RpdmF0aW9uYDogTW90aXZhdGlvbiBmb3IgcmVjb2duaXRpb24KCkluIGEgZmV3IGNhc2VzIHRoZSBuYW1lIG9mIHRoZSBjaXR5L2NvdW50cnkgY2hhbmdlZCBhZnRlciBsYXVyZWF0ZSB3YXMgZ2l2ZW4gKGUuZy4gaW4gMTk3NSBCb3NuaWEgYW5kIEhlcnplZ292aW5hIHdhcyBwYXJ0IG9mIHRoZSBTb2NpYWxpc3QgRmVkZXJhdGl2ZSBSZXB1YmxpYyBvZiBZdWdvc2xhdmlhKS4gSW4gdGhlc2UgY2FzZXMgdGhlIHZhcmlhYmxlcyBiZWxvdyByZWZsZWN0IGEgZGlmZmVyZW50IG5hbWUgdGhhbiB0aGVpciBjb3VudGVycGFydHMgd2l0aG91dCB0aGUgc3VmZml4IGBfb3JpZ2luYWxgLgoKLSBgYm9ybl9jb3VudHJ5X29yaWdpbmFsYDogT3JpZ2luYWwgY291bnRyeSB3aGVyZSBsYXVyZWF0ZSB3YXMgYm9ybgotIGBib3JuX2NpdHlfb3JpZ2luYWxgOiBPcmlnaW5hbCBjaXR5IHdoZXJlIGxhdXJlYXRlIHdhcyBib3JuCi0gYGRpZWRfY291bnRyeV9vcmlnaW5hbGA6IE9yaWdpbmFsIGNvdW50cnkgd2hlcmUgbGF1cmVhdGUgZGllZAotIGBkaWVkX2NpdHlfb3JpZ2luYWxgOiBPcmlnaW5hbCBjaXR5IHdoZXJlIGxhdXJlYXRlIGRpZWQKLSBgY2l0eV9vcmlnaW5hbGA6IE9yaWdpbmFsIGNpdHkgd2hlcmUgbGF1cmVhdGUgbGl2ZWQgYXQgdGhlIHRpbWUgb2Ygd2lubmluZyB0aGUgYXdhcmQKLSBgY291bnRyeV9vcmlnaW5hbGA6IE9yaWdpbmFsIGNvdW50cnkgd2hlcmUgbGF1cmVhdGUgbGl2ZWQgYXQgdGhlIHRpbWUgb2Ygd2lubmluZyB0aGUgYXdhcmQKCiMjIENsZWFuc2luZyB0aGUgRGF0YQoK8J+apwpDcmVhdGUgYSBuZXcgZGF0YSBmcmFtZSBjYWxsZWQgYG5vYmVsX2xpdmluZ2AgdGhhdCBpbmNsdWRlcyBvbmx5OgoKLSBsYXVyZWF0ZXMgZm9yIHdob20gY291bnRyeSBpcyBhdmFpbGFibGUgKGkuZS4sIGl0IGlzbid0IGBOQWAgLS0gcmVtZW1iZXIgdG8gdXNlIHRoZSBgaXMubmEoKWAgZnVuY3Rpb24pCi0gbGF1cmVhdGVzIHdobyBhcmUgcGVvcGxlIGFzIG9wcG9zZWQgdG8gb3JnYW5pemF0aW9ucyAob3JnYW5pemF0aW9ucyBhcmUgZGVub3RlZCB3aXRoIGAib3JnImAgYXMgdGhlaXIgZ2VuZGVyKQotIGxhdXJlYXRlcyB3aG8gYXJlIHN0aWxsIGFsaXZlICh0aGVpciBkaWVkX2RhdGUgaXMgYE5BYCkKCkNvbmZpcm0gdGhhdCBvbmNlIHlvdSBoYXZlIGZpbHRlcmVkIGZvciB0aGVzZSBjaGFyYWN0ZXJpc3RpY3MgeW91IGFyZSBsZWZ0IHdpdGggYSBkYXRhIGZyYW1lIHdpdGggMjI4IG9ic2VydmF0aW9ucy4KCiMjIERldGVybWluaW5nIFdoZXJlIE5vYmVsIExhdXJlYXRlcyBMaXZlZAoKVGhlIEJ1enpmZWVkIGFydGljbGUgY2xhaW1zIHRoYXQgbW9zdCBsaXZpbmcgTm9iZWwgbGF1cmVhdGVzIHdlcmUgYmFzZWQgaW4gdGhlIFVTIHdoZW4gdGhleSB3b24gdGhlaXIgcHJpemVzLiBGaXJzdCwgd2UnbGwgY3JlYXRlIGEgbmV3IHZhcmlhYmxlIHRvIGlkZW50aWZ5IHdoZXRoZXIgdGhlIGxhdXJlYXRlIHdhcyBpbiB0aGUgVVMgd2hlbiB0aGV5IHdvbiB0aGVpciBwcml6ZS4KCldlIGluY2x1ZGUgYSBgbXV0YXRlKClgIGZ1bmN0aW9uIHRoYXQgdXNlcyBhIGZ1bmN0aW9uYWwgdmFyaWFudCBvZiB0aGUgY2xhc3NpYyAiaWYiIHN0YXRlbWVudCwgY2FsbGVkIGBpZl9lbHNlKClgLCB0byBjcmVhdGUgdGhpcyB2YXJpYWJsZS4gVGhlIGFyZ3VtZW50cyB0byB0aGlzIG5ldyBmdW5jdGlvbiwgdG8gYmUgY292ZXJlZCBpbiBtb3JlIGRldGFpbCBsYXRlciBpbiB0aGUgY291cnNlLCBhcmU6CgotIHRoZSBjb25kaXRpb24gZm9yIHdoaWNoIHdlJ3JlIHRlc3RpbmcgKGUuZy4sIGlzIHRoZSBjb3VudHJ5IHRoZSBVU0E/KQotIHRoZSB2YWx1ZSB0byB1c2UgaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIChlLmcuLCBpZiBgY291bnRyeWAgaXMgZXF1YWwgdG8gYCJVU0EiYCwgaXQgZ2l2ZXMgdXMgYCJVU0EiYCkKLSB0aGUgdmFsdWUgdG8gdXNlIG90aGVyd2lzZSAoZS5nLiwgaWYgdGhlIGNvdW50cnkgaXNuJ3QgYCJVU0EiYCwgd2UgZ2V0IGAiT3RoZXIiYCkuCgpgYGB7ciBldmFsID0gRkFMU0V9CiAgbXV0YXRlKAogICAgY291bnRyeV91cyA9IGlmX2Vsc2UoY291bnRyeSA9PSAiVVNBIiwgIlVTQSIsICJPdGhlciIpCiAgKQpgYGAKCvCfmqcKQWRkIGEgY29kZSBjaHVuayB0aGF0IGNyZWF0ZXMgYSBkYXRhIGZyYW1lIGNhbGxlZCBgbm9iZWxfbGl2aW5nX3NjaWVuY2VgIGJ5IGNvbWJpbmluZyB0aGUgdHdvIHRyYW5zZm9ybWF0aW9ucyBhYm92ZSBpbnRvIGEgcGlwZWxpbmU6IHVzZSB0aGUgYG11dGF0ZSgpYCB3aXRoIHRoZSBgaWZfZWxzZWAgZGlzY3Vzc2VkIGFib3ZlIHRvIGNyZWF0ZSB0aGUgYSBgY291bnRyeV91c2AgdmFyaWFibGU7IGFuZCB1c2UgYGZpbHRlcigpYCB0byBsaW1pdCB0aGUgcmVzdWx0cyB0byBpbmNsdWRlIG9ubHkgY2F0ZWdvcmllcyB3aXRoIHZhbHVlcyBgJWluJWAgIlBoeXNpY3MiLCAiTWVkaWNpbmUiLCAiQ2hlbWlzdHJ5IiwgIkVjb25vbWljcyIuIAoK8J+apwpDcmVhdGUgYSBmYWNldGVkIGJhciBwbG90LCB3aXRoIGhvcml6b250YWwgYmFycywgdmlzdWFsaXppbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjYXRlZ29yeSBvZiBwcml6ZSBhbmQgd2hldGhlciB0aGUgbGF1cmVhdGUgd2FzIGluIHRoZSBVUyB3aGVuIHRoZXkgd29uIHRoZSBOb2JlbCBwcml6ZS4gSW50ZXJwcmV0IHlvdXIgdmlzdWFsaXphdGlvbiwgYW5kIHNheSBhIGZldyB3b3JkcyBhYm91dCB3aGV0aGVyIHRoZSBCdXp6ZmVlZCBoZWFkbGluZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRhdGEuCgotIFlvdXIgdmlzdWFsaXphdGlvbiBzaG91bGQgYmUgZmFjZXRlZCBieSBjYXRlZ29yeS4KLSBGb3IgZWFjaCBmYWNldCB5b3Ugc2hvdWxkIGhhdmUgdHdvIGJhcnMsIG9uZSBmb3Igd2lubmVycyBpbiB0aGUgVVMgYW5kIG9uZSBmb3IgT3RoZXIuIAoKIVtwcml6ZXMgYnkgY3VycmVudCBjb3VudHJ5XShpbWFnZXMvbm9iZWwxLnBuZykKCiMjIERldGVybWluaW5nIFdoZXJlIE5vYmVsIExhdXJlYXRlcyBXZXJlIEJvcm4KCvCfmqcKR28gYmFjayB0byB0aGUgY29kZSBjaHVuayB0aGF0IGNyZWF0ZWQgYG5vYmVsX2xpdmluZ19zY2llbmNlYCBhbmQgYWRkIGEgbmV3IHZhcmlhYmxlIGNhbGxlZCBgYm9ybl9jb3VudHJ5X3VzYCB0aGF0IGhhcyB0aGUgdmFsdWUgYCJVU0EiYCBpZiB0aGUgbGF1cmVhdGUgaXMgYm9ybiBpbiB0aGUgVVMsIGFuZCBgIk90aGVyImAgb3RoZXJ3aXNlLiBEbyB0aGlzIGJ5IG1vZGlmeWluZyB5b3VyIGVhcmxpZXIgY29kZSBjaHVuazsgeW91IHdvbid0IGFkZCBhbnl0aGluZyBuZXcgaGVyZS4KCvCfmqcKUmVtYWtlIHlvdXIgdmlzdWFsaXphdGlvbiBhbmQgYWRkIGEgc2Vjb25kIHZhcmlhYmxlOiB3aGV0aGVyIHRoZSBsYXVyZWF0ZSB3YXMgYm9ybiBpbiB0aGUgVVMgb3Igbm90LiBZb3VyIGZpbmFsIHZpc3VhbGl6YXRpb24gc2hvdWxkIGNvbnRhaW4gYSBmYWNldCBmb3IgZWFjaCBjYXRlZ29yeSwgd2l0aGluIGVhY2ggZmFjZXQgYSBiYXIgZm9yIHdoZXRoZXIgdGhleSB3b24gdGhlIGF3YXJkIGluIHRoZSBVUyBvciBub3QsIGFuZCB3aXRoaW4gZWFjaCBiYXIgd2hldGhlciB0aGV5IHdlcmUgYm9ybiBpbiB0aGUgVVMgb3Igbm90LiAoRG9uJ3Qgb3Zlci10aGluayB0aGlzOiB5b3UgY2FuIGRvIHRoaXMgYnkganVzdCBhZGRpbmcgYW5vdGhlciBhZXN0aGV0aWMgbWFwcGluZyEpIEJhc2VkIG9uIHlvdXIgdmlzdWFsaXphdGlvbiwgZG8gdGhlIGRhdGEgYXBwZWFyIHRvIHN1cHBvcnQgQnV6emZlZWQncyBjbGFpbT8gRXhwbGFpbiB5b3VyIHJlYXNvbmluZyBpbiAxLTIgc2VudGVuY2VzLgoKIVtwcml6ZXMgYnkgY291bnRyeSBvZiBvcmlnaW5dKGltYWdlcy9ub2JlbDIucG5nKQoKVGhlIGRhdGEgc2hvdyB0aGF0IHZlcnkgZmV3IE5vYmVsIHByaXplIHdpbm5lcnMgd2hvIHdvbiBpbiBvdGhlciBjb3VudHJpZXMgZW1taWdyYXRlZCB0aGVyZSBmcm9tIHRoZSBVUy4gQ29udmVyc2VseSwgaG93ZXZlciwgdGhlIGRhdGEgc2hvdyB0aGF0IG1hbnkgVVMgcHJpemUgd2lubmVycyB3ZXJlIGJvcm4gaW4gb3RoZXIgY291bnRyaWVzLCBhdCBsZWFzdCBmb3IgZmllbGRzIG90aGVyIHRoYW4gRWNvbm9taWNzIGluIHdoaWNoIHRoZSBtYWpvcml0eSBvZiB3aW5uZXJzIHdlcmUgbm90IFVTLWJvcm4uCgojIyBEZXRlcm1pbmluZyBXaGVyZSBJbW1pZ3JhbnQgTm9iZWwgTGF1cmVhdGVzIFdlcmUgQm9ybgoK8J+apwpNYWtlIGEgdGFibGUgZm9yIHdoZXJlIGltbWlncmFudCBOb2JlbGlzdHMgd2VyZSBib3JuLCB1c2luZyBhIHNpbmdsZSBwaXBlbGluZToKCi0gZmlsdGVyIGZvciBsaXZpbmcgU1RFTSBsYXVyZWF0ZXMgd2hvIHdvbiB0aGVpciBwcml6ZSBpbiB0aGUgVVMsIGJ1dCB3ZXJlIGJvcm4gb3V0c2lkZSBvZiB0aGUgVVMsCi0gdGhlbiBjcmVhdGUgYSBmcmVxdWVuY3kgdGFibGUgZm9yIHRoZWlyIGJpcnRoIGNvdW50cnksIGBib3JuX2NvdW50cnlgLAotIHRoZW4gc29ydCB0aGUgcmVzdWx0IGluIGRlc2NlbmRpbmcgb3JkZXIgb2YgbnVtYmVyIG9mIE5vYmVsaXN0cyBmb3IgZWFjaCBjb3VudHJ5LgoKIVtjb3VudHJ5IG9mIG9yaWdpbiBvZiBpbW1pZ3JhbnQgd2lubmVyc10oaW1hZ2VzL25vYmVsMy5wbmcpCgojIyBSZWNyZWF0aW5nIHRoZSBCdXp6ZmVlZCBWaXN1YWxpemF0aW9ucyBbT1BUSU9OQUxdCgpUaGUgcGxvdHMgaW4gdGhlIEJ1enpmZWVkIGFydGljbGUgYXJlIGNhbGxlZCB3YWZmbGUgcGxvdHMuIFlvdSBjYW4gZmluZCB0aGUgY29kZSB1c2VkIGZvciBtYWtpbmcgdGhlc2UgcGxvdHMgaW4gQnV6emZlZWQncyBHaXRIdWIgcmVwbyAoeWVzLCB0aGV5IGhhdmUgb25lISkgW2hlcmVdKGh0dHBzOi8vYnV6emZlZWRuZXdzLmdpdGh1Yi5pby8yMDE3LTAxLWltbWlncmF0aW9uLWFuZC1zY2llbmNlLykuIFlvdSdyZSBub3QgZXhwZWN0ZWQgdG8gcmVjcmVhdGUgdGhlbSBhcyBwYXJ0IG9mIHlvdXIgYXNzaWdubWVudCwgYnV0IHlvdSdyZSB3ZWxjb21lIHRvIGRvIHNvIGZvciBmdW4hCg==