if("hflights" %in% installed.packages() == FALSE)install.packages("hflights")
library(hflights)
# 미국 휴스턴에서 출발하는 모든 비행기의 2011년 이착륙기록이 수록된 것으로
# 227,496건의 이착륙기록에 대해 21개 항목을 수집한 데이터
if("MASS" %in% installed.packages() == FALSE)install.packages("MASS")
library(MASS)
if("datasets" %in% installed.packages() == FALSE)install.packages("datasets")
library(datasets)
data()
Data sets in package ¡®datasets¡¯:
AirPassengers
Monthly Airline Passenger
Numbers 1949-1960
BJsales Sales Data with Leading
Indicator
BJsales.lead (BJsales)
Sales Data with Leading
Indicator
BOD Biochemical Oxygen Demand
CO2 Carbon Dioxide Uptake in Grass
Plants
ChickWeight Weight versus age of chicks on
different diets
DNase Elisa assay of DNase
EuStockMarkets
Daily Closing Prices of Major
European Stock Indices,
1991-1998
Formaldehyde Determination of Formaldehyde
HairEyeColor Hair and Eye Color of
Statistics Students
Harman23.cor Harman Example 2.3
Harman74.cor Harman Example 7.4
Indometh Pharmacokinetics of
Indomethacin
InsectSprays Effectiveness of Insect Sprays
JohnsonJohnson
Quarterly Earnings per Johnson
& Johnson Share
LakeHuron Level of Lake Huron 1875-1972
LifeCycleSavings
Intercountry Life-Cycle
Savings Data
Loblolly Growth of Loblolly pine trees
Nile Flow of the River Nile
Orange Growth of Orange Trees
OrchardSprays
Potency of Orchard Sprays
PlantGrowth Results from an Experiment on
Plant Growth
Puromycin Reaction Velocity of an
Enzymatic Reaction
Seatbelts Road Casualties in Great
Britain 1969-84
Theoph Pharmacokinetics of
Theophylline
Titanic Survival of passengers on the
Titanic
ToothGrowth The Effect of Vitamin C on
Tooth Growth in Guinea Pigs
UCBAdmissions
Student Admissions at UC
Berkeley
UKDriverDeaths
Road Casualties in Great
Britain 1969-84
UKgas UK Quarterly Gas Consumption
USAccDeaths Accidental Deaths in the US
1973-1978
USArrests Violent Crime Rates by US
State
USJudgeRatings
Lawyers' Ratings of State
Judges in the US Superior
Court
USPersonalExpenditure
Personal Expenditure Data
UScitiesD Distances Between European
Cities and Between US Cities
VADeaths Death Rates in Virginia (1940)
WWWusage Internet Usage per Minute
WorldPhones The World's Telephones
ability.cov Ability and Intelligence Tests
airmiles Passenger Miles on Commercial
US Airlines, 1937-1960
airquality New York Air Quality
Measurements
anscombe Anscombe's Quartet of
'Identical' Simple Linear
Regressions
attenu The Joyner-Boore Attenuation
Data
attitude The Chatterjee-Price Attitude
Data
austres Quarterly Time Series of the
Number of Australian Residents
beaver1 (beavers)
Body Temperature Series of Two
Beavers
beaver2 (beavers)
Body Temperature Series of Two
Beavers
cars Speed and Stopping Distances
of Cars
chickwts Chicken Weights by Feed Type
co2 Mauna Loa Atmospheric CO2
Concentration
crimtab Student's 3000 Criminals Data
discoveries Yearly Numbers of Important
Discoveries
esoph Smoking, Alcohol and
(O)esophageal Cancer
euro Conversion Rates of Euro
Currencies
euro.cross (euro)
Conversion Rates of Euro
Currencies
eurodist Distances Between European
Cities and Between US Cities
faithful Old Faithful Geyser Data
fdeaths (UKLungDeaths)
Monthly Deaths from Lung
Diseases in the UK
freeny Freeny's Revenue Data
freeny.x (freeny)
Freeny's Revenue Data
freeny.y (freeny)
Freeny's Revenue Data
infert Infertility after Spontaneous
and Induced Abortion
iris Edgar Anderson's Iris Data
iris3 Edgar Anderson's Iris Data
islands Areas of the World's Major
Landmasses
ldeaths (UKLungDeaths)
Monthly Deaths from Lung
Diseases in the UK
lh Luteinizing Hormone in Blood
Samples
longley Longley's Economic Regression
Data
lynx Annual Canadian Lynx trappings
1821-1934
mdeaths (UKLungDeaths)
Monthly Deaths from Lung
Diseases in the UK
morley Michelson Speed of Light Data
mtcars Motor Trend Car Road Tests
nhtemp Average Yearly Temperatures in
New Haven
nottem Average Monthly Temperatures
at Nottingham, 1920-1939
npk Classical N, P, K Factorial
Experiment
occupationalStatus
Occupational Status of Fathers
and their Sons
precip Annual Precipitation in US
Cities
presidents Quarterly Approval Ratings of
US Presidents
pressure Vapor Pressure of Mercury as a
Function of Temperature
quakes Locations of Earthquakes off
Fiji
randu Random Numbers from
Congruential Generator RANDU
rivers Lengths of Major North
American Rivers
rock Measurements on Petroleum Rock
Samples
sleep Student's Sleep Data
stack.loss (stackloss)
Brownlee's Stack Loss Plant
Data
stack.x (stackloss)
Brownlee's Stack Loss Plant
Data
stackloss Brownlee's Stack Loss Plant
Data
state.abb (state)
US State Facts and Figures
state.area (state)
US State Facts and Figures
state.center (state)
US State Facts and Figures
state.division (state)
US State Facts and Figures
state.name (state)
US State Facts and Figures
state.region (state)
US State Facts and Figures
state.x77 (state)
US State Facts and Figures
sunspot.month
Monthly Sunspot Data, from
1749 to "Present"
sunspot.year Yearly Sunspot Data, 1700-1988
sunspots Monthly Sunspot Numbers,
1749-1983
swiss Swiss Fertility and
Socioeconomic Indicators
(1888) Data
treering Yearly Treering Data,
-6000-1979
trees Girth, Height and Volume for
Black Cherry Trees
uspop Populations Recorded by the US
Census
volcano Topographic Information on
Auckland's Maunga Whau Volcano
warpbreaks The Number of Breaks in Yarn
during Weaving
women Average Heights and Weights
for American Women
Data sets in package ¡®dplyr¡¯:
band_instruments
Band membership
band_instruments2
Band membership
band_members Band membership
nasa NASA spatio-temporal data
starwars Starwars characters
storms Storm tracks data
Data sets in package ¡®ggmap¡¯:
crime Crime data
hadley Highly unofficial ggplot2
image
wind Wind data from Hurricane Ike
zips Zip code data for the Greater
Houston Metropolitan Area from
the 2000 census
Data sets in package ¡®ggplot2¡¯:
diamonds Prices of 50,000 round cut
diamonds
economics US economic time series
economics_long
US economic time series
faithfuld 2d density estimate of Old
Faithful data
luv_colours 'colors()' in Luv space
midwest Midwest demographics
mpg Fuel economy data from 1999
and 2008 for 38 popular models
of car
msleep An updated and expanded
version of the mammals sleep
dataset
presidential Terms of 11 presidents from
Eisenhower to Obama
seals Vector field of seal movements
txhousing Housing sales in TX
Data sets in package ¡®googleVis¡¯:
Andrew Hurricane Andrew: googleVis
example data set
Cairo Daily temperature data for
Cairo
CityPopularity
CityPopularity: googleVis
example data set
Exports Exports: googleVis example
data set
Fruits Fruits: googleVis example data
set
OpenClose OpenClose: googleVis example
data set
Population Population: googleVis example
data set
Regions Regions: googleVis example
data set
Stock Stock: googleVis example data
set
dino Dinosaur data
Data sets in package ¡®hflights¡¯:
hflights Houston flights data
Data sets in package ¡®MASS¡¯:
Aids2 Australian AIDS Survival Data
Animals Brain and Body Weights for 28
Species
Boston Housing Values in Suburbs of
Boston
Cars93 Data from 93 Cars on Sale in
the USA in 1993
Cushings Diagnostic Tests on Patients
with Cushing's Syndrome
DDT DDT in Kale
GAGurine Level of GAG in Urine of
Children
Insurance Numbers of Car Insurance
claims
Melanoma Survival from Malignant
Melanoma
OME Tests of Auditory Perception
in Children with OME
Pima.te Diabetes in Pima Indian Women
Pima.tr Diabetes in Pima Indian Women
Pima.tr2 Diabetes in Pima Indian Women
Rabbit Blood Pressure in Rabbits
Rubber Accelerated Testing of Tyre
Rubber
SP500 Returns of the Standard and
Poors 500
Sitka Growth Curves for Sitka Spruce
Trees in 1988
Sitka89 Growth Curves for Sitka Spruce
Trees in 1989
Skye AFM Compositions of Aphyric
Skye Lavas
Traffic Effect of Swedish Speed Limits
on Accidents
UScereal Nutritional and Marketing
Information on US Cereals
UScrime The Effect of Punishment
Regimes on Crime Rates
VA Veteran's Administration Lung
Cancer Trial
abbey Determinations of Nickel
Content
accdeaths Accidental Deaths in the US
1973-1978
anorexia Anorexia Data on Weight Change
bacteria Presence of Bacteria after
Drug Treatments
beav1 Body Temperature Series of
Beaver 1
beav2 Body Temperature Series of
Beaver 2
biopsy Biopsy Data on Breast Cancer
Patients
birthwt Risk Factors Associated with
Low Infant Birth Weight
cabbages Data from a cabbage field
trial
caith Colours of Eyes and Hair of
People in Caithness
cats Anatomical Data from Domestic
Cats
cement Heat Evolved by Setting
Cements
chem Copper in Wholemeal Flour
coop Co-operative Trial in
Analytical Chemistry
cpus Performance of Computer CPUs
crabs Morphological Measurements on
Leptograpsus Crabs
deaths Monthly Deaths from Lung
Diseases in the UK
drivers Deaths of Car Drivers in Great
Britain 1969-84
eagles Foraging Ecology of Bald
Eagles
epil Seizure Counts for Epileptics
farms Ecological Factors in Farm
Management
fgl Measurements of Forensic Glass
Fragments
forbes Forbes' Data on Boiling Points
in the Alps
galaxies Velocities for 82 Galaxies
gehan Remission Times of Leukaemia
Patients
genotype Rat Genotype Data
geyser Old Faithful Geyser Data
gilgais Line Transect of Soil in
Gilgai Territory
hills Record Times in Scottish Hill
Races
housing Frequency Table from a
Copenhagen Housing Conditions
Survey
immer Yields from a Barley Field
Trial
leuk Survival Times and White Blood
Counts for Leukaemia Patients
mammals Brain and Body Weights for 62
Species of Land Mammals
mcycle Data from a Simulated
Motorcycle Accident
menarche Age of Menarche in Warsaw
michelson Michelson's Speed of Light
Data
minn38 Minnesota High School
Graduates of 1938
motors Accelerated Life Testing of
Motorettes
muscle Effect of Calcium Chloride on
Muscle Contraction in Rat
Hearts
newcomb Newcomb's Measurements of the
Passage Time of Light
nlschools Eighth-Grade Pupils in the
Netherlands
npk Classical N, P, K Factorial
Experiment
npr1 US Naval Petroleum Reserve No.
1 data
oats Data from an Oats Field Trial
painters The Painter's Data of de Piles
petrol N. L. Prater's Petrol Refinery
Data
phones Belgium Phone Calls 1950-1973
quine Absenteeism from School in
Rural New South Wales
road Road Accident Deaths in US
States
rotifer Numbers of Rotifers by Fluid
Density
ships Ships Damage Data
shoes Shoe wear data of Box, Hunter
and Hunter
shrimp Percentage of Shrimp in Shrimp
Cocktail
shuttle Space Shuttle Autolander
Problem
snails Snail Mortality Data
steam The Saturated Steam Pressure
Data
stormer The Stormer Viscometer Data
survey Student Survey Data
synth.te Synthetic Classification
Problem
synth.tr Synthetic Classification
Problem
topo Spatial Topographic Data
waders Counts of Waders at 15 Sites
in South Africa
whiteside House Insulation: Whiteside's
Data
wtloss Weight Loss Data from an Obese
Patient
Data sets in package ¡®plyr¡¯:
baseball Yearly batting records for all
major league baseball players
ozone Monthly ozone measurements
over Central America.
Data sets in package ¡®reshape¡¯:
french_fries Sensory data from a french
fries experiment
smiths Demo data describing the
Smiths
tips Tipping data
Data sets in package ¡®RGA¡¯:
ga Lists all columns for a Google
Analytics core report type
Data sets in package ¡®stringr¡¯:
fruit Sample character vectors for
practicing string
manipulations.
sentences Sample character vectors for
practicing string
manipulations.
words Sample character vectors for
practicing string
manipulations.
Data sets in package ¡®wordcloud¡¯:
SOTU United States State of the
Union Addresses (2010 and
2011)
Use ¡®data(package = .packages(all.available = TRUE))¡¯
to list the data sets in all *available* packages.
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCg0KYGBge3J9DQppZigiaGZsaWdodHMiICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCkgPT0gRkFMU0UpaW5zdGFsbC5wYWNrYWdlcygiaGZsaWdodHMiKQ0KICAgICAgbGlicmFyeShoZmxpZ2h0cykNCiMg66+46rWtIO2ctOyKpO2EtOyXkOyEnCDstpzrsJztlZjripQg66qo65OgIOu5hO2Wieq4sOydmCAyMDEx64WEIOydtOywqeulmeq4sOuhneydtCDsiJjroZ3rkJwg6rKD7Jy866GcDQojIDIyNyw0OTbqsbTsnZgg7J207LCp66WZ6riw66Gd7JeQIOuMgO2VtCAyMeqwnCDtla3rqqnsnYQg7IiY7KeR7ZWcIOuNsOydtO2EsA0KaWYoIk1BU1MiICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCkgPT0gRkFMU0UpaW5zdGFsbC5wYWNrYWdlcygiTUFTUyIpDQogICAgICBsaWJyYXJ5KE1BU1MpDQppZigiZGF0YXNldHMiICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCkgPT0gRkFMU0UpaW5zdGFsbC5wYWNrYWdlcygiZGF0YXNldHMiKQ0KICAgICAgbGlicmFyeShkYXRhc2V0cykNCmRhdGEoKQ0KYGBgDQoNCkRhdGEgc2V0cyBpbiBwYWNrYWdlIMKhwq5kYXRhc2V0c8Khwq86DQpgYGB7cn0NCkFpclBhc3NlbmdlcnMNCiAgICAgICAgICAgICAgIE1vbnRobHkgQWlybGluZSBQYXNzZW5nZXINCiAgICAgICAgICAgICAgIE51bWJlcnMgMTk0OS0xOTYwDQpCSnNhbGVzICAgICAgICBTYWxlcyBEYXRhIHdpdGggTGVhZGluZw0KICAgICAgICAgICAgICAgSW5kaWNhdG9yDQpCSnNhbGVzLmxlYWQgKEJKc2FsZXMpDQogICAgICAgICAgICAgICBTYWxlcyBEYXRhIHdpdGggTGVhZGluZw0KICAgICAgICAgICAgICAgSW5kaWNhdG9yDQpCT0QgICAgICAgICAgICBCaW9jaGVtaWNhbCBPeHlnZW4gRGVtYW5kDQpDTzIgICAgICAgICAgICBDYXJib24gRGlveGlkZSBVcHRha2UgaW4gR3Jhc3MNCiAgICAgICAgICAgICAgIFBsYW50cw0KQ2hpY2tXZWlnaHQgICAgV2VpZ2h0IHZlcnN1cyBhZ2Ugb2YgY2hpY2tzIG9uDQogICAgICAgICAgICAgICBkaWZmZXJlbnQgZGlldHMNCkROYXNlICAgICAgICAgIEVsaXNhIGFzc2F5IG9mIEROYXNlDQpFdVN0b2NrTWFya2V0cw0KICAgICAgICAgICAgICAgRGFpbHkgQ2xvc2luZyBQcmljZXMgb2YgTWFqb3INCiAgICAgICAgICAgICAgIEV1cm9wZWFuIFN0b2NrIEluZGljZXMsDQogICAgICAgICAgICAgICAxOTkxLTE5OTgNCkZvcm1hbGRlaHlkZSAgIERldGVybWluYXRpb24gb2YgRm9ybWFsZGVoeWRlDQpIYWlyRXllQ29sb3IgICBIYWlyIGFuZCBFeWUgQ29sb3Igb2YNCiAgICAgICAgICAgICAgIFN0YXRpc3RpY3MgU3R1ZGVudHMNCkhhcm1hbjIzLmNvciAgIEhhcm1hbiBFeGFtcGxlIDIuMw0KSGFybWFuNzQuY29yICAgSGFybWFuIEV4YW1wbGUgNy40DQpJbmRvbWV0aCAgICAgICBQaGFybWFjb2tpbmV0aWNzIG9mDQogICAgICAgICAgICAgICBJbmRvbWV0aGFjaW4NCkluc2VjdFNwcmF5cyAgIEVmZmVjdGl2ZW5lc3Mgb2YgSW5zZWN0IFNwcmF5cw0KSm9obnNvbkpvaG5zb24NCiAgICAgICAgICAgICAgIFF1YXJ0ZXJseSBFYXJuaW5ncyBwZXIgSm9obnNvbg0KICAgICAgICAgICAgICAgJiBKb2huc29uIFNoYXJlDQpMYWtlSHVyb24gICAgICBMZXZlbCBvZiBMYWtlIEh1cm9uIDE4NzUtMTk3Mg0KTGlmZUN5Y2xlU2F2aW5ncw0KICAgICAgICAgICAgICAgSW50ZXJjb3VudHJ5IExpZmUtQ3ljbGUNCiAgICAgICAgICAgICAgIFNhdmluZ3MgRGF0YQ0KTG9ibG9sbHkgICAgICAgR3Jvd3RoIG9mIExvYmxvbGx5IHBpbmUgdHJlZXMNCk5pbGUgICAgICAgICAgIEZsb3cgb2YgdGhlIFJpdmVyIE5pbGUNCk9yYW5nZSAgICAgICAgIEdyb3d0aCBvZiBPcmFuZ2UgVHJlZXMNCk9yY2hhcmRTcHJheXMNCiAgICAgICAgICAgICAgIFBvdGVuY3kgb2YgT3JjaGFyZCBTcHJheXMNClBsYW50R3Jvd3RoICAgIFJlc3VsdHMgZnJvbSBhbiBFeHBlcmltZW50IG9uDQogICAgICAgICAgICAgICBQbGFudCBHcm93dGgNClB1cm9teWNpbiAgICAgIFJlYWN0aW9uIFZlbG9jaXR5IG9mIGFuDQogICAgICAgICAgICAgICBFbnp5bWF0aWMgUmVhY3Rpb24NClNlYXRiZWx0cyAgICAgIFJvYWQgQ2FzdWFsdGllcyBpbiBHcmVhdA0KICAgICAgICAgICAgICAgQnJpdGFpbiAxOTY5LTg0DQpUaGVvcGggICAgICAgICBQaGFybWFjb2tpbmV0aWNzIG9mDQogICAgICAgICAgICAgICBUaGVvcGh5bGxpbmUNClRpdGFuaWMgICAgICAgIFN1cnZpdmFsIG9mIHBhc3NlbmdlcnMgb24gdGhlDQogICAgICAgICAgICAgICBUaXRhbmljDQpUb290aEdyb3d0aCAgICBUaGUgRWZmZWN0IG9mIFZpdGFtaW4gQyBvbg0KICAgICAgICAgICAgICAgVG9vdGggR3Jvd3RoIGluIEd1aW5lYSBQaWdzDQpVQ0JBZG1pc3Npb25zDQogICAgICAgICAgICAgICBTdHVkZW50IEFkbWlzc2lvbnMgYXQgVUMNCiAgICAgICAgICAgICAgIEJlcmtlbGV5DQpVS0RyaXZlckRlYXRocw0KICAgICAgICAgICAgICAgUm9hZCBDYXN1YWx0aWVzIGluIEdyZWF0DQogICAgICAgICAgICAgICBCcml0YWluIDE5NjktODQNClVLZ2FzICAgICAgICAgIFVLIFF1YXJ0ZXJseSBHYXMgQ29uc3VtcHRpb24NClVTQWNjRGVhdGhzICAgIEFjY2lkZW50YWwgRGVhdGhzIGluIHRoZSBVUw0KICAgICAgICAgICAgICAgMTk3My0xOTc4DQpVU0FycmVzdHMgICAgICBWaW9sZW50IENyaW1lIFJhdGVzIGJ5IFVTDQogICAgICAgICAgICAgICBTdGF0ZQ0KVVNKdWRnZVJhdGluZ3MNCiAgICAgICAgICAgICAgIExhd3llcnMnIFJhdGluZ3Mgb2YgU3RhdGUNCiAgICAgICAgICAgICAgIEp1ZGdlcyBpbiB0aGUgVVMgU3VwZXJpb3INCiAgICAgICAgICAgICAgIENvdXJ0DQpVU1BlcnNvbmFsRXhwZW5kaXR1cmUNCiAgICAgICAgICAgICAgIFBlcnNvbmFsIEV4cGVuZGl0dXJlIERhdGENClVTY2l0aWVzRCAgICAgIERpc3RhbmNlcyBCZXR3ZWVuIEV1cm9wZWFuDQogICAgICAgICAgICAgICBDaXRpZXMgYW5kIEJldHdlZW4gVVMgQ2l0aWVzDQpWQURlYXRocyAgICAgICBEZWF0aCBSYXRlcyBpbiBWaXJnaW5pYSAoMTk0MCkNCldXV3VzYWdlICAgICAgIEludGVybmV0IFVzYWdlIHBlciBNaW51dGUNCldvcmxkUGhvbmVzICAgIFRoZSBXb3JsZCdzIFRlbGVwaG9uZXMNCmFiaWxpdHkuY292ICAgIEFiaWxpdHkgYW5kIEludGVsbGlnZW5jZSBUZXN0cw0KYWlybWlsZXMgICAgICAgUGFzc2VuZ2VyIE1pbGVzIG9uIENvbW1lcmNpYWwNCiAgICAgICAgICAgICAgIFVTIEFpcmxpbmVzLCAxOTM3LTE5NjANCmFpcnF1YWxpdHkgICAgIE5ldyBZb3JrIEFpciBRdWFsaXR5DQogICAgICAgICAgICAgICBNZWFzdXJlbWVudHMNCmFuc2NvbWJlICAgICAgIEFuc2NvbWJlJ3MgUXVhcnRldCBvZg0KICAgICAgICAgICAgICAgJ0lkZW50aWNhbCcgU2ltcGxlIExpbmVhcg0KICAgICAgICAgICAgICAgUmVncmVzc2lvbnMNCmF0dGVudSAgICAgICAgIFRoZSBKb3luZXItQm9vcmUgQXR0ZW51YXRpb24NCiAgICAgICAgICAgICAgIERhdGENCmF0dGl0dWRlICAgICAgIFRoZSBDaGF0dGVyamVlLVByaWNlIEF0dGl0dWRlDQogICAgICAgICAgICAgICBEYXRhDQphdXN0cmVzICAgICAgICBRdWFydGVybHkgVGltZSBTZXJpZXMgb2YgdGhlDQogICAgICAgICAgICAgICBOdW1iZXIgb2YgQXVzdHJhbGlhbiBSZXNpZGVudHMNCmJlYXZlcjEgKGJlYXZlcnMpDQogICAgICAgICAgICAgICBCb2R5IFRlbXBlcmF0dXJlIFNlcmllcyBvZiBUd28NCiAgICAgICAgICAgICAgIEJlYXZlcnMNCmJlYXZlcjIgKGJlYXZlcnMpDQogICAgICAgICAgICAgICBCb2R5IFRlbXBlcmF0dXJlIFNlcmllcyBvZiBUd28NCiAgICAgICAgICAgICAgIEJlYXZlcnMNCmNhcnMgICAgICAgICAgIFNwZWVkIGFuZCBTdG9wcGluZyBEaXN0YW5jZXMNCiAgICAgICAgICAgICAgIG9mIENhcnMNCmNoaWNrd3RzICAgICAgIENoaWNrZW4gV2VpZ2h0cyBieSBGZWVkIFR5cGUNCmNvMiAgICAgICAgICAgIE1hdW5hIExvYSBBdG1vc3BoZXJpYyBDTzINCiAgICAgICAgICAgICAgIENvbmNlbnRyYXRpb24NCmNyaW10YWIgICAgICAgIFN0dWRlbnQncyAzMDAwIENyaW1pbmFscyBEYXRhDQpkaXNjb3ZlcmllcyAgICBZZWFybHkgTnVtYmVycyBvZiBJbXBvcnRhbnQNCiAgICAgICAgICAgICAgIERpc2NvdmVyaWVzDQplc29waCAgICAgICAgICBTbW9raW5nLCBBbGNvaG9sIGFuZA0KICAgICAgICAgICAgICAgKE8pZXNvcGhhZ2VhbCBDYW5jZXINCmV1cm8gICAgICAgICAgIENvbnZlcnNpb24gUmF0ZXMgb2YgRXVybw0KICAgICAgICAgICAgICAgQ3VycmVuY2llcw0KZXVyby5jcm9zcyAoZXVybykNCiAgICAgICAgICAgICAgIENvbnZlcnNpb24gUmF0ZXMgb2YgRXVybw0KICAgICAgICAgICAgICAgQ3VycmVuY2llcw0KZXVyb2Rpc3QgICAgICAgRGlzdGFuY2VzIEJldHdlZW4gRXVyb3BlYW4NCiAgICAgICAgICAgICAgIENpdGllcyBhbmQgQmV0d2VlbiBVUyBDaXRpZXMNCmZhaXRoZnVsICAgICAgIE9sZCBGYWl0aGZ1bCBHZXlzZXIgRGF0YQ0KZmRlYXRocyAoVUtMdW5nRGVhdGhzKQ0KICAgICAgICAgICAgICAgTW9udGhseSBEZWF0aHMgZnJvbSBMdW5nDQogICAgICAgICAgICAgICBEaXNlYXNlcyBpbiB0aGUgVUsNCmZyZWVueSAgICAgICAgIEZyZWVueSdzIFJldmVudWUgRGF0YQ0KZnJlZW55LnggKGZyZWVueSkNCiAgICAgICAgICAgICAgIEZyZWVueSdzIFJldmVudWUgRGF0YQ0KZnJlZW55LnkgKGZyZWVueSkNCiAgICAgICAgICAgICAgIEZyZWVueSdzIFJldmVudWUgRGF0YQ0KaW5mZXJ0ICAgICAgICAgSW5mZXJ0aWxpdHkgYWZ0ZXIgU3BvbnRhbmVvdXMNCiAgICAgICAgICAgICAgIGFuZCBJbmR1Y2VkIEFib3J0aW9uDQppcmlzICAgICAgICAgICBFZGdhciBBbmRlcnNvbidzIElyaXMgRGF0YQ0KaXJpczMgICAgICAgICAgRWRnYXIgQW5kZXJzb24ncyBJcmlzIERhdGENCmlzbGFuZHMgICAgICAgIEFyZWFzIG9mIHRoZSBXb3JsZCdzIE1ham9yDQogICAgICAgICAgICAgICBMYW5kbWFzc2VzDQpsZGVhdGhzIChVS0x1bmdEZWF0aHMpDQogICAgICAgICAgICAgICBNb250aGx5IERlYXRocyBmcm9tIEx1bmcNCiAgICAgICAgICAgICAgIERpc2Vhc2VzIGluIHRoZSBVSw0KbGggICAgICAgICAgICAgTHV0ZWluaXppbmcgSG9ybW9uZSBpbiBCbG9vZA0KICAgICAgICAgICAgICAgU2FtcGxlcw0KbG9uZ2xleSAgICAgICAgTG9uZ2xleSdzIEVjb25vbWljIFJlZ3Jlc3Npb24NCiAgICAgICAgICAgICAgIERhdGENCmx5bnggICAgICAgICAgIEFubnVhbCBDYW5hZGlhbiBMeW54IHRyYXBwaW5ncw0KICAgICAgICAgICAgICAgMTgyMS0xOTM0DQptZGVhdGhzIChVS0x1bmdEZWF0aHMpDQogICAgICAgICAgICAgICBNb250aGx5IERlYXRocyBmcm9tIEx1bmcNCiAgICAgICAgICAgICAgIERpc2Vhc2VzIGluIHRoZSBVSw0KbW9ybGV5ICAgICAgICAgTWljaGVsc29uIFNwZWVkIG9mIExpZ2h0IERhdGENCm10Y2FycyAgICAgICAgIE1vdG9yIFRyZW5kIENhciBSb2FkIFRlc3RzDQpuaHRlbXAgICAgICAgICBBdmVyYWdlIFllYXJseSBUZW1wZXJhdHVyZXMgaW4NCiAgICAgICAgICAgICAgIE5ldyBIYXZlbg0Kbm90dGVtICAgICAgICAgQXZlcmFnZSBNb250aGx5IFRlbXBlcmF0dXJlcw0KICAgICAgICAgICAgICAgYXQgTm90dGluZ2hhbSwgMTkyMC0xOTM5DQpucGsgICAgICAgICAgICBDbGFzc2ljYWwgTiwgUCwgSyBGYWN0b3JpYWwNCiAgICAgICAgICAgICAgIEV4cGVyaW1lbnQNCm9jY3VwYXRpb25hbFN0YXR1cw0KICAgICAgICAgICAgICAgT2NjdXBhdGlvbmFsIFN0YXR1cyBvZiBGYXRoZXJzDQogICAgICAgICAgICAgICBhbmQgdGhlaXIgU29ucw0KcHJlY2lwICAgICAgICAgQW5udWFsIFByZWNpcGl0YXRpb24gaW4gVVMNCiAgICAgICAgICAgICAgIENpdGllcw0KcHJlc2lkZW50cyAgICAgUXVhcnRlcmx5IEFwcHJvdmFsIFJhdGluZ3Mgb2YNCiAgICAgICAgICAgICAgIFVTIFByZXNpZGVudHMNCnByZXNzdXJlICAgICAgIFZhcG9yIFByZXNzdXJlIG9mIE1lcmN1cnkgYXMgYQ0KICAgICAgICAgICAgICAgRnVuY3Rpb24gb2YgVGVtcGVyYXR1cmUNCnF1YWtlcyAgICAgICAgIExvY2F0aW9ucyBvZiBFYXJ0aHF1YWtlcyBvZmYNCiAgICAgICAgICAgICAgIEZpamkNCnJhbmR1ICAgICAgICAgIFJhbmRvbSBOdW1iZXJzIGZyb20NCiAgICAgICAgICAgICAgIENvbmdydWVudGlhbCBHZW5lcmF0b3IgUkFORFUNCnJpdmVycyAgICAgICAgIExlbmd0aHMgb2YgTWFqb3IgTm9ydGgNCiAgICAgICAgICAgICAgIEFtZXJpY2FuIFJpdmVycw0Kcm9jayAgICAgICAgICAgTWVhc3VyZW1lbnRzIG9uIFBldHJvbGV1bSBSb2NrDQogICAgICAgICAgICAgICBTYW1wbGVzDQpzbGVlcCAgICAgICAgICBTdHVkZW50J3MgU2xlZXAgRGF0YQ0Kc3RhY2subG9zcyAoc3RhY2tsb3NzKQ0KICAgICAgICAgICAgICAgQnJvd25sZWUncyBTdGFjayBMb3NzIFBsYW50DQogICAgICAgICAgICAgICBEYXRhDQpzdGFjay54IChzdGFja2xvc3MpDQogICAgICAgICAgICAgICBCcm93bmxlZSdzIFN0YWNrIExvc3MgUGxhbnQNCiAgICAgICAgICAgICAgIERhdGENCnN0YWNrbG9zcyAgICAgIEJyb3dubGVlJ3MgU3RhY2sgTG9zcyBQbGFudA0KICAgICAgICAgICAgICAgRGF0YQ0Kc3RhdGUuYWJiIChzdGF0ZSkNCiAgICAgICAgICAgICAgIFVTIFN0YXRlIEZhY3RzIGFuZCBGaWd1cmVzDQpzdGF0ZS5hcmVhIChzdGF0ZSkNCiAgICAgICAgICAgICAgIFVTIFN0YXRlIEZhY3RzIGFuZCBGaWd1cmVzDQpzdGF0ZS5jZW50ZXIgKHN0YXRlKQ0KICAgICAgICAgICAgICAgVVMgU3RhdGUgRmFjdHMgYW5kIEZpZ3VyZXMNCnN0YXRlLmRpdmlzaW9uIChzdGF0ZSkNCiAgICAgICAgICAgICAgIFVTIFN0YXRlIEZhY3RzIGFuZCBGaWd1cmVzDQpzdGF0ZS5uYW1lIChzdGF0ZSkNCiAgICAgICAgICAgICAgIFVTIFN0YXRlIEZhY3RzIGFuZCBGaWd1cmVzDQpzdGF0ZS5yZWdpb24gKHN0YXRlKQ0KICAgICAgICAgICAgICAgVVMgU3RhdGUgRmFjdHMgYW5kIEZpZ3VyZXMNCnN0YXRlLng3NyAoc3RhdGUpDQogICAgICAgICAgICAgICBVUyBTdGF0ZSBGYWN0cyBhbmQgRmlndXJlcw0Kc3Vuc3BvdC5tb250aA0KICAgICAgICAgICAgICAgTW9udGhseSBTdW5zcG90IERhdGEsIGZyb20NCiAgICAgICAgICAgICAgIDE3NDkgdG8gIlByZXNlbnQiDQpzdW5zcG90LnllYXIgICBZZWFybHkgU3Vuc3BvdCBEYXRhLCAxNzAwLTE5ODgNCnN1bnNwb3RzICAgICAgIE1vbnRobHkgU3Vuc3BvdCBOdW1iZXJzLA0KICAgICAgICAgICAgICAgMTc0OS0xOTgzDQpzd2lzcyAgICAgICAgICBTd2lzcyBGZXJ0aWxpdHkgYW5kDQogICAgICAgICAgICAgICBTb2Npb2Vjb25vbWljIEluZGljYXRvcnMNCiAgICAgICAgICAgICAgICgxODg4KSBEYXRhDQp0cmVlcmluZyAgICAgICBZZWFybHkgVHJlZXJpbmcgRGF0YSwNCiAgICAgICAgICAgICAgIC02MDAwLTE5NzkNCnRyZWVzICAgICAgICAgIEdpcnRoLCBIZWlnaHQgYW5kIFZvbHVtZSBmb3INCiAgICAgICAgICAgICAgIEJsYWNrIENoZXJyeSBUcmVlcw0KdXNwb3AgICAgICAgICAgUG9wdWxhdGlvbnMgUmVjb3JkZWQgYnkgdGhlIFVTDQogICAgICAgICAgICAgICBDZW5zdXMNCnZvbGNhbm8gICAgICAgIFRvcG9ncmFwaGljIEluZm9ybWF0aW9uIG9uDQogICAgICAgICAgICAgICBBdWNrbGFuZCdzIE1hdW5nYSBXaGF1IFZvbGNhbm8NCndhcnBicmVha3MgICAgIFRoZSBOdW1iZXIgb2YgQnJlYWtzIGluIFlhcm4NCiAgICAgICAgICAgICAgIGR1cmluZyBXZWF2aW5nDQp3b21lbiAgICAgICAgICBBdmVyYWdlIEhlaWdodHMgYW5kIFdlaWdodHMNCiAgICAgICAgICAgICAgIGZvciBBbWVyaWNhbiBXb21lbg0KDQoNCmBgYA0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuZHBseXLCocKvOg0KDQpgYGB7cn0NCmJhbmRfaW5zdHJ1bWVudHMNCiAgICAgICAgICAgICAgIEJhbmQgbWVtYmVyc2hpcA0KYmFuZF9pbnN0cnVtZW50czINCiAgICAgICAgICAgICAgIEJhbmQgbWVtYmVyc2hpcA0KYmFuZF9tZW1iZXJzICAgQmFuZCBtZW1iZXJzaGlwDQpuYXNhICAgICAgICAgICBOQVNBIHNwYXRpby10ZW1wb3JhbCBkYXRhDQpzdGFyd2FycyAgICAgICBTdGFyd2FycyBjaGFyYWN0ZXJzDQpzdG9ybXMgICAgICAgICBTdG9ybSB0cmFja3MgZGF0YQ0KYGBgDQoNCg0KRGF0YSBzZXRzIGluIHBhY2thZ2UgwqHCrmdnbWFwwqHCrzoNCmBgYHtyfQ0KY3JpbWUgICAgICAgICAgQ3JpbWUgZGF0YQ0KaGFkbGV5ICAgICAgICAgSGlnaGx5IHVub2ZmaWNpYWwgZ2dwbG90Mg0KICAgICAgICAgICAgICAgaW1hZ2UNCndpbmQgICAgICAgICAgIFdpbmQgZGF0YSBmcm9tIEh1cnJpY2FuZSBJa2UNCnppcHMgICAgICAgICAgIFppcCBjb2RlIGRhdGEgZm9yIHRoZSBHcmVhdGVyDQogICAgICAgICAgICAgICBIb3VzdG9uIE1ldHJvcG9saXRhbiBBcmVhIGZyb20NCiAgICAgICAgICAgICAgIHRoZSAyMDAwIGNlbnN1cw0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuZ2dwbG90MsKhwq86DQpgYGB7cn0NCmRpYW1vbmRzICAgICAgIFByaWNlcyBvZiA1MCwwMDAgcm91bmQgY3V0DQogICAgICAgICAgICAgICBkaWFtb25kcw0KZWNvbm9taWNzICAgICAgVVMgZWNvbm9taWMgdGltZSBzZXJpZXMNCmVjb25vbWljc19sb25nDQogICAgICAgICAgICAgICBVUyBlY29ub21pYyB0aW1lIHNlcmllcw0KZmFpdGhmdWxkICAgICAgMmQgZGVuc2l0eSBlc3RpbWF0ZSBvZiBPbGQNCiAgICAgICAgICAgICAgIEZhaXRoZnVsIGRhdGENCmx1dl9jb2xvdXJzICAgICdjb2xvcnMoKScgaW4gTHV2IHNwYWNlDQptaWR3ZXN0ICAgICAgICBNaWR3ZXN0IGRlbW9ncmFwaGljcw0KbXBnICAgICAgICAgICAgRnVlbCBlY29ub215IGRhdGEgZnJvbSAxOTk5DQogICAgICAgICAgICAgICBhbmQgMjAwOCBmb3IgMzggcG9wdWxhciBtb2RlbHMNCiAgICAgICAgICAgICAgIG9mIGNhcg0KbXNsZWVwICAgICAgICAgQW4gdXBkYXRlZCBhbmQgZXhwYW5kZWQNCiAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbW1hbHMgc2xlZXANCiAgICAgICAgICAgICAgIGRhdGFzZXQNCnByZXNpZGVudGlhbCAgIFRlcm1zIG9mIDExIHByZXNpZGVudHMgZnJvbQ0KICAgICAgICAgICAgICAgRWlzZW5ob3dlciB0byBPYmFtYQ0Kc2VhbHMgICAgICAgICAgVmVjdG9yIGZpZWxkIG9mIHNlYWwgbW92ZW1lbnRzDQp0eGhvdXNpbmcgICAgICBIb3VzaW5nIHNhbGVzIGluIFRYDQpgYGANCg0KDQoNCkRhdGEgc2V0cyBpbiBwYWNrYWdlIMKhwq5nb29nbGVWaXPCocKvOg0KYGBge3J9DQpBbmRyZXcgICAgICAgICBIdXJyaWNhbmUgQW5kcmV3OiBnb29nbGVWaXMNCiAgICAgICAgICAgICAgIGV4YW1wbGUgZGF0YSBzZXQNCkNhaXJvICAgICAgICAgIERhaWx5IHRlbXBlcmF0dXJlIGRhdGEgZm9yDQogICAgICAgICAgICAgICBDYWlybw0KQ2l0eVBvcHVsYXJpdHkNCiAgICAgICAgICAgICAgIENpdHlQb3B1bGFyaXR5OiBnb29nbGVWaXMNCiAgICAgICAgICAgICAgIGV4YW1wbGUgZGF0YSBzZXQNCkV4cG9ydHMgICAgICAgIEV4cG9ydHM6IGdvb2dsZVZpcyBleGFtcGxlDQogICAgICAgICAgICAgICBkYXRhIHNldA0KRnJ1aXRzICAgICAgICAgRnJ1aXRzOiBnb29nbGVWaXMgZXhhbXBsZSBkYXRhDQogICAgICAgICAgICAgICBzZXQNCk9wZW5DbG9zZSAgICAgIE9wZW5DbG9zZTogZ29vZ2xlVmlzIGV4YW1wbGUNCiAgICAgICAgICAgICAgIGRhdGEgc2V0DQpQb3B1bGF0aW9uICAgICBQb3B1bGF0aW9uOiBnb29nbGVWaXMgZXhhbXBsZQ0KICAgICAgICAgICAgICAgZGF0YSBzZXQNClJlZ2lvbnMgICAgICAgIFJlZ2lvbnM6IGdvb2dsZVZpcyBleGFtcGxlDQogICAgICAgICAgICAgICBkYXRhIHNldA0KU3RvY2sgICAgICAgICAgU3RvY2s6IGdvb2dsZVZpcyBleGFtcGxlIGRhdGENCiAgICAgICAgICAgICAgIHNldA0KZGlubyAgICAgICAgICAgRGlub3NhdXIgZGF0YQ0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuaGZsaWdodHPCocKvOg0KYGBge3J9DQpoZmxpZ2h0cyAgICAgICBIb3VzdG9uIGZsaWdodHMgZGF0YQ0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuTUFTU8Khwq86DQpgYGB7cn0NCkFpZHMyICAgICAgICAgIEF1c3RyYWxpYW4gQUlEUyBTdXJ2aXZhbCBEYXRhDQpBbmltYWxzICAgICAgICBCcmFpbiBhbmQgQm9keSBXZWlnaHRzIGZvciAyOA0KICAgICAgICAgICAgICAgU3BlY2llcw0KQm9zdG9uICAgICAgICAgSG91c2luZyBWYWx1ZXMgaW4gU3VidXJicyBvZg0KICAgICAgICAgICAgICAgQm9zdG9uDQpDYXJzOTMgICAgICAgICBEYXRhIGZyb20gOTMgQ2FycyBvbiBTYWxlIGluDQogICAgICAgICAgICAgICB0aGUgVVNBIGluIDE5OTMNCkN1c2hpbmdzICAgICAgIERpYWdub3N0aWMgVGVzdHMgb24gUGF0aWVudHMNCiAgICAgICAgICAgICAgIHdpdGggQ3VzaGluZydzIFN5bmRyb21lDQpERFQgICAgICAgICAgICBERFQgaW4gS2FsZQ0KR0FHdXJpbmUgICAgICAgTGV2ZWwgb2YgR0FHIGluIFVyaW5lIG9mDQogICAgICAgICAgICAgICBDaGlsZHJlbg0KSW5zdXJhbmNlICAgICAgTnVtYmVycyBvZiBDYXIgSW5zdXJhbmNlDQogICAgICAgICAgICAgICBjbGFpbXMNCk1lbGFub21hICAgICAgIFN1cnZpdmFsIGZyb20gTWFsaWduYW50DQogICAgICAgICAgICAgICBNZWxhbm9tYQ0KT01FICAgICAgICAgICAgVGVzdHMgb2YgQXVkaXRvcnkgUGVyY2VwdGlvbg0KICAgICAgICAgICAgICAgaW4gQ2hpbGRyZW4gd2l0aCBPTUUNClBpbWEudGUgICAgICAgIERpYWJldGVzIGluIFBpbWEgSW5kaWFuIFdvbWVuDQpQaW1hLnRyICAgICAgICBEaWFiZXRlcyBpbiBQaW1hIEluZGlhbiBXb21lbg0KUGltYS50cjIgICAgICAgRGlhYmV0ZXMgaW4gUGltYSBJbmRpYW4gV29tZW4NClJhYmJpdCAgICAgICAgIEJsb29kIFByZXNzdXJlIGluIFJhYmJpdHMNClJ1YmJlciAgICAgICAgIEFjY2VsZXJhdGVkIFRlc3Rpbmcgb2YgVHlyZQ0KICAgICAgICAgICAgICAgUnViYmVyDQpTUDUwMCAgICAgICAgICBSZXR1cm5zIG9mIHRoZSBTdGFuZGFyZCBhbmQNCiAgICAgICAgICAgICAgIFBvb3JzIDUwMA0KU2l0a2EgICAgICAgICAgR3Jvd3RoIEN1cnZlcyBmb3IgU2l0a2EgU3BydWNlDQogICAgICAgICAgICAgICBUcmVlcyBpbiAxOTg4DQpTaXRrYTg5ICAgICAgICBHcm93dGggQ3VydmVzIGZvciBTaXRrYSBTcHJ1Y2UNCiAgICAgICAgICAgICAgIFRyZWVzIGluIDE5ODkNClNreWUgICAgICAgICAgIEFGTSBDb21wb3NpdGlvbnMgb2YgQXBoeXJpYw0KICAgICAgICAgICAgICAgU2t5ZSBMYXZhcw0KVHJhZmZpYyAgICAgICAgRWZmZWN0IG9mIFN3ZWRpc2ggU3BlZWQgTGltaXRzDQogICAgICAgICAgICAgICBvbiBBY2NpZGVudHMNClVTY2VyZWFsICAgICAgIE51dHJpdGlvbmFsIGFuZCBNYXJrZXRpbmcNCiAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG9uIFVTIENlcmVhbHMNClVTY3JpbWUgICAgICAgIFRoZSBFZmZlY3Qgb2YgUHVuaXNobWVudA0KICAgICAgICAgICAgICAgUmVnaW1lcyBvbiBDcmltZSBSYXRlcw0KVkEgICAgICAgICAgICAgVmV0ZXJhbidzIEFkbWluaXN0cmF0aW9uIEx1bmcNCiAgICAgICAgICAgICAgIENhbmNlciBUcmlhbA0KYWJiZXkgICAgICAgICAgRGV0ZXJtaW5hdGlvbnMgb2YgTmlja2VsDQogICAgICAgICAgICAgICBDb250ZW50DQphY2NkZWF0aHMgICAgICBBY2NpZGVudGFsIERlYXRocyBpbiB0aGUgVVMNCiAgICAgICAgICAgICAgIDE5NzMtMTk3OA0KYW5vcmV4aWEgICAgICAgQW5vcmV4aWEgRGF0YSBvbiBXZWlnaHQgQ2hhbmdlDQpiYWN0ZXJpYSAgICAgICBQcmVzZW5jZSBvZiBCYWN0ZXJpYSBhZnRlcg0KICAgICAgICAgICAgICAgRHJ1ZyBUcmVhdG1lbnRzDQpiZWF2MSAgICAgICAgICBCb2R5IFRlbXBlcmF0dXJlIFNlcmllcyBvZg0KICAgICAgICAgICAgICAgQmVhdmVyIDENCmJlYXYyICAgICAgICAgIEJvZHkgVGVtcGVyYXR1cmUgU2VyaWVzIG9mDQogICAgICAgICAgICAgICBCZWF2ZXIgMg0KYmlvcHN5ICAgICAgICAgQmlvcHN5IERhdGEgb24gQnJlYXN0IENhbmNlcg0KICAgICAgICAgICAgICAgUGF0aWVudHMNCmJpcnRod3QgICAgICAgIFJpc2sgRmFjdG9ycyBBc3NvY2lhdGVkIHdpdGgNCiAgICAgICAgICAgICAgIExvdyBJbmZhbnQgQmlydGggV2VpZ2h0DQpjYWJiYWdlcyAgICAgICBEYXRhIGZyb20gYSBjYWJiYWdlIGZpZWxkDQogICAgICAgICAgICAgICB0cmlhbA0KY2FpdGggICAgICAgICAgQ29sb3VycyBvZiBFeWVzIGFuZCBIYWlyIG9mDQogICAgICAgICAgICAgICBQZW9wbGUgaW4gQ2FpdGhuZXNzDQpjYXRzICAgICAgICAgICBBbmF0b21pY2FsIERhdGEgZnJvbSBEb21lc3RpYw0KICAgICAgICAgICAgICAgQ2F0cw0KY2VtZW50ICAgICAgICAgSGVhdCBFdm9sdmVkIGJ5IFNldHRpbmcNCiAgICAgICAgICAgICAgIENlbWVudHMNCmNoZW0gICAgICAgICAgIENvcHBlciBpbiBXaG9sZW1lYWwgRmxvdXINCmNvb3AgICAgICAgICAgIENvLW9wZXJhdGl2ZSBUcmlhbCBpbg0KICAgICAgICAgICAgICAgQW5hbHl0aWNhbCBDaGVtaXN0cnkNCmNwdXMgICAgICAgICAgIFBlcmZvcm1hbmNlIG9mIENvbXB1dGVyIENQVXMNCmNyYWJzICAgICAgICAgIE1vcnBob2xvZ2ljYWwgTWVhc3VyZW1lbnRzIG9uDQogICAgICAgICAgICAgICBMZXB0b2dyYXBzdXMgQ3JhYnMNCmRlYXRocyAgICAgICAgIE1vbnRobHkgRGVhdGhzIGZyb20gTHVuZw0KICAgICAgICAgICAgICAgRGlzZWFzZXMgaW4gdGhlIFVLDQpkcml2ZXJzICAgICAgICBEZWF0aHMgb2YgQ2FyIERyaXZlcnMgaW4gR3JlYXQNCiAgICAgICAgICAgICAgIEJyaXRhaW4gMTk2OS04NA0KZWFnbGVzICAgICAgICAgRm9yYWdpbmcgRWNvbG9neSBvZiBCYWxkDQogICAgICAgICAgICAgICBFYWdsZXMNCmVwaWwgICAgICAgICAgIFNlaXp1cmUgQ291bnRzIGZvciBFcGlsZXB0aWNzDQpmYXJtcyAgICAgICAgICBFY29sb2dpY2FsIEZhY3RvcnMgaW4gRmFybQ0KICAgICAgICAgICAgICAgTWFuYWdlbWVudA0KZmdsICAgICAgICAgICAgTWVhc3VyZW1lbnRzIG9mIEZvcmVuc2ljIEdsYXNzDQogICAgICAgICAgICAgICBGcmFnbWVudHMNCmZvcmJlcyAgICAgICAgIEZvcmJlcycgRGF0YSBvbiBCb2lsaW5nIFBvaW50cw0KICAgICAgICAgICAgICAgaW4gdGhlIEFscHMNCmdhbGF4aWVzICAgICAgIFZlbG9jaXRpZXMgZm9yIDgyIEdhbGF4aWVzDQpnZWhhbiAgICAgICAgICBSZW1pc3Npb24gVGltZXMgb2YgTGV1a2FlbWlhDQogICAgICAgICAgICAgICBQYXRpZW50cw0KZ2Vub3R5cGUgICAgICAgUmF0IEdlbm90eXBlIERhdGENCmdleXNlciAgICAgICAgIE9sZCBGYWl0aGZ1bCBHZXlzZXIgRGF0YQ0KZ2lsZ2FpcyAgICAgICAgTGluZSBUcmFuc2VjdCBvZiBTb2lsIGluDQogICAgICAgICAgICAgICBHaWxnYWkgVGVycml0b3J5DQpoaWxscyAgICAgICAgICBSZWNvcmQgVGltZXMgaW4gU2NvdHRpc2ggSGlsbA0KICAgICAgICAgICAgICAgUmFjZXMNCmhvdXNpbmcgICAgICAgIEZyZXF1ZW5jeSBUYWJsZSBmcm9tIGENCiAgICAgICAgICAgICAgIENvcGVuaGFnZW4gSG91c2luZyBDb25kaXRpb25zDQogICAgICAgICAgICAgICBTdXJ2ZXkNCmltbWVyICAgICAgICAgIFlpZWxkcyBmcm9tIGEgQmFybGV5IEZpZWxkDQogICAgICAgICAgICAgICBUcmlhbA0KbGV1ayAgICAgICAgICAgU3Vydml2YWwgVGltZXMgYW5kIFdoaXRlIEJsb29kDQogICAgICAgICAgICAgICBDb3VudHMgZm9yIExldWthZW1pYSBQYXRpZW50cw0KbWFtbWFscyAgICAgICAgQnJhaW4gYW5kIEJvZHkgV2VpZ2h0cyBmb3IgNjINCiAgICAgICAgICAgICAgIFNwZWNpZXMgb2YgTGFuZCBNYW1tYWxzDQptY3ljbGUgICAgICAgICBEYXRhIGZyb20gYSBTaW11bGF0ZWQNCiAgICAgICAgICAgICAgIE1vdG9yY3ljbGUgQWNjaWRlbnQNCm1lbmFyY2hlICAgICAgIEFnZSBvZiBNZW5hcmNoZSBpbiBXYXJzYXcNCm1pY2hlbHNvbiAgICAgIE1pY2hlbHNvbidzIFNwZWVkIG9mIExpZ2h0DQogICAgICAgICAgICAgICBEYXRhDQptaW5uMzggICAgICAgICBNaW5uZXNvdGEgSGlnaCBTY2hvb2wNCiAgICAgICAgICAgICAgIEdyYWR1YXRlcyBvZiAxOTM4DQptb3RvcnMgICAgICAgICBBY2NlbGVyYXRlZCBMaWZlIFRlc3Rpbmcgb2YNCiAgICAgICAgICAgICAgIE1vdG9yZXR0ZXMNCm11c2NsZSAgICAgICAgIEVmZmVjdCBvZiBDYWxjaXVtIENobG9yaWRlIG9uDQogICAgICAgICAgICAgICBNdXNjbGUgQ29udHJhY3Rpb24gaW4gUmF0DQogICAgICAgICAgICAgICBIZWFydHMNCm5ld2NvbWIgICAgICAgIE5ld2NvbWIncyBNZWFzdXJlbWVudHMgb2YgdGhlDQogICAgICAgICAgICAgICBQYXNzYWdlIFRpbWUgb2YgTGlnaHQNCm5sc2Nob29scyAgICAgIEVpZ2h0aC1HcmFkZSBQdXBpbHMgaW4gdGhlDQogICAgICAgICAgICAgICBOZXRoZXJsYW5kcw0KbnBrICAgICAgICAgICAgQ2xhc3NpY2FsIE4sIFAsIEsgRmFjdG9yaWFsDQogICAgICAgICAgICAgICBFeHBlcmltZW50DQpucHIxICAgICAgICAgICBVUyBOYXZhbCBQZXRyb2xldW0gUmVzZXJ2ZSBOby4NCiAgICAgICAgICAgICAgIDEgZGF0YQ0Kb2F0cyAgICAgICAgICAgRGF0YSBmcm9tIGFuIE9hdHMgRmllbGQgVHJpYWwNCnBhaW50ZXJzICAgICAgIFRoZSBQYWludGVyJ3MgRGF0YSBvZiBkZSBQaWxlcw0KcGV0cm9sICAgICAgICAgTi4gTC4gUHJhdGVyJ3MgUGV0cm9sIFJlZmluZXJ5DQogICAgICAgICAgICAgICBEYXRhDQpwaG9uZXMgICAgICAgICBCZWxnaXVtIFBob25lIENhbGxzIDE5NTAtMTk3Mw0KcXVpbmUgICAgICAgICAgQWJzZW50ZWVpc20gZnJvbSBTY2hvb2wgaW4NCiAgICAgICAgICAgICAgIFJ1cmFsIE5ldyBTb3V0aCBXYWxlcw0Kcm9hZCAgICAgICAgICAgUm9hZCBBY2NpZGVudCBEZWF0aHMgaW4gVVMNCiAgICAgICAgICAgICAgIFN0YXRlcw0Kcm90aWZlciAgICAgICAgTnVtYmVycyBvZiBSb3RpZmVycyBieSBGbHVpZA0KICAgICAgICAgICAgICAgRGVuc2l0eQ0Kc2hpcHMgICAgICAgICAgU2hpcHMgRGFtYWdlIERhdGENCnNob2VzICAgICAgICAgIFNob2Ugd2VhciBkYXRhIG9mIEJveCwgSHVudGVyDQogICAgICAgICAgICAgICBhbmQgSHVudGVyDQpzaHJpbXAgICAgICAgICBQZXJjZW50YWdlIG9mIFNocmltcCBpbiBTaHJpbXANCiAgICAgICAgICAgICAgIENvY2t0YWlsDQpzaHV0dGxlICAgICAgICBTcGFjZSBTaHV0dGxlIEF1dG9sYW5kZXINCiAgICAgICAgICAgICAgIFByb2JsZW0NCnNuYWlscyAgICAgICAgIFNuYWlsIE1vcnRhbGl0eSBEYXRhDQpzdGVhbSAgICAgICAgICBUaGUgU2F0dXJhdGVkIFN0ZWFtIFByZXNzdXJlDQogICAgICAgICAgICAgICBEYXRhDQpzdG9ybWVyICAgICAgICBUaGUgU3Rvcm1lciBWaXNjb21ldGVyIERhdGENCnN1cnZleSAgICAgICAgIFN0dWRlbnQgU3VydmV5IERhdGENCnN5bnRoLnRlICAgICAgIFN5bnRoZXRpYyBDbGFzc2lmaWNhdGlvbg0KICAgICAgICAgICAgICAgUHJvYmxlbQ0Kc3ludGgudHIgICAgICAgU3ludGhldGljIENsYXNzaWZpY2F0aW9uDQogICAgICAgICAgICAgICBQcm9ibGVtDQp0b3BvICAgICAgICAgICBTcGF0aWFsIFRvcG9ncmFwaGljIERhdGENCndhZGVycyAgICAgICAgIENvdW50cyBvZiBXYWRlcnMgYXQgMTUgU2l0ZXMNCiAgICAgICAgICAgICAgIGluIFNvdXRoIEFmcmljYQ0Kd2hpdGVzaWRlICAgICAgSG91c2UgSW5zdWxhdGlvbjogV2hpdGVzaWRlJ3MNCiAgICAgICAgICAgICAgIERhdGENCnd0bG9zcyAgICAgICAgIFdlaWdodCBMb3NzIERhdGEgZnJvbSBhbiBPYmVzZQ0KICAgICAgICAgICAgICAgUGF0aWVudA0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKucGx5csKhwq86DQpgYGB7cn0NCmJhc2ViYWxsICAgICAgIFllYXJseSBiYXR0aW5nIHJlY29yZHMgZm9yIGFsbA0KICAgICAgICAgICAgICAgbWFqb3IgbGVhZ3VlIGJhc2ViYWxsIHBsYXllcnMNCm96b25lICAgICAgICAgIE1vbnRobHkgb3pvbmUgbWVhc3VyZW1lbnRzDQogICAgICAgICAgICAgICBvdmVyIENlbnRyYWwgQW1lcmljYS4NCmBgYA0KDQoNCg0KRGF0YSBzZXRzIGluIHBhY2thZ2UgwqHCrnJlc2hhcGXCocKvOg0KYGBge3J9DQpmcmVuY2hfZnJpZXMgICBTZW5zb3J5IGRhdGEgZnJvbSBhIGZyZW5jaA0KICAgICAgICAgICAgICAgZnJpZXMgZXhwZXJpbWVudA0Kc21pdGhzICAgICAgICAgRGVtbyBkYXRhIGRlc2NyaWJpbmcgdGhlDQogICAgICAgICAgICAgICBTbWl0aHMNCnRpcHMgICAgICAgICAgIFRpcHBpbmcgZGF0YQ0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuUkdBwqHCrzoNCmBgYHtyfQ0KZ2EgICAgICAgICAgICAgTGlzdHMgYWxsIGNvbHVtbnMgZm9yIGEgR29vZ2xlDQogICAgICAgICAgICAgICBBbmFseXRpY3MgY29yZSByZXBvcnQgdHlwZQ0KYGBgDQoNCg0KDQpEYXRhIHNldHMgaW4gcGFja2FnZSDCocKuc3RyaW5ncsKhwq86DQpgYGB7cn0NCmZydWl0ICAgICAgICAgIFNhbXBsZSBjaGFyYWN0ZXIgdmVjdG9ycyBmb3INCiAgICAgICAgICAgICAgIHByYWN0aWNpbmcgc3RyaW5nDQogICAgICAgICAgICAgICBtYW5pcHVsYXRpb25zLg0Kc2VudGVuY2VzICAgICAgU2FtcGxlIGNoYXJhY3RlciB2ZWN0b3JzIGZvcg0KICAgICAgICAgICAgICAgcHJhY3RpY2luZyBzdHJpbmcNCiAgICAgICAgICAgICAgIG1hbmlwdWxhdGlvbnMuDQp3b3JkcyAgICAgICAgICBTYW1wbGUgY2hhcmFjdGVyIHZlY3RvcnMgZm9yDQogICAgICAgICAgICAgICBwcmFjdGljaW5nIHN0cmluZw0KICAgICAgICAgICAgICAgbWFuaXB1bGF0aW9ucy4NCmBgYA0KDQoNCg0KRGF0YSBzZXRzIGluIHBhY2thZ2UgwqHCrndvcmRjbG91ZMKhwq86DQpgYGB7cn0NClNPVFUgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgU3RhdGUgb2YgdGhlDQogICAgICAgICAgICAgICBVbmlvbiBBZGRyZXNzZXMgKDIwMTAgYW5kDQogICAgICAgICAgICAgICAyMDExKQ0KYGBgDQoNCg0KDQpgYGB7cn0NClVzZSDCocKuZGF0YShwYWNrYWdlID0gLnBhY2thZ2VzKGFsbC5hdmFpbGFibGUgPSBUUlVFKSnCocKvDQp0byBsaXN0IHRoZSBkYXRhIHNldHMgaW4gYWxsICphdmFpbGFibGUqIHBhY2thZ2VzLg0KYGBgDQoNCg0KDQoNCg0KDQpBZGQgYSBuZXcgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpJbnNlcnQgQ2h1bmsqIGJ1dHRvbiBvbiB0aGUgdG9vbGJhciBvciBieSBwcmVzc2luZyAqQ3RybCtBbHQrSSouDQoNCldoZW4geW91IHNhdmUgdGhlIG5vdGVib29rLCBhbiBIVE1MIGZpbGUgY29udGFpbmluZyB0aGUgY29kZSBhbmQgb3V0cHV0IHdpbGwgYmUgc2F2ZWQgYWxvbmdzaWRlIGl0IChjbGljayB0aGUgKlByZXZpZXcqIGJ1dHRvbiBvciBwcmVzcyAqQ3RybCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLg0KDQpUaGUgcHJldmlldyBzaG93cyB5b3UgYSByZW5kZXJlZCBIVE1MIGNvcHkgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBlZGl0b3IuIENvbnNlcXVlbnRseSwgdW5saWtlICpLbml0KiwgKlByZXZpZXcqIGRvZXMgbm90IHJ1biBhbnkgUiBjb2RlIGNodW5rcy4gSW5zdGVhZCwgdGhlIG91dHB1dCBvZiB0aGUgY2h1bmsgd2hlbiBpdCB3YXMgbGFzdCBydW4gaW4gdGhlIGVkaXRvciBpcyBkaXNwbGF5ZWQuDQo=