• 1 Exploratory time series data analysis
    • 1.1 Introduction
      • 1.1.1 Exploring raw time series
      • 1.1.2 Basic time series plots
      • 1.1.3 What does the time index tell us?
    • 1.2 Sampling frequency
      • 1.2.1 Identifying the sampling frequency
      • 1.2.2 When is the sampling frequency exact?
      • 1.2.3 Missing values
    • 1.3 Basic time series objects
      • 1.3.1 Creating a time series object with ts()
      • 1.3.2 Testing whether an object is a time series
      • 1.3.3 Plotting a time series object
  • 2 Predicting the future
    • 2.1 Trend spotting!
      • 2.1.1 Removing trends in variability via the logarithmic transformation
      • 2.1.2 Removing trends in level by differencing
      • 2.1.3 Removing seasonal trends with seasonal differencing
    • 2.2 The white noise (WN) model
      • 2.2.1 Simulate the white noise model
      • 2.2.2 Estimate the white noise model
    • 2.3 The random walk (RW) model
      • 2.3.1 Simulate the random walk model
      • 2.3.2 Simulate the random walk model with a drift
      • 2.3.3 Estimate the random walk model
    • 2.4 Stationary processes
      • 2.4.1 Are the white noise model or the random walk model stationary?
  • 3 Correlation analysis and the autocorrelation function
    • 3.1 Scatterplots
      • 3.1.1 Asset prices vs. asset returns
      • 3.1.2 Characteristics of financial time series
      • 3.1.3 Plotting pairs of data
    • 3.2 Covariance and correlation
      • 3.2.1 Calculating sample covariances and correlations
    • 3.3 Autocorrelation
      • 3.3.1 Calculating autocorrelations
      • 3.3.2 The autocorrelation function
      • 3.3.3 Visualizing the autocorrelation function
  • 4 Autoregression
    • 4.1 The autoregressive model
      • 4.1.1 Simulate the autoregressive model
      • 4.1.2 Estimate the autocorrelation function (ACF) for an autoregression
      • 4.1.3 Persistence and anti-persistence
      • 4.1.4 Compare the random walk (RW) and autoregressive (AR) models
    • 4.2 AR model estimation and forecasting
      • 4.2.1 Estimate the autoregressive (AR) model
      • 4.2.2 Simple forecasts from an estimated AR mode
    • 4.3 The simple moving average model
      • 4.3.1 Simulate the simple moving average model
      • 4.3.2 Estimate the autocorrelation function (ACF) for a moving average
    • 4.4 MA model estimation and forecasting
      • 4.4.1 Estimate the simple moving average model
      • 4.4.2 Simple forecasts from an estimated MA model
    • 4.5 Compare AR and MA models
      • 4.5.1 AR vs MA models

1 Exploratory time series data analysis

1.1 Introduction

1.1.1 Exploring raw time series

The most common first step when conducting time series analysis is to display your time series dataset in a visually intuitive format. The most useful way to view raw time series data in R is to use the print() command, which displays the Start, End, and Frequency of your data along with the observations.

Another useful command for viewing time series data in R is the length() function, which tells you the total number of observations in your data.

Some datasets are very long, and previewing a subset of data is more suitable than displaying the entire series. The head(, n =) and tail(, n =) functions, in which n is the number of items to display, focus on the first and last few elements of a given dataset respectively.

In this exercise, you’ll explore the famous River Nile annual streamflow data, Nile. This time series dataset includes some metadata information. When calling print(Nile), note that Start = 1871 indicates that 1871 is the year of the first annual observation, and End = 1970 indicates 1970 is the year of the last annual observation.

# Print the Nile dataset
print(Nile)
Time Series:
Start = 1871 
End = 1970 
Frequency = 1 
  [1] 1120 1160  963 1210 1160 1160  813 1230 1370 1140  995  935 1110  994
 [15] 1020  960 1180  799  958 1140 1100 1210 1150 1250 1260 1220 1030 1100
 [29]  774  840  874  694  940  833  701  916  692 1020 1050  969  831  726
 [43]  456  824  702 1120 1100  832  764  821  768  845  864  862  698  845
 [57]  744  796 1040  759  781  865  845  944  984  897  822 1010  771  676
 [71]  649  846  812  742  801 1040  860  874  848  890  744  749  838 1050
 [85]  918  986  797  923  975  815 1020  906  901 1170  912  746  919  718
 [99]  714  740
# List the number of observations in the Nile dataset
length(Nile)
[1] 100
# Display the first 10 elements of the Nile dataset
head(Nile, n = 10)
 [1] 1120 1160  963 1210 1160 1160  813 1230 1370 1140
# Display the last 12 elements of the Nile dataset
tail(Nile, n = 12)
 [1]  975  815 1020  906  901 1170  912  746  919  718  714  740

1.1.2 Basic time series plots

While simple commands such as print(), length(), head(), and tail() provide crucial information about your time series data, another very useful way to explore any data is to generate a plot.

In this exercise, you will plot the River Nile annual streamflow data using the plot() function. For time series data objects such as Nile, a Time index for the horizontal axis is typically included. From the previous exercise, you know that this data spans from 1871 to 1970, and horizontal tick marks are labeled as such. The default label of “Time” is not very informative. Since these data are annual measurements, you should use the label “Year”. While you’re at it, you should change the vertical axis label to “River Volume (1e9 m^{3})”.

Additionally, it helps to have an informative title, which can be set using the argument main. For your purposes, a useful title for this figure would be “Annual River Nile Volume at Aswan, 1871-1970”.

Finally, the default plotting type for time series objects is “l” for line. Connecting consecutive observations can help make a time series plot more interpretable. Sometimes it is also useful to include both the observations points as well as the lines, and we instead use “b” for both.

# Plot the Nile data with xlab, ylab, main, and type arguments
plot(Nile, type = "b", xlab = "Year", ylab = "River Volume (1e9 m^{3})", main = "Annual River Nile Volume at Aswan, 1871-1970")

The plot() command is one of the most versatile commands in R. When used with time series data, this command automatically plots your data over time.

1.1.3 What does the time index tell us?

Some data are naturally evenly spaced by time. The time series discrete_data shown in the top figure has 20 observations, with one observation appearing at each of the discrete time indices 1 through 20. Discrete time indexing is appropriate for discrete_data.

The time series continuous_series shown in the bottom figure also has 20 observations, it is following the same periodic pattern as discrete_data, but its observations are not evenly spaced. Its first, second, and last observations were observed at times 1.210322, 1.746137, and 20.180524, respectively. Continuous time indexing is natural for continuous_series, however, the observations are approximately evenly spaced, with about 1 observation observed per time unit. Let’s investigate using a discrete time indexing for continuous_series.


discrete_time_index <- c(1:20)

plot(continuous_time_index, discrete_data, type = "b")

plot(discrete_time_index, discrete_data, type = "b")

# Plot the continuous_series using continuous time indexing
par(mfrow=c(2,1))
plot(continuous_time_index,continuous_series, type = "b")

# Make a discrete time index using 1:20 
discrete_time_index <- c(1:20)

# Now plot the continuous_series using discrete time indexing
plot(discrete_time_index,continuous_series, type = "b")

1.2 Sampling frequency

1.2.1 Identifying the sampling frequency

In addition to viewing your data and plotting over time, there are several additional operations that can be performed on time series datasets.

The start() and end() functions return the time index of the first and last observations, respectively. The time() function calculates a vector of time indices, with one element for each time index on which the series was observed.

The deltat() function returns the fixed time interval between observations and the frequency() function returns the number of observations per unit time. Finally, the cycle() function returns the position in the cycle of each observation.

In this exercise, you’ll practice applying these functions to the AirPassengers dataset, which reports the monthly total international airline passengers (in thousands) from 1949 to 1960.

# Plot AirPassengers
plot(AirPassengers)


# View the start and end dates of AirPassengers
start(AirPassengers)
[1] 1949    1
end(AirPassengers)
[1] 1960   12
# Use time(), deltat(), frequency(), and cycle() with AirPassengers 
time(AirPassengers)
          Jan      Feb      Mar      Apr      May      Jun      Jul
1949 1949.000 1949.083 1949.167 1949.250 1949.333 1949.417 1949.500
1950 1950.000 1950.083 1950.167 1950.250 1950.333 1950.417 1950.500
1951 1951.000 1951.083 1951.167 1951.250 1951.333 1951.417 1951.500
1952 1952.000 1952.083 1952.167 1952.250 1952.333 1952.417 1952.500
1953 1953.000 1953.083 1953.167 1953.250 1953.333 1953.417 1953.500
1954 1954.000 1954.083 1954.167 1954.250 1954.333 1954.417 1954.500
1955 1955.000 1955.083 1955.167 1955.250 1955.333 1955.417 1955.500
1956 1956.000 1956.083 1956.167 1956.250 1956.333 1956.417 1956.500
1957 1957.000 1957.083 1957.167 1957.250 1957.333 1957.417 1957.500
1958 1958.000 1958.083 1958.167 1958.250 1958.333 1958.417 1958.500
1959 1959.000 1959.083 1959.167 1959.250 1959.333 1959.417 1959.500
1960 1960.000 1960.083 1960.167 1960.250 1960.333 1960.417 1960.500
          Aug      Sep      Oct      Nov      Dec
1949 1949.583 1949.667 1949.750 1949.833 1949.917
1950 1950.583 1950.667 1950.750 1950.833 1950.917
1951 1951.583 1951.667 1951.750 1951.833 1951.917
1952 1952.583 1952.667 1952.750 1952.833 1952.917
1953 1953.583 1953.667 1953.750 1953.833 1953.917
1954 1954.583 1954.667 1954.750 1954.833 1954.917
1955 1955.583 1955.667 1955.750 1955.833 1955.917
1956 1956.583 1956.667 1956.750 1956.833 1956.917
1957 1957.583 1957.667 1957.750 1957.833 1957.917
1958 1958.583 1958.667 1958.750 1958.833 1958.917
1959 1959.583 1959.667 1959.750 1959.833 1959.917
1960 1960.583 1960.667 1960.750 1960.833 1960.917
deltat(AirPassengers)
[1] 0.08333333
frequency(AirPassengers)
[1] 12
cycle(AirPassengers)
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949   1   2   3   4   5   6   7   8   9  10  11  12
1950   1   2   3   4   5   6   7   8   9  10  11  12
1951   1   2   3   4   5   6   7   8   9  10  11  12
1952   1   2   3   4   5   6   7   8   9  10  11  12
1953   1   2   3   4   5   6   7   8   9  10  11  12
1954   1   2   3   4   5   6   7   8   9  10  11  12
1955   1   2   3   4   5   6   7   8   9  10  11  12
1956   1   2   3   4   5   6   7   8   9  10  11  12
1957   1   2   3   4   5   6   7   8   9  10  11  12
1958   1   2   3   4   5   6   7   8   9  10  11  12
1959   1   2   3   4   5   6   7   8   9  10  11  12
1960   1   2   3   4   5   6   7   8   9  10  11  12

These commands provide considerable descriptive information about the structures and patterns in your time series data. It may help to keep these commands handy when working with your own time series data.

1.2.2 When is the sampling frequency exact?

The sampling frequency is often only approximate and the interval between observations is not quite a fixed unit. For example, there are usually 365 days in a year based on the Gregorian calendar. However, (almost) every four years there are 366 days (leap years). This compensates for the fact that the Earth completes a rotation around Sol, the sun, in approximately 365.2422 days, on average.

As a simplifying assumption, we often ignore these small discrepancies and proceed as though the sampling frequency and observation intervals are fixed constants. Typically, our results will not be sensitive to approximation when the underlying process is not changing too quickly.

1.2.3 Missing values

Sometimes there are missing values in time series data, denoted NA in R, and it is useful to know their locations. It is also important to know how missing values are handled by various R functions. Sometimes we may want to ignore any missingness, but other times we may wish to impute or estimate the missing values.

Let’s again consider the monthly AirPassengers dataset, but now the data for the year 1956 are missing. In this exercise, you’ll explore the implications of this missing data and impute some new data to solve the problem.

The mean() function calculates the sample mean, but it fails in the presence of any NA values. Use mean(___, na.rm = TRUE) to calculate the mean with all missing values removed. It is common to replace missing values with the mean of the observed values. Does this simple data imputation scheme appear adequate when applied the the AirPassengers dataset?

# Plot the AirPassengers data
plot(AirPassengers_NA)


# Compute the mean of AirPassengers
mean(AirPassengers_NA, na.rm = TRUE)
[1] 275.9394
# Impute mean values to NA in AirPassengers
AirPassengers_NA[85:96] <- mean(AirPassengers_NA, na.rm = TRUE)

# Generate another plot of AirPassengers
plot(AirPassengers_NA)

# Add the complete AirPassengers data to your plot
#rm(AirPassengers_NA)
points(AirPassengers_NA, type = "l", col = 2, lty = 3)

AirPassengers_NA
          Jan      Feb      Mar      Apr      May      Jun      Jul
1949 112.0000 118.0000 132.0000 129.0000 121.0000 135.0000 148.0000
1950 115.0000 126.0000 141.0000 135.0000 125.0000 149.0000 170.0000
1951 145.0000 150.0000 178.0000 163.0000 172.0000 178.0000 199.0000
1952 171.0000 180.0000 193.0000 181.0000 183.0000 218.0000 230.0000
1953 196.0000 196.0000 236.0000 235.0000 229.0000 243.0000 264.0000
1954 204.0000 188.0000 235.0000 227.0000 234.0000 264.0000 302.0000
1955 242.0000 233.0000 267.0000 269.0000 270.0000 315.0000 364.0000
1956 275.9394 275.9394 275.9394 275.9394 275.9394 275.9394 275.9394
1957 315.0000 301.0000 356.0000 348.0000 355.0000 422.0000 465.0000
1958 340.0000 318.0000 362.0000 348.0000 363.0000 435.0000 491.0000
1959 360.0000 342.0000 406.0000 396.0000 420.0000 472.0000 548.0000
1960 417.0000 391.0000 419.0000 461.0000 472.0000 535.0000 622.0000
          Aug      Sep      Oct      Nov      Dec
1949 148.0000 136.0000 119.0000 104.0000 118.0000
1950 170.0000 158.0000 133.0000 114.0000 140.0000
1951 199.0000 184.0000 162.0000 146.0000 166.0000
1952 242.0000 209.0000 191.0000 172.0000 194.0000
1953 272.0000 237.0000 211.0000 180.0000 201.0000
1954 293.0000 259.0000 229.0000 203.0000 229.0000
1955 347.0000 312.0000 274.0000 237.0000 278.0000
1956 275.9394 275.9394 275.9394 275.9394 275.9394
1957 467.0000 404.0000 347.0000 305.0000 336.0000
1958 505.0000 404.0000 359.0000 310.0000 337.0000
1959 559.0000 463.0000 407.0000 362.0000 405.0000
1960 606.0000 508.0000 461.0000 390.0000 432.0000

Based on your plot, it seems that simple data imputation using the mean is not a great method to approximate what’s really going on in the AirPassengers data.

1.3 Basic time series objects

1.3.1 Creating a time series object with ts()

The function ts() can be applied to create time series objects. A time series object is a vector (univariate) or matrix (multivariate) with additional attributes, including time indices for each observation, the sampling frequency and time increment between observations, and the cycle length for periodic data. Such objects are of the ts class, and represent data that has been observed at (approximately) equally spaced time points. Now you will create time series objects yourself.

The advantage of creating and working with time series objects of the ts class is that many methods are available for utilizing time series attributes, such as time index information. For example, as you’ve seen in earlier exercises, calling plot() on a ts object will automatically generate a plot over time.

In this exercise, you’ll familiarize yourself with the ts class by encoding some time series data (saved as data_vector) into ts and exploring the result. Your time series data_vector starts in the year 2004 and has 4 observations per year (i.e. it is quarterly data).

# Use print() and plot() to view data_vector
print(data_vector)
 [1]  2.0521941073  4.2928852797  3.3294132944  3.5085950670  0.0009576938
 [6]  1.9217186345  0.7978134128  0.2999543435  0.9435687536  0.5748283388
[11] -0.0034005903  0.3448649176  2.2229761136  0.1763144576  2.7097622770
[16]  1.2501948965 -0.4007164754  0.8852732121 -1.5852420266 -2.2829278891
[21] -2.5609531290 -3.1259963754 -2.8660295895 -1.7847009207 -1.8894912908
[26] -2.7255351194 -2.1033141800 -0.0174256893 -0.3613204151 -2.9008403327
[31] -3.2847440927 -2.8684594718 -1.9505074437 -4.8801892525 -3.2634605353
[36] -1.6396062522 -3.3012575840 -2.6331245433 -1.7058354022 -2.2119825061
[41] -0.5170595186  0.0752508095 -0.8406994716 -1.4022683487 -0.1382114230
[46] -1.4065954703 -2.3046941055  1.5073891432  0.7118679477 -1.1300519022
plot(data_vector)


# Convert data_vector to a ts object with start = 2004 and frequency = 4
time_series <- ts(data_vector, start = 2004, frequency = 4)

# Use print() and plot() to view time_series
print(time_series)
              Qtr1          Qtr2          Qtr3          Qtr4
2004  2.0521941073  4.2928852797  3.3294132944  3.5085950670
2005  0.0009576938  1.9217186345  0.7978134128  0.2999543435
2006  0.9435687536  0.5748283388 -0.0034005903  0.3448649176
2007  2.2229761136  0.1763144576  2.7097622770  1.2501948965
2008 -0.4007164754  0.8852732121 -1.5852420266 -2.2829278891
2009 -2.5609531290 -3.1259963754 -2.8660295895 -1.7847009207
2010 -1.8894912908 -2.7255351194 -2.1033141800 -0.0174256893
2011 -0.3613204151 -2.9008403327 -3.2847440927 -2.8684594718
2012 -1.9505074437 -4.8801892525 -3.2634605353 -1.6396062522
2013 -3.3012575840 -2.6331245433 -1.7058354022 -2.2119825061
2014 -0.5170595186  0.0752508095 -0.8406994716 -1.4022683487
2015 -0.1382114230 -1.4065954703 -2.3046941055  1.5073891432
2016  0.7118679477 -1.1300519022                            
plot(time_series)

As you can see, ts objects are treated differently by commands such as print() and plot(). For example, automatic use of the time-index in your calls to plot() requires a ts object.

1.3.2 Testing whether an object is a time series

When you work to create your own datasets, you can build them as ts objects. Recall the dataset data_vector from the previous exercise, which was just a vector of numbers, and time_series, the ts object you created from data_vector using the ts() function and information regarding the start time and the observation frequency. As a reminder, data_vector and time_series are shown in the plot on the right.

When you use datasets from others, such as those included in an R package, you can check whether they are ts objects using the is.ts() command. The result of the test is either TRUE when the data is of the ts class, or FALSE if it is not.

# Check whether data_vector and time_series are ts objects
is.ts(data_vector)
[1] FALSE
is.ts(time_series)
[1] TRUE
# Check whether Nile is a ts object
is.ts(Nile)
[1] TRUE
# Check whether AirPassengers is a ts object
is.ts(AirPassengers)
[1] TRUE

is.ts() is a simple command for determining whether or not you’re working with a ts object. As you can see, the Nile and AirPassengers datasets you worked with earlier in the chapter are both encoded as ts objects.

1.3.3 Plotting a time series object

It is often very useful to plot data we are analyzing, as is the case when conducting time series analysis. If the dataset under study is of the ts class, then the plot() function has methods that automatically incorporate time index information into a figure.

Let’s consider the eu_stocks dataset (available in R by default as EuStockMarkets). This dataset contains daily closing prices of major European stock indices from 1991-1998, specifically, from Germany (DAX), Switzerland (SMI), France (CAC), and the UK (FTSE). The data were observed when the markets were open, so there are no observations on weekends and holidays. We will proceed with the approximation that this dataset has evenly spaced observations and is a four dimensional time series.

eu_stocks <- EuStockMarkets
# Check whether eu_stocks is a ts object
is.ts(eu_stocks)
[1] TRUE
# View the start, end, and frequency of eu_stocks
start(eu_stocks)
[1] 1991  130
end(eu_stocks)
[1] 1998  169
frequency(eu_stocks)
[1] 260
# Generate a simple plot of eu_stocks
plot(eu_stocks)


# Use ts.plot with eu_stocks
ts.plot(eu_stocks, col = 1:4, xlab = "Year", ylab = "Index Value", main = "Major European Stock Indices, 1991-1998")

# Add a legend to your ts.plot
legend("topleft", colnames(eu_stocks), lty = 1, col = 1:4, bty = "n")

2 Predicting the future

2.1 Trend spotting!

2.2 The white noise (WN) model

2.2.1 Simulate the white noise model

The white noise (WN) model is a basic time series model. It is also a basis for the more elaborate models we will consider. We will focus on the simplest form of WN, independent and identically distributed data.

The arima.sim() function can be used to simulate data from a variety of time series models. ARIMA is an abbreviation for the autoregressive integrated moving average class of models we will consider throughout this course.

An ARIMA(p, d, q) model has three parts, the autoregressive order p, the order of integration (or differencing) d, and the moving average order q. We will detail each of these parts soon, but for now we note that the ARIMA(0, 0, 0) model, i.e., with all of these components zero, is simply the WN model.

# Simulate a WN model with list(order = c(0, 0, 0))
white_noise <- arima.sim(model = list(order = c(0, 0, 0)), n = 100)

# Plot your white_noise data
ts.plot(white_noise)


# Simulate from the WN model with: mean = 100, sd = 10
white_noise_2 <- arima.sim(model = list(order = c(0, 0, 0)), n = 100, mean = 100, sd = 10)

# Plot your white_noise_2 data
ts.plot(white_noise_2)

The arima.sim() command is a useful way to quickly simulate time series data with the qualities you specify.

2.2.2 Estimate the white noise model

For a given time series y we can fit the white noise (WN) model using the arima(…, order = c(0, 0, 0)) function. Recall that the WN model is an ARIMA(0,0,0) model. Applying the arima() function returns information or output about the estimated model. For the WN model this includes the estimated mean, labeled intercept, and the estimated variance, labeled sigma^2.

In this exercise, you’ll explore the qualities of the WN model. What is the estimated mean? Compare this with the sample mean using the mean() function. What is the estimated variance? Compare this with the sample variance using the var() function.

The time series y has already been loaded, and is shown in the adjoining figure.

ts.plot(y)

# Fit the WN model to y using the arima command
arima(y, order = c(0, 0, 0))

Call:
arima(x = y, order = c(0, 0, 0))

Coefficients:
      intercept
        97.5428
s.e.     0.9697

sigma^2 estimated as 94.03:  log likelihood = -369.08,  aic = 742.15
# Calculate the sample mean and sample variance of y
mean(y)
[1] 97.54284
var(y)
[1] 94.98175

From the comparisons you can see that the arima() function estimates are very close to the sample mean and variance estimates, in fact identical for the mean.

2.3 The random walk (RW) model

2.3.1 Simulate the random walk model

The random walk (RW) model is also a basic time series model. It is the cumulative sum (or integration) of a mean zero white noise (WN) series, such that the first difference series of a RW is a WN series. Note for reference that the RW model is an ARIMA(0, 1, 0) model, in which the middle entry of 1 indicates that the model’s order of integration is 1.

The arima.sim() function can be used to simulate data from the RW by including the model = list(order = c(0, 1, 0)) argument. We also need to specify a series length n. Finally, you can specify a sd for the series (increments), where the default value is 1.

# Generate a RW model using arima.sim
random_walk <- arima.sim(model = list(order = c(0, 1, 0)), n = 100)

# Plot random_walk
ts.plot(random_walk)


# Calculate the first difference series
random_walk_diff <- diff(random_walk)

# Plot random_walk_diff
ts.plot(random_walk_diff)

As you can see, the first difference of your random_walk data is white noise data. This is because a random walk is simply recursive white noise data. By removing the long-term trend, you end up with simple white noise.

2.3.2 Simulate the random walk model with a drift

A random walk (RW) need not wander about zero, it can have an upward or downward trajectory, i.e., a drift or time trend. This is done by including an intercept in the RW model, which corresponds to the slope of the RW time trend.

For an alternative formulation, you can take the cumulative sum of a constant mean white noise (WN) series, such that the mean corresponds to the slope of the RW time trend.

To simulate data from the RW model with a drift you again use the arima.sim() function with the model = list(order = c(0, 1, 0)) argument. This time, you should add the additional argument mean = … to specify the drift variable, or the intercept.

# Generate a RW model with a drift uing arima.sim
rw_drift <- arima.sim(model = list(order = c(0, 1, 0)), n = 100, mean = 1)

# Plot rw_drift
ts.plot(rw_drift)


# Calculate the first difference series
rw_drift_diff <- diff(rw_drift)

# Plot rw_drift_diff
ts.plot(rw_drift_diff)

Once again, taking the first difference of your random walk data transformed it back into white noise data, regardless of the presence of your long-term drift.

2.3.3 Estimate the random walk model

For a given time series y we can fit the random walk model with a drift by first differencing the data, then fitting the white noise (WN) model to the differenced data using the arima() command with the order = c(0, 0, 0)) argument.

The arima() command displays information or output about the fitted model. Under the Coefficients: heading is the estimated drift variable, named the intercept. Its approximate standard error (or s.e.) is provided directly below it. The variance of the WN part of the model is also estimated under the label sigma^2.

# Difference your random_walk data
rw_diff <- diff(rw_drift)

# Plot rw_diff
ts.plot(rw_diff)


# Now fit the WN model to the differenced data
model_wn <- arima(rw_diff, order = c(0, 0, 0))

# Store the value of the estimated time trend (intercept)
int_wn <- model_wn$coef

# Plot the original random_walk data
ts.plot(rw_drift)

# Use abline(0, ...) to add time trend to the figure
abline(0, int_wn)

The arima() command correctly identified the time trend in your original random-walk data.

2.4 Stationary processes

2.4.1 Are the white noise model or the random walk model stationary?

The white noise (WN) and random walk (RW) models are very closely related. However, only the RW is always non-stationary, both with and without a drift term. This is a simulation exercise to highlight the differences.

Recall that if we start with a mean zero WN process and compute its running or cumulative sum, the result is a RW process. The cumsum() function will make this transformation for you. Similarly, if we create a WN process, but change its mean from zero, and then compute its cumulative sum, the result is a RW process with a drift.

# Use arima.sim() to generate WN data
white_noise <- arima.sim(model = list(order = c(0,0,0)), n = 100)

# Use cumsum() to convert your WN data to RW
random_walk <- cumsum(white_noise)
  
# Use arima.sim() to generate WN drift data
wn_drift <- arima.sim(model = list(order = c(0,0,0)), n = 100, mean = 0.4)
  
# Use cumsum() to convert your WN drift data to RW
rw_drift <- cumsum(wn_drift)

# Plot all four data objects
plot.ts(cbind(white_noise, random_walk, wn_drift, rw_drift))

As you can see, it is easy to reverse-engineer the RW data by simply generating a cumulative sum of white noise data.

3 Correlation analysis and the autocorrelation function

3.1 Scatterplots

3.1.1 Asset prices vs. asset returns

The goal of investing is to make a profit. The revenue or loss from investing depends on the amount invested and changes in prices, and high revenue relative to the size of an investment is of central interest. This is what financial asset returns measure, changes in price as a fraction of the initial price over a given time horizon, for example, one business day.

Let’s again consider the eu_stocks dataset. This dataset reports index values, which we can regard as prices. The indices are not investable assets themselves, but there are many investable financial assets that closely track major market indices, including mutual funds and exchange traded funds.

Log returns, also called continuously compounded returns, are also commonly used in financial time series analysis. They are the log of gross returns, or equivalently, the changes (or first differences) in the logarithm of prices.

The change in appearance between daily prices and daily returns is typically substantial, while the difference between daily returns and log returns is usually small. As you’ll see later, one advantage of using log returns is that calculating multi-period returns from individual periods is greatly simplified - you just add them together!

In this exercise, you’ll further explore the eu_stocks dataset, including plotting prices, converting prices to (net) returns, and converting prices to log returns.

# Plot eu_stocks
plot(eu_stocks)


# Use this code to convert prices to returns
returns <- eu_stocks[-1,] / eu_stocks[-1860,] - 1

# Convert returns to ts
returns <- ts(returns, start = c(1991, 130), frequency = 260)

# Plot returns
plot(returns)


# Use this code to convert prices to log returns
logreturns <- diff(log(eu_stocks))

# Plot logreturns
plot(logreturns)

Daily net returns and daily log returns are two valuable metrics for financial data.

3.1.2 Characteristics of financial time series

Daily financial asset returns typically share many characteristics. Returns over one day are typically small, and their average is close to zero. At the same time, their variances and standard deviations can be relatively large. Over the course of a few years, several very large returns (in magnitude) are typically observed. These relative outliers happen on only a handful of days, but they account for the most substantial movements in asset prices. Because of these extreme returns, the distribution of daily asset returns is not normal, but heavy-tailed, and sometimes skewed. In general, individual stock returns typically have even greater variability and more extreme observations than index returns.

In this exercise, you’ll work with the eu_percentreturns dataset, which is the percentage returns calculated from your eu_stocks data. For each of the four indices contained in your data, you’ll calculate the sample mean, variance, and standard deviation.

Notice that the average daily return is about 0, while the standard deviation is about 1 percentage point. Also apply the hist() and qqnorm() functions to make histograms and normal quantile plots, respectively, for each of the indices.

eu_percentreturns <-  returns * 100
# Generate means from eu_percentreturns
colMeans(eu_percentreturns)
       DAX        SMI        CAC       FTSE 
0.07052174 0.08609470 0.04979471 0.04637479 
# Use apply to calculate sample variance from eu_percentreturns
apply(eu_percentreturns, MARGIN = 2, FUN = var)
      DAX       SMI       CAC      FTSE 
1.0569648 0.8523711 1.2159091 0.6344767 
# Use apply to calculate standard deviation from eu_percentreturns
apply(eu_percentreturns, MARGIN = 2, FUN = sd)
      DAX       SMI       CAC      FTSE 
1.0280879 0.9232394 1.1026827 0.7965405 
# Display a histogram of percent returns for each index
par(mfrow = c(2,2))
apply(eu_percentreturns, MARGIN = 2, FUN = hist, main = "", xlab = "Percentage Return")
$DAX
$breaks
 [1] -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6

$counts
 [1]   1   0   0   0   1   1   8  40 157 683 700 218  34  13   2   1

$density
 [1] 0.0005379236 0.0000000000 0.0000000000 0.0000000000 0.0005379236
 [6] 0.0005379236 0.0043033889 0.0215169446 0.0844540075 0.3674018289
[11] 0.3765465304 0.1172673480 0.0182894029 0.0069930070 0.0010758472
[16] 0.0005379236

$mids
 [1] -9.5 -8.5 -7.5 -6.5 -5.5 -4.5 -3.5 -2.5 -1.5 -0.5  0.5  1.5  2.5  3.5
[15]  4.5  5.5

$xname
[1] "newX[, i]"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

$SMI
$breaks
 [1] -9 -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6

$counts
 [1]   1   0   0   0   2   6  35 127 676 782 194  27   8   0   1

$density
 [1] 0.0005379236 0.0000000000 0.0000000000 0.0000000000 0.0010758472
 [6] 0.0032275417 0.0188273265 0.0683162991 0.3636363636 0.4206562668
[11] 0.1043571813 0.0145239376 0.0043033889 0.0000000000 0.0005379236

$mids
 [1] -8.5 -7.5 -6.5 -5.5 -4.5 -3.5 -2.5 -1.5 -0.5  0.5  1.5  2.5  3.5  4.5
[15]  5.5

$xname
[1] "newX[, i]"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

$CAC
$breaks
 [1] -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7

$counts
 [1]   1   0   0   2   9  50 206 677 579 264  60   7   3   0   1

$density
 [1] 0.0005379236 0.0000000000 0.0000000000 0.0010758472 0.0048413125
 [6] 0.0268961807 0.1108122647 0.3641742873 0.3114577730 0.1420118343
[11] 0.0322754169 0.0037654653 0.0016137708 0.0000000000 0.0005379236

$mids
 [1] -7.5 -6.5 -5.5 -4.5 -3.5 -2.5 -1.5 -0.5  0.5  1.5  2.5  3.5  4.5  5.5
[15]  6.5

$xname
[1] "newX[, i]"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

$FTSE
$breaks
 [1] -5 -4 -3 -2 -1  0  1  2  3  4  5  6

$counts
 [1]   1   2  18 128 771 763 158  13   3   1   1

$density
 [1] 0.0005379236 0.0010758472 0.0096826251 0.0688542227 0.4147391070
 [6] 0.4104357181 0.0849919311 0.0069930070 0.0016137708 0.0005379236
[11] 0.0005379236

$mids
 [1] -4.5 -3.5 -2.5 -1.5 -0.5  0.5  1.5  2.5  3.5  4.5  5.5

$xname
[1] "newX[, i]"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"
# Display normal quantile plots of percent returns for each index
par(mfrow = c(2,2))

apply(eu_percentreturns, MARGIN = 2, FUN = qqnorm, main = "")
$DAX
$DAX$x
   [1] -1.142221353 -0.641422863  0.955292497 -0.359523002 -0.673220713
   [6]  1.276662700  0.611885927 -0.459261681  0.673220713  0.082343808
  [11] -0.800629988 -0.738970862 -0.746076339  0.180306035  0.152960705
  [16]  0.266038199 -0.897309997 -0.691943891 -0.749643230  0.004045135
  [21]  0.716130610  0.128447917  0.035064922 -0.214680871  0.198151791
  [26] -0.787692121  1.171176839 -0.257665760  0.170720874 -0.616771139
  [31]  1.462421997 -0.178935732  0.243751421 -0.187162683 -3.461124681
  [36]  1.486410698  3.461124681  1.223643862  0.919719798  0.987715314
  [41] -0.573311845  0.278632114  0.031017587 -0.270231385  0.217441306
  [46]  0.239586428 -0.695374126 -0.181676676 -0.345175621 -0.685107711
  [51] -1.016679169  0.147505990  0.216060883  0.047210641 -0.332323535
  [56]  0.291270379 -1.109190438  0.203655249 -0.753219684  0.089110513
  [61]  0.629871114 -0.302543521 -0.903376738 -0.303955341 -0.661428091
  [66]  0.236812077 -0.287052552 -0.150232789 -0.343744832 -1.203927669
  [71] -0.628227740 -1.121749883 -0.039112832  0.055311546  0.098590829
  [76]  0.915611117 -1.181953091 -0.744296449  0.200902759  0.350905885
  [81]  0.451782750  0.881291064 -1.307735956 -0.199527087  0.483370478
  [86]  0.638113687 -0.355211147 -0.586072510 -0.663107092 -0.457763852
  [91]  0.683403669 -0.441354429  0.551201681  1.719464344 -0.489441280
  [96]  1.206715600 -0.755011527  0.767623099 -0.158419976 -1.454609861
 [101] -1.209512942 -0.148869251  0.901350805 -0.392810584 -0.780357962
 [106]  0.838359300 -1.065359478 -0.296902233 -1.258595595 -1.490492928
 [111] -0.185790660  0.362401286  0.163883972 -0.322365390  0.296902233
 [116] -0.959557224 -0.462260438  0.433934970  0.468270477 -0.515448120
 [121]  0.747858595  0.509298081 -0.934224165 -1.070128233 -0.378286384
 [126] -0.147505990 -0.146143003 -0.144780288  1.384457552  0.867457786
 [131] -0.143417841 -0.142055660  1.327002669  0.391354480 -0.010787206
 [136] -0.921779971 -0.974623251  1.163183043  0.965987242  0.441354429
 [141]  0.595705916  2.018186777 -0.029668592  0.326629195  0.998756101
 [146]  0.076933172 -0.600543374 -0.712649943 -0.319526110  1.091895656
 [151] -0.235425586 -1.074921450  0.756805798  0.125729300 -0.151596606
 [156] -0.598929332  0.448798263 -0.311023602  0.140693743 -0.353775332
 [161] -0.444329005  0.372499146 -0.420639577 -0.451782750  0.771248856
 [166]  0.513908791 -0.557490953  1.273622589 -0.155689761  1.147414556
 [171] -0.996538226  1.528404858  0.064767230  0.049910572  0.106723840
 [176]  0.871393127 -0.253486340 -0.051260673 -1.101738030  0.416224367
 [181] -0.170720874 -0.989913817 -1.134488812  0.639767399 -0.875342009
 [186]  0.602158982 -0.356647694 -0.411817256  0.316689404 -1.179246182
 [191]  0.080990929  0.136609547 -0.211922070 -1.330262031  0.981148261
 [196]  0.195402322 -0.907439769  1.023485109 -0.607015276  1.323757343
 [201] -0.247920647 -1.443055487  0.586072510  0.587674282 -0.394267521
 [206]  0.260454538  0.607015276  0.108080014 -0.140693743 -0.139332087
 [211] -0.017529767  0.342314746 -0.659750952 -0.018878365 -0.342314746
 [216] -0.867457786 -0.184418986 -0.360961770 -0.137970689  0.165250729
 [221]  0.110792961  0.728382008  0.422113133 -0.423587607  0.112149739
 [226] -0.338028671 -0.294085140 -0.821236508 -1.111688306  2.253834800
 [231]  0.155689761  1.124283082 -0.271630167  1.217962298  0.465263357
 [236] -0.936312283 -0.560643862 -0.136609547  0.813703281 -0.658075667
 [241]  0.102656486 -1.025764317  0.301132303 -0.313855244 -0.135248658
 [246] -0.414754435  0.264641513 -0.767623099  0.438383752 -1.003206657
 [251]  0.507763585 -0.643080086 -0.133888019  0.109436387 -0.498581510
 [256]  0.053961158 -0.778530978  0.062065052 -0.877321577  0.154325089
 [261] -0.221585076  0.289863864 -0.154325089  0.994325241 -0.552771947
 [266] -0.352340246 -1.051196457  0.480341759 -0.785854621 -1.273622589
 [271]  0.231268816 -0.261849685 -0.358084978 -1.775306882 -2.328168205
 [276]  0.041811790 -1.243847553 -1.067740821 -0.811827184  0.271630167
 [281] -0.195402322  1.285854591 -1.152638890 -1.060614828 -0.384086320
 [286]  0.281436703  1.000978901 -0.615141105 -0.565383709 -1.932851955
 [291] -1.323757343 -1.084582727  0.002696752  0.785854621 -0.523163215
 [296] -1.577947245 -0.563802354 -1.327002669  1.380950295 -2.501345446
 [301] -1.524083329  0.817464095  2.348932362  0.232653959  0.712649943
 [306] -1.104215353 -0.222967175  1.830063448 -0.815582246  0.254878985
 [311] -0.309608718 -1.053542290  0.210543276  0.187162683  3.153406194
 [316] -1.470324418  0.976793633 -1.195619501  1.336823495 -2.039299773
 [321] -0.796919854 -1.131926322 -0.610260769 -1.701989181 -1.882932462
 [326]  0.169352865 -1.139636266  1.058251433 -0.849912281 -3.001150261
 [331]  1.356861648  0.972457450  0.857677680 -0.823127102  0.268833132
 [336]  1.988111548 -1.387981923 -0.163883972  0.309608718  1.466361761
 [341]  1.657768635 -0.776706588  1.014420963  1.229365201  0.359523002
 [346]  0.137970689 -1.815858073 -1.184668689 -0.428016575 -0.705714361
 [351]  0.012135669 -1.077327344  1.016679169  0.174826828  1.402254840
 [356]  0.469775625 -0.540247501  2.061362980 -0.188535059 -0.001348375
 [361]  0.538687927 -0.132527628 -0.646399844  0.305367768 -1.641991740
 [366]  0.181676676 -1.087013912  0.668155360  0.463761374  1.070128233
 [371]  0.070173025 -1.395082856  0.135248658 -0.463761374 -0.644739077
 [376] -1.058251433 -0.335174740 -1.647205232 -0.433934970  0.051260673
 [381]  0.066118496 -0.320945426 -0.513908791  1.532755121  1.450736862
 [386]  0.224349699  0.435416939 -0.131167483 -0.129807580  1.340125919
 [391] -0.280034133 -0.690231824 -0.128447917 -0.127088491 -0.180306035
 [396]  1.096803562 -0.363841553 -1.044193418 -0.825020643 -0.649726742
 [401]  0.819348844 -1.611610156  1.168503942  1.837306881  1.631696630
 [406] -0.791375125 -0.048560562  0.540247501  0.847978932 -1.498732738
 [411]  0.274429329 -1.094346314  0.735432089  0.045860805  1.094346314
 [416] -0.579680379  1.370529139  0.658075667  1.668520329  0.162517520
 [421] -0.680001523  0.221585076  1.048856395 -0.795068896  1.502891083
 [426] -1.507075579  0.299721685  0.927984105  0.780357962 -0.405953507
 [431] -1.424215576 -0.490961795  0.578086050  1.150022800  0.709177888
 [436]  0.626586061 -0.869423773 -0.471281838 -0.006741924  1.005439403
 [441]  0.600543374  0.116221323 -0.516988672 -1.367088290  1.012167918
 [446] -0.453276503 -0.844121708  0.428016575 -0.802489192 -1.749812815
 [451] -0.381184749  0.859627120 -0.382635132  0.238199023  0.510833777
 [456]  0.723118123 -0.806215951 -0.595705916 -1.007677172  0.039112832
 [461]  0.597316848 -1.012167918  0.209164881 -0.125729300 -0.124370342
 [466]  0.851848813  0.189907790 -0.172089202  0.234039548  0.541808390
 [471] -0.611885927 -1.034934930  0.855731495 -1.541543733 -0.981148261
 [476] -0.613512703 -0.527807233 -0.976793633  0.544934137  0.333748798
 [481] -0.965987242  0.590882359 -0.917663521 -0.840277002  0.574901790
 [486] -0.365282575  1.258595595  0.166617795 -0.397183912 -0.295493393
 [491] -0.911517835 -1.009919999 -0.123011613  0.484886501 -0.510833777
 [496]  0.946814739 -0.543370600  1.046522062 -0.549632774 -0.121653111
 [501] -0.266038199  0.158419976  0.093172475  0.524709963  1.360254733
 [506]  0.044511053  1.106699472 -0.120294834  0.392810584 -0.016181201
 [511] -0.284243507  0.335174740 -0.726625143  0.358084978  0.631516191
 [516]  0.016181201 -0.629871114  0.029668592  0.460760541  0.806215951
 [521] -0.764007406 -0.306780804 -0.330898947 -0.220203400 -0.329475030
 [526]  0.676607229  1.907298228  2.649174982 -0.165250729  0.610260769
 [531] -0.299721685  0.537129662 -0.678303399  1.270594204  0.330898947
 [536] -0.683403669 -0.454771268  0.430973886  0.074228709  1.550453053
 [541] -0.957422684 -0.972457450 -0.697092314 -0.176196131 -0.445817767
 [546]  2.084477779  0.194028142  0.548065218  0.462260438 -0.671530349
 [551] -0.484886501  1.587382521  0.787692121  0.506230285 -0.970296201
 [556]  0.849912281  0.633162979  0.420639577 -1.564052364 -1.055893934
 [561]  0.798773547  0.444329005 -1.450736862  1.065359478  1.111688306
 [566]  0.083696837 -0.618402813  0.259059897 -0.620036135 -0.702259280
 [571] -1.713581019 -0.656402227 -0.045860805 -0.288457923  0.346607117
 [576] -0.447307518 -1.099267451  0.560643862  1.235127068  1.932851955
 [581] -0.192654329 -1.370529139  0.104012078 -0.846048746  1.304571699
 [586]  0.017529767 -0.526257967  0.020226997  0.566966480  0.815582246
 [591]  1.915677702  1.101738030 -0.277230642  1.240930235 -0.500108919
 [596] -0.426539323 -0.398643373 -0.388444757  1.391523619  0.475806917
 [601]  0.228499859 -0.524709963  0.942601281  1.685018832 -1.270594204
 [606] -0.826917147 -0.571723349  0.651392890  0.582873468  0.139332087
 [611]  0.911517835 -0.161151372 -1.511286632 -1.978474507 -0.483370478
 [616]  1.606688823 -1.223643862  0.043161383  0.013484154  1.243847553
 [621]  1.181953091 -0.118936778  0.282839826 -0.366724356 -2.220892296
 [626]  0.410349998  0.445817767  1.109190438 -0.828816630  0.355211147
 [631] -0.009438762  1.737480953  0.512370678  1.353484113 -0.703985770
 [636]  0.474297479  1.756079872 -0.021575667 -0.213301268 -0.243751421
 [641] -1.685018832  0.021575667  0.717874200  0.535572701  1.519790077
 [646] -0.379735168  1.203927669  0.873365866 -0.117578942  1.701989181
 [651] -1.462421997 -0.506230285  1.198379702 -0.116221323  0.903376738
 [656] -1.295156428 -0.953166636 -0.808083534  0.177565765 -0.049910572
 [661]  0.105367863 -1.959733938 -1.795213515  0.436899865 -1.679468436
 [666]  0.737200322  0.060714135 -1.663120450 -1.363663552  1.577947245
 [671] -1.014420963  1.749812815 -0.422113133  1.537134586  1.626613277
 [676] -0.709177888  0.056662036 -2.028630245  0.338028671 -2.096465896
 [681]  0.206409282  0.846048746  0.121653111 -0.742518914 -0.503167245
 [686]  1.367088290  0.207786884  1.288942818 -1.466361761 -1.391523619
 [691]  0.263245342  1.279714656 -2.289421602 -0.546499008  1.343443023
 [696] -2.061362980 -1.830063448  1.295156428  1.554954248  2.308361815
 [701] -0.492483445 -0.530909576  0.323786003 -1.264572142  2.471677151
 [706]  0.466766389 -0.719619975 -0.538687927 -1.144814095 -0.666470718
 [711]  0.554343576  1.053542290 -1.072521761 -0.173457852  1.165839367
 [716] -0.401564849 -0.735432089 -0.605394926 -0.114863917 -0.113506724
 [721]  1.568650389  0.384086320  0.853788545 -0.026970760  1.037241217
 [726] -0.836444677  0.159785525 -0.998756101  0.653060847  0.311023602
 [731] -1.304571699 -0.044511053 -0.035064922  1.142221353 -0.621671114
 [736]  1.470324418  0.733666152 -1.062984162  0.693657988  0.663107092
 [741] -0.395725296 -1.096803562  0.378286384 -0.951045074 -0.895295078
 [746]  1.079739490  0.315272007 -0.112149739  0.442841227  0.730141123
 [751] -0.389899206 -0.832624598 -0.562222407 -0.478829051 -0.110792961
 [756] -2.108763102 -2.121387721  0.429494761 -1.626613277  0.844121708
 [761]  0.381184749 -1.320525901  0.328051780  1.775306882  0.213301268
 [766] -1.573281819  0.603776164 -0.817464095  0.615141105 -2.370761549
 [771]  0.173457852 -0.961696145 -1.409499686 -0.985521574 -2.072781954
 [776] -1.582647271  2.175591776  1.373986290 -1.486410698 -0.403026872
 [781]  1.152638890  1.055893934 -1.252663668  1.030338792  1.089451538
 [786] -1.458504802 -0.346607117  0.923844064 -0.227116039  1.126823516
 [791] -1.220798154  0.099945863  0.996538226  1.559487170  0.674913004
 [796]  0.641422863 -0.608637221  0.267435404  1.072521761 -0.369610210
 [801]  0.938404491 -1.416819278 -0.250702523  0.885274487  0.459261681
 [806]  1.478319741 -0.312439110 -0.873365866  0.594096529 -0.468270477
 [811] -1.212319781  0.275829715 -0.681701610 -1.246775496 -0.024273125
 [816]  0.905406385  0.685107711 -0.932140112 -0.537129662 -1.532755121
 [821]  0.401564849  0.589277562  1.007677172  1.663120450  1.195619501
 [826] -0.648062397  0.006741924 -1.173858130  0.562222407 -1.285854591
 [831] -0.942601281  0.477317439  0.515448120 -1.238023440 -0.040462274
 [836]  0.014832664 -1.768825039  0.555916576 -1.601806100  0.114863917
 [841] -1.890930113  0.425063002  0.270231385  1.232241021 -1.837306881
 [846] -0.207786884  0.691943891 -2.271268723 -0.915611117 -0.109436387
 [851] -0.909476911 -1.997936847  1.021211206  0.654730623  2.697177092
 [856]  1.859635855 -0.948927784  1.652463885  0.529357768 -1.288942818
 [861] -1.405868039 -0.889272006 -0.568550673 -1.616570833  0.318107437
 [866] -1.474310299  0.719619975  0.877321577  1.844648016 -0.336601363
 [871]  0.218822145 -1.427943123  1.121749883  0.423587607 -1.413150018
 [876]  0.678303399  1.636822499  0.369610210 -1.360254733  0.875342009
 [881]  1.074921450 -0.108080014 -1.168503942 -0.289863864  0.395725296
 [886] -1.340125919 -1.668520329  0.970296201 -0.298311662 -0.430973886
 [891] -0.938404491  1.084582727 -0.789532284 -0.333748798  1.261578236
 [896] -1.201149064 -0.323786003 -0.275829715 -1.082157935 -1.229365201
 [901]  0.832624598  1.139636266  0.688521779  0.821236508 -0.340885359
 [906]  0.695374126  0.776706588  0.340885359 -0.224349699 -0.106723840
 [911]  0.498581510 -0.859627120 -1.282778578  1.157894875 -1.091895656
 [916] -0.714389194  0.172089202 -1.240930235  0.349472246 -0.407418129
 [921]  0.450290005 -0.167985173 -0.268833132  0.211922070  1.215136204
 [926] -0.509298081  0.188535059 -0.466766389 -1.494600149 -1.808890648
 [931]  0.762203300 -0.194028142  0.721367945 -0.728382008 -0.372499146
 [936] -0.256272124  1.176547886 -0.634811485  1.890930113  0.368166900
 [941]  0.413285400 -0.419166933  1.427943123  0.492483445 -0.594096529
 [946]  0.472789121  0.356647694 -1.301420449  0.365282575 -1.041870422
 [951] -0.159785525 -0.429494761  1.431690617 -0.603776164 -0.773065541
 [956] -0.581276182  1.395082856 -0.721367945 -1.261578236 -1.356861648
 [961] -1.502891083 -0.809953940 -1.907298228  1.044193418 -1.725407795
 [966]  2.190197016 -1.482353090  1.114193130 -1.781864184  0.277230642
 [971] -0.202278813 -0.486403639 -2.050206632 -0.008090336 -0.548065218
 [976] -1.106699472  0.404489757  1.582647271 -1.756079872  1.129371243
 [981]  1.564052364  0.373944779  0.178935732  0.071524788  0.068821391
 [986] -0.246530430  0.628227740 -0.597316848 -0.105367863 -0.104012078
 [991] -1.545983054 -0.774884781  0.620036135  1.601806100 -0.636461719
 [996]  1.435458325  1.099267451 -0.385538318 -0.487921897 -0.102656486
 [ reached getOption("max.print") -- omitted 859 entries ]

$DAX$y
   [1] -0.928319263 -0.441241177  0.904445039 -0.177663722 -0.466579325
   [6]  1.250457901  0.577648321 -0.286555662  0.637125719  0.118476933
  [11] -0.575905428 -0.513931700 -0.517813648  0.200432935  0.177874614
  [16]  0.267874148 -0.662381510 -0.478663689 -0.524971799  0.049845790
  [21]  0.680056049  0.162061522  0.074106553 -0.050601978  0.209919305
  [26] -0.560049782  1.108440005 -0.091919087  0.190140888 -0.423638022
  [31]  1.468138084 -0.022418400  0.245445620 -0.030832290 -9.178761490
  [36]  1.495518771  5.207048574  1.174819942  0.874581662  0.942151184
  [41] -0.380727559  0.276459616  0.072105480 -0.101117132  0.220622106
  [46]  0.241303401 -0.480238430 -0.027886393 -0.162513871 -0.471328527
  [51] -0.784182101  0.174683233  0.219815306  0.087610739 -0.151807303
  [56]  0.283845338 -0.888250397  0.211562540 -0.527481997  0.123133659
  [61]  0.598225101 -0.123479543 -0.675979062 -0.123854347 -0.454489087
  [66]  0.239805166 -0.114334004  0.000000000 -0.161121756 -0.982621862
  [71] -0.431056182 -0.902500837  0.010841906  0.098841955  0.129323251
  [76]  0.869736725 -0.971357567 -0.517194158  0.210642235  0.329674542
  [81]  0.424111976  0.842739379 -1.104829937 -0.041329671  0.452906041
  [86]  0.604107169 -0.171205932 -0.393440142 -0.455129544 -0.285518066
  [91]  0.645371120 -0.270559685  0.515902766  1.777429427 -0.311766386
  [96]  1.163746916 -0.528377180  0.731770737 -0.006760577 -1.307338181
 [101] -0.996450146  0.000000000  0.852991130 -0.218928932 -0.555711830
 [106]  0.794538803 -0.850639227 -0.122023323 -1.061766336 -1.352589971
 [111] -0.029035817  0.341431301  0.184607468 -0.141892239  0.286116594
 [116] -0.725752680 -0.287386014  0.402852350  0.439940395 -0.337180401
 [121]  0.715952004  0.472841979 -0.701785669 -0.858740685 -0.200534327
 [126]  0.000000000  0.000000000  0.000000000  1.393597231  0.830419301
 [131]  0.000000000  0.000000000  1.326984771  0.366664790  0.039899006
 [136] -0.687983349 -0.751105952  1.103889535  0.917993421  0.410826486
 [141]  0.559103953  2.098176753  0.023441726  0.312483099  0.949505478
 [146]  0.114530543 -0.411364081 -0.493414200 -0.138769260  1.029637261
 [151] -0.071144417 -0.860273745  0.721120759  0.156857153 -0.002372901
 [156] -0.408741976  0.421737343 -0.126938933  0.171050834 -0.169572925
 [161] -0.272609029  0.350774801 -0.250440645 -0.276057377  0.733219184
 [166]  0.479134833 -0.371931272  1.248935062 -0.003506004  1.085146293
 [171] -0.764801776  1.557120638  0.103822504  0.091108603  0.144839589
 [176]  0.832909352 -0.090143209  0.001134900 -0.880672307  0.385282550
 [181] -0.016538352 -0.760319642 -0.917304642  0.609076987 -0.650938066
 [186]  0.568152142 -0.174849387 -0.239899647  0.299002167 -0.966549194
 [191]  0.118424660  0.166647244 -0.049445627 -1.127336007  0.937110028
 [196]  0.209358744 -0.678557919  0.977330388 -0.417205823  1.316878183
 [201] -0.078790876 -1.303089081  0.552260653  0.552707280 -0.219752332
 [206]  0.260121621  0.570206289  0.145039700  0.000000000  0.000000000
 [211]  0.033774501  0.322180066 -0.452341566  0.031515554 -0.160392274
 [216] -0.644894774 -0.028873695 -0.178490971  0.000000000  0.185175541
 [221]  0.146133808  0.689806324  0.388937896 -0.253342235  0.147014238
 [226] -0.159364825 -0.121287709 -0.598582877 -0.888586675  2.539071585
 [231]  0.179746993  1.055038602 -0.103058138  1.169570970  0.438368007
 [236] -0.707376692 -0.372879284  0.000000000  0.756358768 -0.450076397
 [241]  0.132908471 -0.801390632  0.288883042 -0.128394786  0.000000000
 [246] -0.242586848  0.265589367 -0.542624829  0.406239114 -0.767780097
 [251]  0.472014662 -0.441732805  0.000000000  0.146018323 -0.316380873
 [256]  0.094311918 -0.555182550  0.102124762 -0.652931675  0.179709384
 [261] -0.058656705  0.282059318 -0.003409285  0.946676971 -0.367013791
 [266] -0.169493441 -0.831361985  0.449697253 -0.559605038 -1.078659902
 [271]  0.235064455 -0.096225317 -0.176486873 -1.809588740 -2.750873807
 [276]  0.083499222 -1.044683179 -0.855322243 -0.582323254  0.273962414
 [281] -0.037087861  1.263928567 -0.941610386 -0.845148564 -0.210134971
 [286]  0.280354617  0.952404620 -0.422784841 -0.377610363 -2.047817564
 [291] -1.112131480 -0.865895132  0.049099731  0.744529035 -0.346118347
 [296] -1.472252952 -0.374052628 -1.121129123  1.391622433 -2.945040293
 [301] -1.410129498  0.756815093  2.780131651  0.235469488  0.676453750
 [306] -0.884331065 -0.060008968  1.871292551 -0.593954232  0.256724354
 [311] -0.126733651 -0.838154239  0.214590866  0.202999149  4.659521631
 [316] -1.324383391  0.936536965 -0.979255089  1.337157401 -2.161078102
 [321] -0.574074074 -0.916500215 -0.417439102 -1.668944868 -1.961394357
 [326]  0.189057615 -0.925982087  0.999258549 -0.631069923 -4.952521672
 [331]  1.365574682  0.922975188  0.816249712 -0.599452403  0.272667200
 [336]  2.085920212 -1.202060286 -0.011004505  0.290963619  1.479403575
 [341]  1.709933157 -0.554857830  0.966228768  1.181998676  0.337506377
 [346]  0.168185552 -1.848887153 -0.971363025 -0.258446376 -0.486010418
 [351]  0.060710720 -0.860895007  0.970372033  0.193286819  1.406188034
 [356]  0.440134427 -0.358351977  2.148572034 -0.031771144  0.044753177
 [361]  0.505030859  0.000000000 -0.445083760  0.289625948 -1.564761216
 [366]  0.200837479 -0.868551366  0.634324907  0.437945661  1.008701109
 [371]  0.110023817 -1.208931873  0.165562914 -0.287459576 -0.443570844
 [376] -0.844367810 -0.155975177 -1.572159809 -0.266774727  0.092774429
 [381]  0.104866481 -0.139900785 -0.335690840  1.562553053  1.460952126
 [386]  0.229332103  0.403042875  0.000000000  0.000000000  1.339174623
 [391] -0.109207695 -0.478063423  0.000000000  0.000000000 -0.025350520
 [396]  1.039634860 -0.184037631 -0.825183571 -0.602585854 -0.447321954
 [401]  0.757426458 -1.539324158  1.107814962  1.873718818  1.669538161
 [406] -0.561495805  0.005087085  0.505503310  0.804104666 -1.385131955
 [411]  0.274298661 -0.876497058  0.697921602  0.086476588  1.034916521
 [416] -0.389227393  1.374247226  0.627058802  1.723412418  0.183717294
 [421] -0.469380939  0.224510713  0.990382274 -0.568390725  1.533061759
 [426] -1.392894031  0.287599903  0.878437528  0.742115028 -0.231093685
 [431] -1.269493453 -0.311804546  0.546910921  1.086668753  0.675587195
 [436]  0.596557820 -0.645328130 -0.296957077  0.040938379  0.956024079
 [441]  0.566302643  0.150124715 -0.340044795 -1.165247418  0.965808828
 [446] -0.279757192 -0.621662314  0.394742293 -0.578290242 -1.777572232
 [451] -0.204637237  0.817807888 -0.206993376  0.239888894  0.475030889
 [456]  0.684105589 -0.581036854 -0.405524677 -0.777226893  0.078452198
 [461]  0.559588992 -0.781943345  0.213344615  0.000000000  0.000000000
 [466]  0.808742378  0.204003494 -0.016716917  0.237658763  0.505763560
 [471] -0.419645080 -0.807709248  0.811285996 -1.427372456 -0.754817244
 [476] -0.422261839 -0.348896180 -0.752967723  0.508464105  0.317795959
 [481] -0.740196078  0.553113734 -0.683905506 -0.620618888  0.544255769
 [486] -0.184973244  1.210442155  0.185549207 -0.224324886 -0.121297516
 [491] -0.681440409 -0.779368353  0.000000000  0.456854056 -0.334576637
 [496]  0.899551157 -0.361664767  0.989376569 -0.365544521  0.000000000
 [501] -0.099556910  0.180857412  0.124652294  0.485109410  1.367739415
 [506]  0.084292664  1.047356643  0.000000000  0.366734338  0.034997182
 [511] -0.110884467  0.318182088 -0.500612451  0.337204946  0.599831668
 [516]  0.063042787 -0.433955709  0.070965605  0.434947050  0.753742233
 [521] -0.541951610 -0.124482546 -0.151093813 -0.057113922 -0.150819788
 [526]  0.639002142  1.982810173  3.400441511 -0.015011425  0.577192553
 [531] -0.122737375  0.504284481 -0.468707831  1.230687503  0.313224297
 [536] -0.470821595 -0.283062772  0.398071686  0.113752577  1.577616204
 [541] -0.724392172 -0.748637610 -0.480296911 -0.018098059 -0.272617069
 [546]  2.159397173  0.207821855  0.514716154  0.435107975 -0.463027026
 [551] -0.306377791  1.611683499  0.745819610  0.471527592 -0.743081520
 [556]  0.804333207  0.601433225  0.387506540 -1.457345299 -0.840520966
 [561]  0.748357522  0.416218908 -1.305602973  1.002866845  1.048420038
 [566]  0.120234665 -0.424974636  0.257840482 -0.425172273 -0.483225111
 [571] -1.694267849 -0.449762345  0.007485350 -0.116548870  0.326503522
 [576] -0.273690500 -0.879497125  0.529466054  1.183816345  2.017329294
 [581] -0.033286697 -1.171145392  0.136875243 -0.628765496  1.281359447
 [586]  0.063205182 -0.346625879  0.066004180  0.535537605  0.756589567
 [591]  1.987607171  1.045884112 -0.107317122  1.192801024 -0.318994300
 [596] -0.257306100 -0.225037548 -0.212542509  1.398752099  0.444332414
 [601]  0.230286628 -0.346600030  0.895623858  1.736774005 -1.076971809
 [606] -0.603052620 -0.379743746  0.621763181  0.551211009  0.170945966
 [611]  0.864873750 -0.008627301 -1.395825944 -2.112196782 -0.305415539
 [616]  1.655790785 -1.010907808  0.084153833  0.061825790  1.193241921
 [621]  1.122020320  0.000000000  0.281136332 -0.185935385 -2.498395371
 [626]  0.377655467  0.417161820  1.048393037 -0.609874623  0.334433443
 [631]  0.040446569  1.795004189  0.478043038  1.359202957 -0.483484471
 [636]  0.442868542  1.812549650  0.029086544 -0.049848148 -0.077118448
 [641] -1.652625206  0.068136856  0.681374206  0.500459415  1.550984796
 [646] -0.201080350  1.162662906  0.835607943  0.000000000  1.753881928
 [651] -1.314245379 -0.325895990  1.151317265  0.000000000  0.857095983
 [656] -1.088973103 -0.721825900 -0.581122040  0.194539387  0.002247242
 [661]  0.139325843 -2.066334545 -1.818923403  0.405158773 -1.649891913
 [666]  0.699105674  0.101861197 -1.601860709 -1.163765989  1.608050378
 [671] -0.783470714  1.811764031 -0.251331824  1.568306088  1.668822828
 [676] -0.488917267  0.099455515 -2.150591790  0.319127033 -2.275759131
 [681]  0.212876651  0.803021571  0.154032971 -0.515169671 -0.324359698
 [686]  1.369217814  0.213074515  1.266362253 -1.315272235 -1.208613539
 [691]  0.264698348  1.258965576 -2.679593505 -0.363435595  1.344846362
 [696] -2.189003632 -1.871961890  1.276075078  1.580376140  2.665690788
 [701] -0.311896141 -0.350981195  0.306891847 -1.064716099  3.211871221
 [706]  0.438370056 -0.495660674 -0.353303107 -0.928510264 -0.459729302
 [711]  0.523339044  0.992669375 -0.859932685 -0.016788226  1.106343284
 [716] -0.226043954 -0.507670541 -0.416387836  0.000000000  0.000000000
 [721]  1.596449638  0.358276415  0.809194056  0.027694920  0.983578282
 [726] -0.613973976  0.180898068 -0.765171385  0.622316035  0.291601866
 [731] -1.103512940  0.009116227  0.014584634  1.080928359 -0.426034543
 [736]  1.479616785  0.696898312 -0.848922011  0.656442431  0.630851805
 [741] -0.221024211 -0.878096661  0.353725718 -0.721403871 -0.661726847
 [746]  1.017230267  0.298035996  0.000000000  0.414142223  0.692410946
 [751] -0.213378150 -0.612845056 -0.373523319 -0.303679329  0.000000000
 [756] -2.276046575 -2.305748146  0.394842718 -1.547064306  0.802726240
 [761]  0.355908647 -1.109790674  0.312733604  1.822915438  0.218168680
 [766] -1.469317200  0.569002721 -0.596567985  0.583725142 -2.759869004
 [771]  0.192859405 -0.729252456 -1.250235143 -0.756609958 -2.233487548
 [776] -1.477029027  2.444969036  1.376107894 -1.350540216 -0.228919689
 [781]  1.088238823  0.998887378 -1.057553428  0.981765099  1.029553729
 [786] -1.312509094 -0.162682342  0.874796316 -0.061978430  1.056240020
 [791] -1.009442077  0.130822964  0.948689823  1.585446538  0.637972180
 [796]  0.609364372 -0.417398327  0.272516820  1.009991771 -0.187130801
 [801]  0.891237332 -1.266109498 -0.084740605  0.846719022  0.432582625
 [806]  1.486467731 -0.127642310 -0.646786834  0.558194665 -0.296508148
 [811] -0.997103999  0.275391565 -0.470803273 -1.046695512  0.028119640
 [816]  0.857876440  0.646180289 -0.697880511 -0.353251776 -1.421281439
 [821]  0.372864193  0.552975840  0.961096682  1.722792875  1.147641264
 [826] -0.446807358  0.057574961 -0.965524741  0.530702998 -1.082197890
 [831] -0.714482886  0.445305296  0.480698258 -1.033928653  0.010669982
 [836]  0.062157611 -1.807013884  0.528286209 -1.498572341  0.147798517
 [841] -1.970912380  0.389481097  0.272836777  1.182935242 -1.883346922
 [846] -0.045679186  0.654872161 -2.621766263 -0.683504623  0.000000000
 [851] -0.680717175 -2.121015553  0.972006021  0.623788421  3.584521179
 [856]  1.911098528 -0.719927576  1.707933690  0.495237372 -1.082831411
 [861] -1.240706630 -0.659070923 -0.378902108 -1.540414520  0.299514034
 [866] -1.324506585  0.681413934  0.842021449  1.899455677 -0.158848542
 [871]  0.223129832 -1.271428433  1.052007196  0.389061643 -1.260758001
 [876]  0.639162140  1.673831430  0.347238830 -1.161560313  0.837645334
 [881]  1.012414875  0.000000000 -0.959658367 -0.117594195  0.369469916
 [886] -1.140091551 -1.603248943  0.918604936 -0.122401993 -0.265043015
 [891] -0.710935138  1.023454995 -0.560989364 -0.154482435  1.218186625
 [896] -0.980524946 -0.144114041 -0.107140760 -0.864901927 -1.015220903
 [901]  0.773092971  1.080168191  0.651170539  0.762816238 -0.159911107
 [906]  0.656637262  0.737443274  0.322118826 -0.060411464  0.000000000
 [911]  0.465973022 -0.636260701 -1.080416146  1.100410666 -0.873416575
 [916] -0.493942353  0.192370899 -1.034299773  0.328546499 -0.232727626
 [921]  0.422224495 -0.015518312 -0.100884681  0.216538491  1.168040927
 [926] -0.328504729  0.203229573 -0.288643185 -1.381996538 -1.844592025
 [931]  0.727261889 -0.034522383  0.681805848 -0.501276466 -0.191080293
 [936] -0.091775712  1.117136338 -0.438596491  1.936756179  0.343609536
 [941]  0.380321139 -0.249879360  1.437890966  0.460855605 -0.404218917
 [946]  0.442198059  0.336413996 -1.097172078  0.342319820 -0.816782979
 [951] -0.007611871 -0.264532643  1.439706907 -0.416188559 -0.544959128
 [956] -0.389354479  1.399528088 -0.496894994 -1.062060624 -1.156072124
 [961] -1.386023817 -0.581993475 -1.979915048  0.987834305 -1.727854245
 [966]  2.449674289 -1.348825711  1.049007127 -1.816829105  0.276329615
 [971] -0.042317594 -0.306428445 -2.173330570  0.040825186 -0.364177347
 [976] -0.887589303  0.374012659  1.610860672 -1.798682915  1.058657015
 [981]  1.587629718  0.351532294  0.199230453  0.110800801  0.106129751
 [986] -0.078250817  0.597192890 -0.406312152  0.000000000  0.000000000
 [991] -1.430667830 -0.549467416  0.589028129  1.655475035 -0.439201087
 [996]  1.445196238  1.043550163 -0.210498294 -0.311226380  0.000000000
 [ reached getOption("max.print") -- omitted 859 entries ]


$SMI
$SMI$x
   [1]  0.685107711 -0.887271474  0.312439110  0.075580872 -1.215136204
   [6]  0.764007406  1.409499686 -0.651392890  1.273622589  0.456267049
  [11]  0.408883624 -0.419166933  0.342314746 -0.062065052 -0.608637221
  [16]  0.543370600 -1.116704964 -0.075580872 -0.521617717  0.044511053
  [21]  0.184418986  0.022924375 -0.207786884  0.213301268 -0.726625143
  [26] -0.714389194  0.395725296 -0.234039548  0.289863864 -0.656402227
  [31]  0.066118496  0.562222407  0.284243507 -1.039553035 -3.461124681
  [36]  2.533393817  2.897169268  1.077327344  1.134488812  0.506230285
  [41] -0.847978932  0.571723349  0.755011527 -0.263245342 -0.490961795
  [46] -0.278632114 -0.501637496 -0.047210641 -0.735432089 -0.541808390
  [51] -0.685107711  0.205032071 -0.074228709  0.221585076 -1.255624109
  [56] -0.206409282 -1.307735956  0.059363328  0.125729300 -0.661428091
  [61] -0.516988672 -0.710912844 -0.885274487  0.386991129 -0.537129662
  [66]  0.477317439  1.058251433 -0.270231385 -0.221585076 -0.942601281
  [71]  0.013484154 -0.504698173 -0.778530978  0.394267521 -0.028319650
  [76]  0.165250729  1.129371243  0.173457852  1.340125919 -0.400103684
  [81] -0.767623099  0.371054291 -0.294085140 -1.541543733  0.674913004
  [86] -0.031017587 -0.698812562 -0.823127102 -0.543370600 -0.590882359
  [91]  0.648062397  0.229884118  0.306780804  1.713581019 -0.411817256
  [96]  1.048856395 -0.465263357  0.340885359 -0.291270379 -1.997936847
 [101] -1.507075579 -0.423587607 -0.602158982 -1.409499686 -1.380950295
 [106]  1.398659855 -1.074921450 -0.447307518 -1.295156428 -1.815858073
 [111]  1.187393051  0.885274487 -1.217962298 -0.492483445  0.214680871
 [116] -0.756805798 -1.021211206  0.985521574  1.179246182 -0.026970760
 [121]  0.210543276 -0.048560562 -1.067740821 -1.079739490 -0.503167245
 [126]  1.882932462 -0.205032071 -0.203655249  1.837306881  1.000978901
 [131] -0.202278813 -0.200902759 -0.199527087  2.084477779  0.478829051
 [136] -0.970296201 -0.903376738  1.621571613  0.492483445 -0.483370478
 [141]  1.007677172  2.271268723 -0.996538226 -1.048856395  0.101301081
 [146]  0.259059897 -0.256272124 -0.438383752 -0.018878365  1.119223863
 [151] -0.315272007 -1.320525901 -0.405953507  0.375391193 -0.257665760
 [156] -0.102656486  0.756805798  0.778530978  0.071524788  0.308194453
 [161]  0.826917147 -0.469775625 -0.036414159 -1.126823516  0.544934137
 [166]  0.222967175 -0.832624598  1.028048865  0.151596606  0.765814001
 [171] -0.587674282  0.703985770  0.350905885  0.771248856 -0.078285614
 [176]  0.242362624  0.124370342 -0.895295078 -1.353484113 -0.535572701
 [181]  0.268833132 -1.046522062 -1.192868378  0.942601281 -0.707445064
 [186]  1.238023440  0.041811790  0.793220658  0.133888019 -1.367088290
 [191]  0.303955341  0.313855244  0.270231385 -0.673220713  0.626586061
 [196] -0.326629195 -0.863535834  0.683403669 -0.774884781  0.865495146
 [201]  0.426539323 -1.554954248  0.021575667  1.201149064 -0.693657988
 [206]  0.811827184  1.255624109 -0.381184749 -0.198151791 -0.196776871
 [211] -0.875342009  0.861579831  0.252094188 -0.549632774 -0.051260673
 [216] -1.184668689  0.899328566  0.291270379 -0.195402322  1.601806100
 [221]  0.751430255  1.018942572 -0.238199023  0.707445064  0.840277002
 [226] -0.961696145  0.063416084 -0.730141123 -1.528404858  1.072521761
 [231] -0.867457786  0.240974293 -0.690231824  0.285647748 -0.389899206
 [236] -0.459261681 -0.817464095 -0.194028142  0.328051780  0.068821391
 [241]  0.382635132 -1.084582727  0.001348375 -0.397183912 -0.192654329
 [246] -1.041870422 -0.919719798 -1.346774976  0.644739077 -1.058251433
 [251]  0.961696145 -0.731902501 -0.857677680  0.373944779 -1.494600149
 [256] -0.099945863 -0.764007406  0.430973886 -0.851848813  0.663107092
 [261]  0.465263357 -0.793220658  0.529357768  0.987715314 -0.721367945
 [266] -0.600543374 -1.360254733  0.524709963  0.565383709 -1.091895656
 [271] -0.659750952  0.548065218 -0.573311845 -1.915677702 -2.393782545
 [276]  1.795213515 -1.808890648  0.302543521 -0.624946069  0.257665760
 [281]  1.089451538  1.978474507 -0.654730623 -0.738970862 -0.416224367
 [286]  0.638113687  0.940500815 -0.254878985 -0.836444677 -0.819348844
 [291] -0.082343808 -0.681701610 -0.758602509  0.404489757  0.498581510
 [296] -0.948927784 -1.016679169 -1.550453053  0.968139475 -2.205284963
 [301] -1.398659855 -0.565383709  2.161436385  0.261849685  0.348039324
 [306] -0.507763585  0.658075667  1.067740821 -0.097235975  0.889272006
 [311] -0.222967175 -0.784019770  0.875342009  1.223643862  2.752336985
 [316] -1.443055487  1.363663552  0.994325241  0.444329005 -0.749643230
 [321]  0.680001523  0.773065541 -0.420639577 -0.053961158 -1.830063448
 [326] -0.045860805 -0.313855244  0.378286384 -1.243847553 -3.001150261
 [331]  1.899050574  2.108763102  0.723118123  0.450290005  0.091818320
 [336]  0.686813744 -0.450290005 -0.936312283  0.369610210  1.258595595
 [341]  1.099267451 -1.044193418  0.078285614  0.538687927  0.535572701
 [346] -0.391354480 -1.333535586 -0.345175621  0.236812077  0.589277562
 [351]  0.695374126  0.451782750  0.518530452  0.148869251 -0.002696752
 [356]  0.202278813 -1.129371243  0.142055660 -1.395082856 -1.157894875
 [361] -1.545983054 -0.649726742  0.747858595  0.051260673 -0.620036135
 [366] -0.907439769  0.376838394  0.178935732  1.405868039  0.998756101
 [371] -0.319526110 -0.510833777  0.067469881  0.438383752  1.212319781
 [376]  0.353775332  1.094346314  0.366724356  0.271630167  1.264572142
 [381] -0.811827184  1.091895656  0.166617795  0.919719798 -0.056662036
 [386]  0.608637221  0.144780288 -0.191280879 -0.189907790  1.616570833
 [391] -0.322365390  0.825020643 -0.188535059 -0.187162683  0.636461719
 [396]  0.526257967 -0.403026872 -2.084477779 -0.489441280 -1.616570833
 [401]  1.737480953 -0.379735168  1.519790077 -0.382635132 -1.124283082
 [406] -1.276662700 -0.274429329  1.507075579  0.688521779 -1.111688306
 [411] -0.209164881 -1.387981923  0.441354429  1.032634134  1.564052364
 [416] -0.101301081 -0.358084978  0.253486340  0.425063002  0.159785525
 [421] -0.318107437 -0.932140112  0.250702523  0.389899206  0.453276503
 [426] -0.946814739 -1.168503942  1.003206657 -0.934224165 -1.363663552
 [431] -2.108763102  0.785854621 -0.468270477  1.969017784  1.101738030
 [436]  0.520073465  0.579680379 -0.365282575 -0.474297479 -0.329475030
 [441]  0.970296201  0.299721685  0.384086320 -1.867289179  1.573281819
 [446] -0.570136293 -0.830719108  0.821236508  1.466361761 -1.282778578
 [451]  0.174826828 -1.226499513 -0.802489192  1.356861648  0.774884781
 [456]  0.669841901 -0.032366639 -0.292677470 -0.004045135 -0.554343576
 [461]  0.590882359 -0.789532284  0.082343808 -0.185790660 -0.184418986
 [466] -0.579680379 -1.034934930 -0.487921897  0.025621919  0.086403358
 [471]  0.136609547  0.330898947 -0.250702523 -0.985521574 -1.340125919
 [476] -1.037241217  0.709177888 -0.992117116  0.278632114  1.240930235
 [481]  0.329475030  0.234039548 -0.224349699 -0.352340246  0.859627120
 [486]  0.595705916 -0.091818320 -0.664787965  0.062065052  0.992117116
 [491]  1.152638890 -0.216060883 -0.183047659  0.224349699  0.127088491
 [496]  0.235425586  0.109436387  1.005439403  0.123011613 -0.181676676
 [501] -1.082157935  0.227116039  0.429494761  0.749643230  1.295156428
 [506] -0.965987242  0.891276104 -0.369610210 -0.239586428 -0.944705914
 [511] -1.187393051  1.044193418  1.435458325 -0.477317439  0.527807233
 [516]  0.180306035 -0.762203300  0.546499008  0.521617717  1.106699472
 [521]  0.000000000  0.112149739 -0.243751421 -0.546499008 -0.428016575
 [526]  1.298282071 -1.089451538  1.217962298  0.195402322  0.181676676
 [531]  0.411817256 -0.589277562 -0.733666152 -0.373944779 -0.913562563
 [536] -2.253834800 -0.755011527  1.333535586  0.460760541  1.731412828
 [541]  0.410349998  0.469775625 -0.574901790 -0.236812077 -0.213301268
 [546]  1.395082856 -0.025621919 -0.530909576 -0.277230642 -0.335174740
 [551] -1.737480953  1.285854591  1.707756416  0.490961795  0.809953940
 [556] -0.849912281  1.074921450 -0.571723349 -0.495530174 -0.560643862
 [561]  0.132527628  1.267577427 -1.292043388  0.060714135  0.014832664
 [566]  0.273029480 -1.023485109 -0.524709963 -1.343443023 -1.941657387
 [571]  0.475806917 -0.472789121 -0.968139475 -1.070128233 -0.006741924
 [576]  1.111688306 -1.446885503  0.566966480  0.474297479  1.554954248
 [581]  0.602158982 -1.003206657  0.484886501  0.955292497  1.636822499
 [586] -0.404489757  0.249311344 -0.782187555  0.346607117  0.359523002
 [591]  1.424215576  0.568550673 -0.526257967  0.154325089  0.639767399
 [596]  0.085050020  0.817464095  0.651392890  1.184668689  2.028630245
 [601] -0.328051780  0.254878985  0.927984105  0.447307518 -0.909476911
 [606]  0.616771139  0.634811485  0.114863917 -0.008090336  0.072876682
 [611]  0.629871114  0.216060883 -1.788499010 -1.959733938  0.903376738
 [616]  1.988111548  0.594096529 -1.099267451 -0.066118496 -0.366724356
 [621] -0.430973886 -0.260454538  0.641422863  0.200902759 -1.611610156
 [626]  0.135248658  0.633162979  0.319526110  0.600543374 -0.363841553
 [631] -0.098590829  1.490492928  0.486403639  1.314104058  0.681701610
 [636] -0.271630167  0.294085140  0.549632774  0.016181201  0.586072510
 [641] -0.594096529 -0.901350805  0.653060847  0.853788545  0.760401672
 [646]  0.281436703  0.963839475  0.981148261 -0.180306035  0.104012078
 [651] -1.668520329  0.026970760  0.905406385 -0.178935732  1.486410698
 [656]  0.018878365  0.339456669  0.439868605  0.787692121 -1.212319781
 [661]  0.368166900 -1.235127068 -1.822914780  1.550453053  0.776706588
 [666]  1.023485109  0.413285400 -0.333748798 -0.456267049 -0.029668592
 [671]  0.957422684  0.923844064  0.040462274  1.606688823  1.384457552
 [676] -1.246775496  0.721367945 -0.826917147  0.487921897 -2.271268723
 [681]  0.185790660 -1.641991740 -1.621571613 -0.177565765 -2.161436385
 [686] -0.176196131 -0.174826828  2.568276871 -0.498581510 -1.249714166
 [691] -0.780357962  1.647205232 -2.220892296 -1.301420449 -1.673969302
 [696] -1.679468436 -2.471677151  1.443055487  2.253834800  1.941657387
 [701] -0.853788545 -1.749812815  0.012135669 -1.373986290  1.545983054
 [706]  1.446885503 -0.983332566 -0.086403358 -1.768825039 -1.631696630
 [711]  0.819348844  1.327002669 -0.457763852 -0.974623251  1.235127068
 [716] -1.519790077 -0.742518914 -0.987715314 -0.173457852 -0.172089202
 [721]  0.471281838  0.932140112  1.243847553  0.454771268  0.381184749
 [726]  0.049910572 -0.639767399 -1.482353090  1.192868378 -0.359523002
 [731] -1.450736862 -0.955292497 -1.582647271  0.163883972 -1.195619501
 [736]  0.481855566  0.584472241 -1.101738030 -1.478319741  1.215136204
 [741] -0.616771139 -1.924193887 -1.190126255 -1.756079872 -2.418146732
 [746]  2.348932362  0.079638199 -0.170720874  1.830063448  1.304571699
 [751]  0.746076339  0.523163215 -0.825020643  0.211922070 -0.169352865
 [756] -1.743613740 -0.994325241  0.661428091  0.972457450  1.323757343
 [761] -1.028048865  0.292677470 -0.448798263  0.005393524  1.997936847
 [766] -0.338028671  0.953166636 -1.176547886 -0.769434713 -1.005439403
 [771] -0.384086320 -1.657768635 -1.573281819 -1.719464344 -2.649174982
 [776] -0.245140689  2.072781954  1.373986290 -1.932851955 -0.917663521
 [781]  1.788499010  1.195619501 -1.171176839 -1.060614828  1.915677702
 [786] -1.336823495 -0.703985770 -0.603776164 -1.466361761 -0.005393524
 [791] -2.096465896 -1.596961269  2.205284963 -0.809953940 -1.106699472
 [796]  1.232241021  1.725407795  0.744296449  0.869423773 -0.014832664
 [801]  0.036414159 -2.237060137  0.615141105  0.895295078 -0.167985173
 [806]  2.007958893 -0.628227740 -0.451782750 -0.846048746  0.710912844
 [811] -1.515524656  0.167985173 -0.309608718 -0.598929332 -0.676607229
 [816]  0.796919854  0.435416939 -0.940500815 -1.317308188 -1.270594204
 [821] -0.275829715  0.428016575  0.416224367  1.360254733  2.121387721
 [826] -0.089110513  0.388444757 -0.957422684  1.768825039  0.010787206
 [831] -1.134488812  0.400103684 -0.039112832 -1.131926322 -0.070173025
 [836]  0.649726742 -1.094346314 -0.631516191 -1.273622589  0.457763852
 [841] -1.139636266 -0.064767230  0.345175621  0.183047659 -1.203927669
 [846] -0.445817767  0.356647694 -1.532755121 -1.238023440 -1.626613277
 [851]  1.055893934 -1.837306881  0.108080014  0.513908791  2.289421602
 [856]  0.730141123 -0.563802354  1.370529139 -0.584472241 -0.669841901
 [861] -1.564052364 -0.787692121 -0.059363328 -1.201149064  0.733666152
 [866] -1.498732738 -0.989913817 -1.053542290  1.474310299  0.712649943
 [871] -0.320945426 -0.392810584  1.559487170  0.192654329  0.738970862
 [876] -0.834533115  1.907298228  0.503167245 -0.432453954 -0.520073465
 [881] -0.063416084  0.762203300 -0.607015276  0.150232789 -0.087756855
 [886] -1.606688823 -1.327002669  1.034934930  0.076933172  0.232653959
 [891]  0.131167483  0.419166933 -1.025764317 -0.041811790  1.478319741
 [896] -1.152638890 -0.425063002  0.118936778 -0.796919854 -0.795068896
 [901]  0.037763461  0.656402227  0.716130610  0.220203400 -0.386991129
 [906]  0.578086050  0.934224165  0.555916576 -0.055311546 -0.166617795
 [911]  0.978968627 -0.953166636 -1.370529139 -0.165250729 -0.163883972
 [916] -0.930060100  0.873365866 -1.032634134  0.362401286 -0.433934970
 [921] -0.951045074 -0.355211147  0.056662036 -0.220203400 -0.610260769
 [926] -0.621671114  0.445817767 -0.021575667 -1.114193130 -1.950615992
 [931]  0.391354480 -0.658075667  1.343443023 -0.298311662 -0.765814001
 [936] -0.353775332  1.084582727  0.029668592  1.165839367  1.416819278
 [941]  0.206409282 -0.691943891  0.836444677 -0.273029480 -0.080990929
 [946]  0.191280879 -0.494006236 -0.859627120 -1.062984162 -0.375391193
 [951]  0.507763585 -0.093172475  0.976793633 -0.613512703 -0.905406385
 [956] -0.532462664  0.813703281 -0.285647748 -1.474310299 -1.568650389
 [961] -0.686813744 -1.413150018 -2.147701284  0.209164881 -1.000978901
 [966]  0.563802354  0.504698173  0.758602509  0.177565765  0.832624598
 [971] -0.712649943 -0.371054291 -1.160534902  1.924193887 -0.618402813
 [976] -1.220798154 -0.235425586  1.673969302 -1.264572142 -0.001348375
 [981]  1.155262893 -0.104012078  0.883281024  0.039112832 -0.017529767
 [986] -0.020226997 -0.240974293 -0.288457923 -0.162517520 -0.161151372
 [991] -0.800629988 -1.486410698  1.249714166  0.724870519 -0.478829051
 [996]  0.196776871  0.554343576 -0.551201681  1.346774976 -0.159785525
 [ reached getOption("max.print") -- omitted 859 entries ]

$SMI$y
   [1]  0.619748525 -0.586319218  0.327653997  0.148447242 -0.889363216
   [6]  0.675999043  1.230019609 -0.358065274  1.107511046  0.436986541
  [11]  0.388676181 -0.179138977  0.341553780  0.040385392 -0.328719723
  [16]  0.509170862 -0.805940936  0.029017469 -0.266883268  0.127981385
  [21]  0.238205903  0.110125775  0.000000000  0.254747568 -0.433125433
  [26] -0.417609187  0.378589318 -0.023209934  0.313406849 -0.364498959
  [31]  0.139364729  0.527689185  0.311490540 -0.736055204 -8.040783223
  [36]  2.721431271  3.366858825  0.937407298  0.981602304  0.477299185
  [41] -0.556134863  0.535943143  0.672152045 -0.046045816 -0.241851895
  [46] -0.069268067 -0.248382625  0.052116509 -0.439865725 -0.279037321
  [51] -0.390579457  0.251653304  0.029188558  0.262620368 -0.948777648
  [56]  0.000000000 -0.987248046  0.136506618  0.201517307 -0.372648764
  [61] -0.261236122 -0.416691470 -0.585809074  0.372797787 -0.275564608
  [66]  0.456538716  0.920887401 -0.053327013 -0.011856770 -0.640341515
  [71]  0.095476787 -0.250387504 -0.490078891  0.378378378  0.065817029
  [76]  0.227218369  0.978403532  0.230414747  1.155319776 -0.163160655
  [81] -0.478608533  0.363615037 -0.087652662 -1.239911101  0.609972758
  [86]  0.064747778 -0.411764706 -0.537507383 -0.279113962 -0.315626489
  [91]  0.597407253  0.267236772  0.325752191  1.593954779 -0.174327387
  [96]  0.913906514 -0.224965390  0.341099613 -0.086425444 -2.006804683
 [101] -1.218148649 -0.184677708 -0.322291853 -1.071792108 -1.041036194
 [106]  1.217125382 -0.779503293 -0.200974421 -0.982486117 -1.633181314
 [111]  1.021239271  0.781443810 -0.892307692 -0.242160820  0.255197311
 [116] -0.471844540 -0.723598029  0.860823123  1.009220035  0.067842605
 [121]  0.252696456  0.049182344 -0.768096350 -0.780234070 -0.249641141
 [126]  1.795657887  0.000000000  0.000000000  1.763982790  0.869722776
 [131]  0.000000000  0.000000000  0.000000000  2.029818574  0.457746479
 [136] -0.660123846 -0.599823581  1.484943501  0.472193075 -0.237888019
 [141]  0.872397348  2.214022140 -0.705099278 -0.744191331  0.171703297
 [146]  0.291395269 -0.039879223 -0.193776359  0.074234810  0.964336662
 [151] -0.101729400 -0.995700385 -0.165714286  0.366321332 -0.039920160
 [156]  0.005705157  0.673170175  0.685668952  0.140702386  0.325970887
 [161]  0.733852445 -0.228005784  0.061312078 -0.824420677  0.511121096
 [166]  0.262643196 -0.546204437  0.879847568  0.216654630  0.676274945
 [171] -0.313842088  0.629660315  0.345792854  0.678262772  0.027165055
 [176]  0.282439846  0.200400802 -0.594594595 -1.022294725 -0.274695088
 [181]  0.297487880 -0.741513787 -0.868795307  0.826169476 -0.415236408
 [186]  1.084116306  0.126498735  0.703103543  0.207276496 -1.028795384
 [191]  0.324496755  0.328929335  0.300530026 -0.375898889  0.574178378
 [196] -0.108742932 -0.571521881  0.618601850 -0.484221980  0.765403750
 [201]  0.401497477 -1.264523102  0.109463084  1.033295063 -0.405844156
 [206]  0.722629720  1.095048009 -0.149405048  0.000000000  0.000000000
 [211] -0.577138887  0.763235689  0.288046087 -0.287218765  0.048007681
 [216] -0.858391981  0.790535090  0.314800982  0.000000000  1.468007021
 [221]  0.670965036  0.874772195 -0.025809116  0.635068154  0.749063670
 [226] -0.656923155  0.138404757 -0.435116458 -1.228791774  0.936963198
 [231] -0.572430509  0.280082988 -0.398262129  0.311575012 -0.155303619
 [236] -0.217763260 -0.535203949  0.000000000  0.334343329  0.140581068
 [241]  0.369157178 -0.787401575  0.088763576 -0.161719443  0.000000000
 [246] -0.736754102 -0.615886719 -1.016949153  0.593964041 -0.755359328
 [251]  0.836147291 -0.435868814 -0.565906786  0.365100671 -1.198309528
 [256]  0.010828957 -0.476422500  0.407985639 -0.558023621  0.604739853
 [261]  0.444059352 -0.512184602  0.498563919  0.862766244 -0.422346966
 [266] -0.322130355 -1.023376064  0.495211145  0.530676342 -0.791812550
 [271] -0.369204040  0.512261580 -0.298199957 -1.810865191 -2.713779353
 [276]  1.679380622 -1.623649292  0.324398156 -0.340367597  0.290300546
 [281]  0.942164709  1.922968794 -0.364097755 -0.442943359 -0.177965630
 [286]  0.584990807  0.825301872 -0.038455200 -0.549571334 -0.536030062
 [291]  0.022223457 -0.388824085 -0.473986505  0.386597938  0.474409778
 [296] -0.644372847 -0.721234485 -1.250211184  0.838323353 -2.279153942
 [301] -1.059089068 -0.292466074  2.111932418  0.293002413  0.343701667
 [306] -0.251184564  0.600927145  0.932984412  0.011272686  0.783363390
 [311] -0.016775709 -0.497762864  0.770052274  1.070950469  3.316777042
 [316] -1.105710165  1.188289943  0.864737910  0.418077900 -0.458498024
 [321]  0.614146548  0.684066512 -0.182920456  0.047122886 -1.653757588
 [326]  0.053214134 -0.101053079  0.367353458 -0.933587948 -4.262154637
 [331]  1.817673378  2.070859654  0.651167797  0.433085601  0.165034072
 [336]  0.621844273 -0.206000423 -0.635155878  0.356895541  1.098726115
 [341]  0.945030713 -0.738544755  0.151951795  0.507481427  0.504919057
 [346] -0.155376010 -1.011515717 -0.125766389  0.272836980  0.549421799
 [351]  0.624479600  0.434422838  0.489186406  0.215219062  0.086925398
 [356]  0.250332073 -0.825561841  0.210677766 -1.051174239 -0.844690885
 [361] -1.249085398 -0.354591162  0.669216061  0.131898280 -0.337214816
 [366] -0.602696273  0.367001755  0.233174351  1.226604631  0.867021832
 [371] -0.103562552 -0.253991292  0.140310762  0.415153088  1.054263566
 [376]  0.347754935  0.942819284  0.353410410  0.301856417  1.103475949
 [381] -0.530832961  0.942643392  0.227283957  0.808479172  0.044011932
 [386]  0.562127285  0.213872551  0.000000000  0.000000000  1.484212058
 [391] -0.105147445  0.732022391  0.000000000  0.000000000  0.584212026
 [396]  0.495820938 -0.164458228 -2.108532969 -0.240396173 -1.373560172
 [401]  1.632134480 -0.149052794  1.338662301 -0.152055120 -0.823299862
 [406] -0.964491363 -0.058142352  1.318660009  0.622039332 -0.803652099
 [411] -0.004793864 -1.045112421  0.416646480  0.882906354  1.396461023
 [416]  0.009433072 -0.132050556  0.288061957  0.400244856  0.225119595
 [421] -0.102948058 -0.627693461  0.287545960  0.376028202  0.435495200
 [426] -0.643416636 -0.849366495  0.870841024 -0.633416225 -1.024648220
 [431] -2.127761080  0.692176456 -0.227525778  1.921397380  0.947348377
 [436]  0.490450365  0.539678070 -0.135362211 -0.229025473 -0.112433243
 [441]  0.839508489  0.320915306  0.370885489 -1.745958430  1.410304626
 [446] -0.296680883 -0.543983634  0.729278669  1.285561795 -0.966825513
 [451]  0.231342248 -0.900152333 -0.517048631  1.179941003  0.684899810
 [456]  0.606701292  0.063959066 -0.086746108  0.086821422 -0.287631831
 [461]  0.549450549 -0.505464481  0.155613529  0.000000000  0.000000000
 [466] -0.301603985 -0.733373058 -0.240107125  0.111085397  0.157196357
 [471]  0.207727462  0.336281555 -0.036729259 -0.688926652 -1.012810433
 [476] -0.733507756  0.635383819 -0.701524647  0.306141673  1.084659811
 [481]  0.334448161  0.268518519 -0.018468926 -0.129306364  0.762970498
 [486]  0.550686063  0.018255671 -0.374172941  0.137406678  0.864474226
 [491]  0.997641937 -0.008979885  0.000000000  0.264930400  0.201531640
 [496]  0.272637883  0.178292846  0.872080089  0.198491465  0.000000000
 [501] -0.783588660  0.266217056  0.407115674  0.669898634  1.116364592
 [506] -0.658094125  0.784484637 -0.142702703 -0.025983024 -0.641081175
 [511] -0.863196443  0.905892700  1.255120718 -0.232418008  0.496117343
 [516]  0.236102168 -0.475374732  0.512070227  0.492336673  0.958548119
 [521]  0.088615073  0.181289262 -0.029458800 -0.282045885 -0.185748058
 [526]  1.120791744 -0.790497302  1.058178752  0.246130741  0.237203496
 [531]  0.390252003 -0.314296348 -0.439742792 -0.145839410 -0.609247204
 [536] -2.405743555 -0.464616046  1.145351601  0.440133322  1.625186131
 [541]  0.389333110  0.446205171 -0.298916428 -0.024984385 -0.008330210
 [546]  1.212146457  0.069964606 -0.271437384 -0.065982102 -0.115544918
 [551] -1.487296013  1.115537849  1.592634067  0.469483568  0.719219829
 [556] -0.556743454  0.937157694 -0.297427653 -0.245908248 -0.290967872
 [561]  0.206703684  1.104190260 -0.980117614  0.137362637  0.096828855
 [566]  0.302297461 -0.727345791 -0.267163212 -1.014692751 -1.898474660
 [571]  0.455590387 -0.228842473 -0.658909879 -0.776625666  0.084616686
 [576]  0.959587420 -1.109575849  0.533491405  0.454851752  1.391916820
 [581]  0.554085346 -0.707295008  0.463844943  0.828592629  1.492293225
 [586] -0.165162746  0.286486705 -0.494890159  0.343698193  0.350580271
 [591]  1.244829940  0.535438068 -0.268265741  0.221518987  0.588095990
 [596]  0.156955072  0.724779628  0.598988720  1.012991030  1.952078389
 [601] -0.108875206  0.289397527  0.813221406  0.420058734 -0.607092619
 [606]  0.566108007  0.581438412  0.184101035  0.084530854  0.143213866
 [611]  0.579370027  0.255204346 -1.574602713 -1.936008276  0.794966468
 [616]  1.936231451  0.550034836 -0.802304803  0.036763354 -0.135974422
 [621] -0.187679399 -0.044242893  0.590166353  0.249349125 -1.368009071
 [626]  0.207676618  0.581029570  0.331150195  0.553762652 -0.134942923
 [631]  0.010956103  1.307285010  0.464982158  1.140929966  0.617240156
 [636] -0.056409533  0.317482715  0.513397567  0.097956899  0.548720816
 [641] -0.316312698 -0.599762884  0.599873711  0.760191094  0.674857242
 [646]  0.309384668  0.836189171  0.849646547  0.000000000  0.175237582
 [651] -1.402812353  0.112593401  0.797491650  0.000000000  1.305112253
 [656]  0.100126827  0.340090691  0.415365189  0.694927033 -0.887311446
 [661]  0.354786299 -0.911914359 -1.637212404  1.379707787  0.685481174
 [666]  0.876756003  0.391769547 -0.114776677 -0.216684724  0.065804626
 [671]  0.828593036  0.808739605  0.126160515  1.470018093  1.200369344
 [676] -0.934432419  0.647886429 -0.542740841  0.466385355 -2.425314217
 [681]  0.239497702 -1.388350768 -1.375155524  0.000000000 -2.161211075
 [686]  0.000000000  0.000000000  2.928302399 -0.247247313 -0.935258931
 [691] -0.493728316  1.498591927 -2.282411230 -0.983639805 -1.403065579
 [696] -1.412644554 -2.770948936  1.260610439  2.204466006  1.867234399
 [701] -0.558467811 -1.512541345  0.094455134 -1.034530966  1.373781608
 [706]  1.268071765 -0.681137982  0.020782100 -1.530629913 -1.378582733
 [711]  0.727454267  1.143484264 -0.217010851 -0.666479585  1.080584787
 [716] -1.222750140 -0.456249558 -0.699946705  0.000000000  0.000000000
 [721]  0.447259196  0.815730417  1.084728994  0.436925443  0.368900954
 [726]  0.131761442 -0.349747212 -1.181499114  1.026831241 -0.132270528
 [731] -1.115332334 -0.648549575 -1.316209600  0.226488352 -0.875210732
 [736]  0.459562149  0.543908940 -0.802493462 -1.177362852  1.056170742
 [741] -0.336322870 -1.825175079 -0.864872856 -1.521139363 -2.722041342
 [746]  2.315625608  0.152149106  0.000000000  1.735662742  1.131145705
 [751]  0.668143226  0.495031352 -0.540027731  0.253136694  0.000000000
 [756] -1.489369488 -0.702080238  0.602296959  0.844117210  1.143109997
 [761] -0.729155274  0.315839730 -0.205015559  0.091712829  1.942530421
 [766] -0.118645287  0.827903963 -0.853236229 -0.482500360 -0.709168536
 [771] -0.153050069 -1.394160584 -1.302835147 -1.462536563 -3.143553052
 [776] -0.031434185  2.024211933  1.194282852 -1.884493852 -0.613068446
 [781]  1.678769423  1.029027799 -0.851322590 -0.762802821  1.834756074
 [786] -1.012744652 -0.413840671 -0.323213667 -1.165798108  0.085927430
 [791] -2.126829268 -1.335725678  2.174176601 -0.530000396 -0.803212851
 [796]  1.078285966  1.614054569  0.667369161  0.767620377  0.076946753
 [801]  0.123020145 -2.284595300  0.565837557  0.789278318  0.000000000
 [806]  1.946113588 -0.342244362 -0.206051818 -0.554429702  0.642110120
 [811] -1.222540592  0.228195707 -0.100331867 -0.320611867 -0.383646580
 [816]  0.704115771  0.409471936 -0.638633478 -0.995082665 -0.962064920
 [821] -0.059232349  0.403018689  0.393530361  1.183803065  2.088095146
 [826]  0.018973892  0.375611792 -0.650136075  1.658803835  0.093562874
 [831] -0.826322677  0.380787212  0.060093897 -0.825794828  0.034063813
 [836]  0.597805524 -0.793591094 -0.344997536 -0.962489538  0.437905735
 [841] -0.829923127  0.038565368  0.343099460  0.238195858 -0.881530030
 [846] -0.197208151  0.348702053 -1.235521236 -0.922595778 -1.377051768
 [851]  0.920184037 -1.668979187  0.177390743  0.486960721  2.262805879
 [856]  0.657946268 -0.291806085  1.194053147 -0.308487256 -0.375198236
 [861] -1.285137444 -0.499508358  0.043481698 -0.881109487  0.661723671
 [866] -1.207825123 -0.701487153 -0.750847731  1.297486374  0.642441277
 [871] -0.103730301 -0.155757019  1.392000000  0.244595234  0.665092483
 [876] -0.547323977  1.827902040  0.474830142 -0.188266031 -0.265609362
 [881]  0.038596627  0.675180370 -0.325745382  0.215310085  0.019182812
 [886] -1.350210970 -0.999300101  0.883704489  0.151833684  0.268221574
 [891]  0.205474141  0.394629938 -0.728351767  0.058229814  1.299709020
 [896] -0.838759096 -0.185392607  0.193475990 -0.513652338 -0.512422360
 [901]  0.124863431  0.600155885  0.643061904  0.257890685 -0.153568549
 [906]  0.538316607  0.818449535  0.519707143  0.045286437  0.000000000
 [911]  0.848736326 -0.647091827 -1.031548829  0.000000000  0.000000000
 [916] -0.627662812  0.769436895 -0.733171251  0.352072251 -0.190672311
 [921] -0.645703588 -0.130749116  0.134770889 -0.011536243 -0.330743789
 [926] -0.339558574  0.418150844  0.073257249 -0.805239838 -1.914860561
 [931]  0.376192928 -0.366892852  1.156206692 -0.090030141 -0.477981508
 [936] -0.129911031  0.942094682  0.113245861  1.002457386  1.235807523
 [941]  0.251773861 -0.403348554  0.745014136 -0.056884979  0.022766942
 [946]  0.242792109 -0.242204057 -0.569044006 -0.763067531 -0.146097655
 [951]  0.477437240  0.015328020  0.846743295 -0.334333802 -0.602294820
 [956] -0.272291467  0.722965698 -0.076359194 -1.173009323 -1.287454089
 [961] -0.395582015 -1.073492981 -2.158359170  0.251878936 -0.705110021
 [966]  0.530547280  0.474972598  0.674747475  0.232772806  0.740740741
 [971] -0.417329094 -0.143683895 -0.847356009  1.850284194 -0.336420486
 [976] -0.893530837 -0.024042314  1.527054108 -0.955351151  0.087687831
 [981]  0.999561945  0.003942907  0.780664748  0.125190720  0.074239050
 [986]  0.074183976 -0.027310678 -0.081954418  0.000000000  0.000000000
 [991] -0.515564582 -1.189588159  1.088684043  0.652464429 -0.234301781
 [996]  0.246594645  0.519308110 -0.287445618  1.176470588  0.000000000
 [ reached getOption("max.print") -- omitted 859 entries ]


$CAC
$CAC$x
   [1] -1.29515643 -1.73748095 -0.64473908  0.80621595 -0.58127618
   [6]  1.08701391  1.20671560 -0.28986386  0.03371575  0.31243911
  [11] -0.33945667  0.16251752 -0.11893678  0.33660136 -0.12708849
  [16]  0.34374483  0.49858151  0.11893678 -0.78585462 -0.62658606
  [21] -0.16525073 -0.21192207  0.64972674 -0.10401208 -0.33802867
  [26] -0.25070252  1.19286838  0.38989921 -0.41622437 -0.26743540
  [31]  1.47431030  0.60539493 -0.09588130 -0.09452680 -3.46112468
  [36]  1.99793685  2.75233698  1.35686165  0.75321968  0.97679363
  [41] -0.29831166  0.12029483  0.31810744  0.35234025 -0.13388802
  [46]  0.50010892 -0.73897086  0.41181726 -0.51853045 -0.33660136
  [51] -0.90135081  0.12437034  0.92384406  0.76400741  0.11622132
  [56]  0.02157567 -0.55434358  0.57808605  0.27442933  0.16935286
  [61] -0.26324534 -0.46526336 -0.16798517  0.38553832 -0.26464151
  [66]  0.35808498 -0.56064386 -0.66142809 -0.88527449 -0.52470996
  [71]  0.25766576 -0.34374483  0.02697076 -0.61026077 -0.10943639
  [76]  1.17654789  0.34947225 -0.49705526  0.44432901 -1.02348511
  [81] -0.56855067 -0.42801657  0.07828561  0.19128088  0.86353583
  [86] -0.22573265  0.61026077 -0.35952300 -0.09317247 -0.89328379
  [91]  0.29690223 -0.65473062  0.14614300  0.93006010 -0.09181832
  [96]  0.05936333 -0.69537413  1.07732734 -0.37249915 -2.47167715
 [101] -2.06136298 -0.19128088  0.15705472 -1.43545833  0.12572930
 [106]  1.37745994 -0.70225928 -0.26603820 -0.94050082 -1.69627801
 [111]  0.74429645 -0.55906671 -0.69709231 -1.08458273 -1.36708829
 [116] -1.55495425  0.51390879  1.45850480  0.91151783  0.47429748
 [121]  0.80435118 -0.40302687 -1.33026203 -1.89905057 -0.97029620
 [126]  2.89716927 -0.09046433  1.26457214 -0.20916488  1.13963627
 [131]  1.25859559 -0.08911051 -0.96383948  1.06774082  0.88527449
 [136] -0.56696648  0.38408632  2.28942160  0.21330127 -0.79691985
 [141]  0.96383948  1.49460015 -0.79877355 -0.08775686  0.30254352
 [146]  0.10808001 -1.45460986 -0.24514069  0.58607251  0.94681474
 [151]  1.03263413 -0.65139289 -0.38699113  0.08234381 -1.02121121
 [156] -0.11486392  0.46977563 -0.36672436  0.06882139  0.23681208
 [161] -0.17208920 -0.23958643  0.76040167 -0.68000152  0.83262460
 [166]  1.48235309  0.18716268  1.69627801  0.56064386  0.68340367
 [171] -1.19286838  1.30457170  0.21468087 -0.18030603 -0.27723064
 [176]  0.22711604  0.24097429 -0.84412171 -0.39281058  0.45178275
 [181]  0.81746410 -1.34012592 -1.38095029  0.27582971 -0.97896863
 [186]  0.70398577 -0.86942377 -0.40448976 -0.24792065 -1.70775642
 [191]  0.59731685  1.55948717  0.33089895 -0.65306085  0.95742268
 [196] -0.15978553 -0.81934884  0.68681374  0.05261087  1.51979008
 [201]  0.04316138 -2.64917498  1.71946434  1.45073686 -0.62330776
 [206]  0.43393497  0.85962712 -0.70398577 -0.08640336 -0.08505002
 [211]  0.11214974  0.18441899 -0.36816690  0.33945667  0.53090958
 [216]  0.53401704  1.39865986 -0.36240129 -0.08369684  0.49553017
 [221]  0.26324534  0.02966859  0.75143026 -0.08234381  0.64473908
 [226] -0.75143026 -0.57172335 -1.67396930  0.34660712  1.25562411
 [231] -1.42794312  0.37683839 -0.77488478  1.27971466  0.07152479
 [236] -0.88727147 -0.84797893 -0.08099093  0.86942377 -0.85962712
 [241]  0.36672436 -1.56405236  0.12708849 -0.74607634 -0.07963820
 [246] -1.02804887 -0.50469817 -1.31091336 -0.11214974 -0.60539493
 [251]  0.65473062 -1.20392767 -0.95955722  1.07012823 -1.49460015
 [256]  0.51237068  0.22158508  0.98114826 -0.34660712 -0.48944128
 [261] -0.43097389 -1.09926745 -0.46977563  0.52316321 -0.87534201
 [266]  0.55434358 -1.61161016  0.71264994 -0.23265396 -0.07828561
 [271] -0.07693317 -0.40888362 -0.21744131 -2.27126872 -1.75607987
 [276] -0.37539119 -1.83006345  0.39864337 -0.07558087  1.10421535
 [281]  0.73897086  1.67946844 -1.10919044 -1.54154373  1.56865039
 [286]  0.19815179  0.57172335 -0.32662919 -0.98333257 -1.28585459
 [291] -1.04419342 -0.51698867 -0.52007346  1.65246389  0.23958643
 [296] -1.20951294 -0.24653043 -0.64639984  1.06061483 -2.53339382
 [301] -1.35012195  0.02427313  1.09189566 -0.09723598 -0.25348634
 [306] -0.70744506  1.93285196  3.00115026 -0.17619613  0.03236664
 [311] -0.95316664 -0.46676639  0.90135081  1.44688550  2.81740705
 [316] -1.82291478  1.18195309 -0.46076054  1.50289108 -2.50134545
 [321]  0.36384155 -0.30960872  0.04451105  0.72311812 -2.89716927
 [326] -1.94165739  0.27863211 -0.81370328 -2.03929977 -3.15340619
 [331]  0.09452680  2.22089230  1.09680356 -1.04652206 -0.23542559
 [336]  1.65776864 -1.07492145 -1.12428308  0.79691985  0.82312710
 [341]  2.56827687 -0.59892933  0.46526336  1.81585807  0.25627212
 [346]  0.23542559 -1.42421558 -1.13192632  0.62822774 -0.07422871
 [351]  2.16143638  0.87930459  0.04721064 -0.68681374 -0.46376137
 [356]  0.62330776 -0.07287668  1.17117684 -1.40949969 -1.38445755
 [361] -0.54337060 -0.37683839 -1.88293246  0.11079296 -2.41814673
 [366]  2.32816821  0.03911283  0.97896863  0.56380235  1.14481409
 [371]  1.08945154 -0.57013629  0.83071911 -1.03263413  0.38263513
 [376] -1.30773596  1.32052590 -1.24971417 -0.68170161 -1.18739305
 [381]  0.36816690 -0.53868793 -0.18167668  1.32375734  1.38445755
 [386]  1.88293246 -0.27163017  1.67396930 -0.07152479  0.17345785
 [391]  0.64806240 -0.68510771 -0.14205566 -0.07017303 -0.86745779
 [396]  0.40595351  0.45029001 -0.88129106  0.42063958 -1.84464802
 [401] -1.03033879 -0.87139313  1.08458273  1.19837970  0.55749095
 [406]  0.02831965 -1.08701391 -0.44581777  0.43097389 -1.96901778
 [411]  0.67830340 -0.91561112  0.20090276 -0.54806522  0.73366615
 [416]  0.08369684  1.80200995  1.52840486  2.44403698 -0.27302948
 [421] -0.63151619 -0.13116748  0.61351270  0.32947503 -0.72838201
 [426] -1.15263889  1.31091336  1.01442096  0.54337060  1.02804887
 [431] -0.85184881  0.45477127 -0.52935777  1.78186418  0.71438919
 [436]  0.14478029 -0.39572530 -0.49248344  0.40448976  0.43838375
 [441]  0.27163017 -0.93214011 -0.26883313 -1.23224102  0.96169615
 [446] -0.61514110 -0.48185557 -0.28845792 -0.12980758 -1.23512707
 [451]  0.62987111  0.13524866  2.10876310  1.11922386  0.39281058
 [456]  0.09859083 -0.31810744 -1.29204339 -0.83453311 -0.87732158
 [461]  0.94050082 -0.63811369  0.16115137 -0.06882139 -0.06746988
 [466]  1.45460986 -0.23819902 -1.37745994 -0.20227881 -0.96598724
 [471] -1.05354229 -0.96169615  0.61514110 -1.46242200 -0.34803932
 [476]  0.77488478  0.74251891 -1.16583937  0.87336587 -0.20640928
 [481] -0.78035796  0.15568976 -0.38408632 -1.95061599 -0.16661780
 [486] -1.24677550  0.89328379  0.37828638 -1.49873274 -0.93631228
 [491]  0.57490179 -0.59731685 -0.06611850 -0.06476723  1.22364386
 [496]  1.47831974 -0.12029483  0.70917789 -0.90540638 -0.06341608
 [501] -0.91356256  0.18030603 -0.49553017 -0.51083378  1.41315002
 [506]  0.30395534  1.02576432 -0.30254352  0.45776385 -0.28003413
 [511] -1.04187042  0.99211712 -1.01216792  0.50776359  0.89932857
 [516]  0.31527201  0.36240129  0.96813947 -0.23126882  1.43169062
 [521] -0.76040167 -0.36961021 -0.65807567 -1.01894257 -0.88328102
 [526]  0.47580692  0.42211313  1.70775642  0.26883313  0.32662919
 [531] -0.13797069 -0.06206505 -1.44688550  0.58127618  0.34088536
 [536] -0.75321968 -1.11419313  0.86157983  1.39152362  0.54963277
 [541] -0.47580692 -0.49858151  2.07278195  2.13435979  1.83730688
 [546] -0.93840449 -0.50776359  0.62494607  1.50707558 -0.60054337
 [551]  0.07422871  1.18466869 -0.34088536 -0.71787420 -0.06071413
 [556] -0.62167111  1.03955303 -1.06061483 -0.58767428 -0.86353583
 [561]  0.55591658  1.56405236  0.62658606  0.44879826  0.90947691
 [566]  0.46076054 -1.14481409 -0.39426752 -1.37398629  0.09317247
 [571] -1.00992000 -0.45327650 -1.01667917 -0.10672384  0.48034176
 [576]  0.66815536 -2.22089230 -0.24375142  1.04885639  0.37105429
 [581] -0.69023182 -0.77124886 -1.12937124  1.57328182  0.72136795
 [586]  0.52935777  0.31952611 -0.64308009  0.09994586  0.55277195
 [591]  1.29828207  0.26603820 -0.86549515  0.40741813 -0.89731000
 [596] -0.62494607  0.03506492 -0.70571436  1.10919044  0.26743540
 [601]  0.10943639  0.11350672  2.06136298  1.36025473 -0.28143670
 [606] -0.85573149 -0.90337674  0.20503207 -0.71091284 -0.05936333
 [611] -0.63481149  0.08099093 -1.57794724 -2.19019702  0.20640928
 [616]  1.23802344 -1.25266367 -0.05801263  0.43541694  0.91561112
 [621] -0.20090276  1.41681928  0.08505002 -0.30395534 -2.44403698
 [626] -0.61188593 -0.13524866  2.03929977  0.10130108 -0.14886925
 [631] -0.50623028  1.84464802  0.29972168  1.18739305 -0.17072087
 [636] -0.56380235  1.22936520  0.27723064 -0.66815536 -0.17482683
 [641] -1.72540779  0.28564775 -0.21054328  1.54154373  1.14222135
 [646] -0.42211313  0.42506300  0.73190250  0.37539119  0.99653823
 [651] -0.60377616  0.71787420 -0.11757894 -0.64142286  0.89731000
 [656] -0.79322066 -1.13448881  1.02121121  1.31730819  0.40888362
 [661]  0.58287347 -1.89093011 -1.34677498  0.42801657 -1.25562411
 [666]  0.55120168  1.11670496 -0.82502064 -0.68340367  1.24971417
 [671]  0.18579066  0.19952709 -0.15023279  1.29515643  0.83835930
 [676] -0.23681208  0.95529250 -1.47032442  0.30819445 -1.71358102
 [681]  0.54493414  0.09588130 -0.32378600 -1.00097890  0.29408514
 [686] -1.09680356 -0.05666204  0.92798410 -1.32700267 -1.58264727
 [691]  0.49705526  1.03033879 -1.76882504 -0.49400624  1.64199174
 [696] -2.08447778 -1.66852033 -0.05531155  1.46242200  1.71358102
 [701] -0.25766576 -0.83835930 -0.76943471 -0.51237068  1.66852033
 [706]  1.74981282 -0.78953228  0.24514069 -1.21796230 -0.90947691
 [711] -0.19265433 -0.11079296 -1.93285196 -0.82881663  0.36528258
 [716] -1.03493493 -1.74361374 -0.20365525 -0.05396116 -0.05261087
 [721]  0.80995394  1.22079815 -0.47731744 -0.32094543  1.33353559
 [726]  0.17072087  0.19540232 -0.69365799  0.87534201  0.03776346
 [731] -1.15002280 -1.52408333 -0.57808605  1.82291478 -0.95742268
 [736]  0.65139289  0.72487052  0.15432509  0.69365799  0.85767768
 [741] -0.41035000 -1.63682250  0.89127610 -0.30113230 -0.94470591
 [746]  1.10173803  0.52780723 -0.05126067  0.44730752  0.05531155
 [751]  0.33374880 -0.57968038 -0.92591210 -0.53712966 -0.04991057
 [756] -1.07973949 -2.01818678  0.35521115 -1.78849901  0.09181832
 [761] -1.14222135 -2.10876310  1.27666270  1.57794724 -0.31668940
 [766] -0.74251891  1.03493493 -0.96813947 -0.45926168 -1.91567770
 [771]  0.68852178 -1.32375734 -1.24093023 -0.42949476 -1.63169663
 [776] -0.71613061  1.26757743  1.04419342 -1.59215363  0.25348634
 [781]  0.70225928  0.53246266 -2.00795889 -1.06535948 -0.43986861
 [786]  0.63316298  0.53712966  1.55045305 -0.04856056  1.40586804
 [791] -0.47429748  1.54598305 -0.04721064 -0.04586081  2.17559178
 [796]  1.23512707 -0.49096179  0.46676639 -0.67322071  0.82881663
 [801]  0.77306554 -1.07012823 -0.21468087  0.94892778 -0.34517562
 [806]  2.01818678 -0.20778688 -0.94892778  0.47731744 -0.12301161
 [811] -1.50707558 -0.56538371 -1.27362259 -1.53713459 -0.04451105
 [816]  0.27023139  1.00767717 -1.24384755 -0.53557270 -1.45850480
 [821]  1.30142045  0.29267747  0.91766352  1.64720523  0.58927756
 [826] -0.80435118  0.41035000 -1.59696127 -0.79506890 -1.13705877
 [831] -1.73141283  0.14750599  0.88727147 -1.66312045  0.84604875
 [836]  0.14341784 -0.91151783  1.15002280 -2.25383480 -0.18579066
 [841] -0.27863211 -1.17924618  0.12980758  1.37398629 -1.32052590
 [846] -0.16388397  0.21606088 -1.51128663  0.18304766 -1.44305549
 [851]  1.15789488 -1.99793685  0.51083378  0.66647072  1.98811155
 [856]  0.98333257 -0.13660955  1.74361374 -1.18466869 -1.42050771
 [861] -0.48488650 -1.21231978 -0.54963277 -1.40586804 -0.11622132
 [866] -0.99432524  0.38699113  1.34677498  2.19019702 -0.04316138
 [871] -0.04181179 -1.61657083  1.77530688  0.97029620 -1.37052914
 [876]  0.76581400  1.06535948  0.24931134 -0.04046227 -0.45477127
 [881]  0.65306085 -0.31527201 -1.19561950 -0.14069374  0.07963820
 [886] -0.92384406 -1.00543940  1.91567770  0.56855067  0.32805178
 [891] -0.70917789  1.69062163 -0.66984190  0.86745779 -0.53401704
 [896] -0.32947503  0.05666204 -0.87336587 -0.95104507 -0.97245745
 [901] -0.22020340  0.64308009  0.06341608 -0.43689986  0.22434970
 [906] -0.27023139  0.78218756  0.56696648 -0.21606088  0.79137513
 [911] -0.61677114 -1.47431030 -1.65776864 -0.76762310 -0.03911283
 [916]  0.26045454  0.78401977 -1.55948717  0.75680580 -1.21513620
 [921] -0.35521115 -0.61840281 -0.35808498  0.52007346  0.92591210
 [926] -0.91971980  0.20778688 -1.28894282 -1.33353559 -1.97847451
 [931]  0.40302687  1.15526289  1.20951294 -0.74964323 -0.12572930
 [936] -0.93006010  1.53275512 -0.71438919  1.33682349  1.49049293
 [941] -0.19402814 -1.10421535  1.16318304 -0.35377533 -1.09434631
 [946]  0.32378600  0.31102360 -1.47831974 -0.76220330 -1.14741456
 [951]  0.21192207 -0.15568976  1.15263889 -1.19837970 -0.29127038
 [956] -1.43924652  1.62661328 -0.14478029 -0.75680580 -1.26157824
 [961] -1.43169062  0.44581777 -1.62157161  0.84991228 -1.26757743
 [966]  2.34893236 -1.64199174  2.30836181  0.18853506  1.16850394
 [971]  0.13388802  0.25070252 -1.27666270  1.11168831  0.93214011
 [976]  0.07287668  0.77670659  1.90729823 -1.69062163  0.25487898
 [981]  0.91971980 -0.60215898  0.84797893  0.52625797 -1.08215794
 [986] -0.68852178  0.15159661  0.46226044 -0.03776346 -0.03641416
 [991] -1.39865986  0.93422416  0.37394478  2.14770128 -0.58607251
 [996]  1.31410406 -0.27442933 -0.64972674 -0.72136795 -0.03506492
 [ reached getOption("max.print") -- omitted 859 entries ]

$CAC$y
   [1] -1.257897112 -1.856612396 -0.576251455  0.878168725 -0.510707446
   [6]  1.178323514  1.320265206 -0.193467623  0.017103763  0.313515362
  [11] -0.244345948  0.148105953 -0.034127752  0.341394026 -0.039693791
  [16]  0.346040390  0.520097236  0.112479613 -0.696590079 -0.554392714
  [21] -0.073951874 -0.108163498  0.689576566 -0.016979851 -0.243419190
  [26] -0.153217569  1.301506110  0.398339318 -0.335289187 -0.173815531
  [31]  1.595147158  0.635780628  0.000000000  0.000000000 -7.295500742
  [36]  2.257777778  3.900092721  1.461319650  0.791600242  1.085355877
  [41] -0.199633107  0.113531924  0.318608921  0.355278032 -0.042911549
  [46]  0.520525892 -0.661968823  0.424548581 -0.444159041 -0.241883466
  [51] -0.829786088  0.114099430  1.009443178  0.805931657  0.111928366
  [56]  0.005323963 -0.479131175  0.588424093  0.271218890  0.153805357
  [61] -0.169455624 -0.387226819 -0.074551361  0.389022116 -0.169869413
  [66]  0.361586728 -0.482144749 -0.596283874 -0.814096728 -0.448188347
  [71]  0.244087655 -0.254315243  0.010849517 -0.531568670 -0.021812630
  [76]  1.281771572  0.350045775 -0.423956209  0.468876314 -0.976290098
  [81] -0.498374865 -0.348432056  0.065559441  0.174710636  0.942882058
  [86] -0.124183359  0.648718780 -0.273928456  0.000000000 -0.818656757
  [91]  0.293239207 -0.584763658  0.136158161  1.033394974  0.000000000
  [96]  0.043066322 -0.624192854  1.175005415 -0.283649987 -2.946543581
 [101] -2.388984129 -0.090646422  0.141763538 -1.398640997  0.114856716
 [106]  1.474215568 -0.627473149 -0.170658172 -0.866146219 -1.776168305
 [111]  0.784176030 -0.481941702 -0.624307136 -1.027477689 -1.322892567
 [116] -1.593122520  0.531492455  1.579970831  0.999042833  0.503465024
 [121]  0.878123527 -0.321317988 -1.289415074 -2.119700748 -0.903851987
 [126]  4.009549461  0.000000000  1.377199694 -0.104499274  1.232056721
 [131]  1.366324129  0.000000000 -0.894829246  1.165780902  0.977235497
 [136] -0.497874245  0.387923765  2.704973118  0.190850101 -0.712963971
 [141]  1.068903141  1.616227357 -0.715200683  0.000000000  0.306418665
 [146]  0.107186880 -1.424059104 -0.141204584  0.609126013  1.048705335
 [151]  1.139463970 -0.581825875 -0.303256012  0.074710497 -0.975843865
 [156] -0.026925148  0.500942634 -0.278700825  0.053746103  0.214868930
 [161] -0.080403087 -0.134112977  0.800386764 -0.607513989  0.911479277
 [166]  1.599277403  0.167346512  1.869061293  0.574005740  0.718507949
 [171] -1.163673160  1.423086767  0.191793267 -0.085638003 -0.186548351
 [176]  0.207102086  0.216755721 -0.759519139 -0.309173847  0.477909401
 [181]  0.890553054 -1.298961834 -1.331300813  0.272942631 -0.919315906
 [186]  0.746423388 -0.792344104 -0.321543408 -0.150884495 -1.797717680
 [191]  0.620821394  1.687496704  0.337084479 -0.584039694  1.055367819
 [196] -0.072023871 -0.736202636  0.720916965  0.036045314  1.652339527
 [201]  0.030382824 -3.437278526  1.892529489  1.569252933 -0.547084747
 [206]  0.458411858  0.932920955 -0.627919827  0.000000000  0.000000000
 [211]  0.111212213  0.166633003 -0.282300751  0.343764218  0.544108016
 [216]  0.546174275  1.500049836 -0.274954583  0.000000000  0.516961253
 [221]  0.259600313  0.014656310  0.791324736  0.000000000  0.683338180
 [226] -0.669073406 -0.503973638 -1.763101500  0.347050074  1.363636364
 [231] -1.389159680  0.380604024 -0.689383494  1.403213011  0.058676837
 [236] -0.816107120 -0.763697280  0.000000000  0.953279380 -0.781980032
 [241]  0.371765639 -1.595140501  0.115427080 -0.666700085  0.000000000
 [246] -0.979006863 -0.433187239 -1.274504786 -0.025922854 -0.528963336
 [251]  0.693394505 -1.170135653 -0.890611903  1.168199598 -1.468206280
 [256]  0.530278927  0.200443085  1.089703095 -0.260375983 -0.417689135
 [261] -0.351281917 -1.036514785 -0.393428678  0.539097945 -0.801656403
 [266]  0.567299973 -1.665691022  0.757657755 -0.128907509  0.000000000
 [271]  0.000000000 -0.328062816 -0.113311390 -2.668539326 -1.881451881
 [276] -0.294134284 -1.996936518  0.410998553  0.000000000  1.199123717
 [281]  0.774752193  1.842849067 -1.054618117 -1.565129586  1.692597025
 [286]  0.179331988  0.581785634 -0.233592881 -0.919834987 -1.243459180
 [291] -0.991340018 -0.443088963 -0.445060979  1.805620065  0.216709438
 [296] -1.172252888 -0.143951172 -0.576634760  1.159958242 -3.124641670
 [301] -1.302006273  0.005996282  1.187192709 -0.005925575 -0.154074074
 [306] -0.635052525  2.221956755  4.037630011 -0.084245998  0.016863406
 [311] -0.876749283 -0.391222997  0.990437158  1.566903393  3.973362930
 [316] -1.996157131  1.285263043 -0.381761480  1.630053436 -3.016623294
 [321]  0.366902141 -0.212789175  0.032806605  0.765236403 -3.970707893
 [326] -2.169123877  0.277152261 -0.731271953 -2.360788863 -4.295134557
 [331]  0.093109870  2.586046512  1.190907992 -0.991696039 -0.132746033
 [336]  1.812579300 -1.020710937 -1.073205828  0.860606061  0.895325081
 [341]  3.108808290 -0.525616589  0.493554756  2.062749177  0.243432971
 [346]  0.214604394 -1.386306002 -1.085776330  0.664394246  0.000000000
 [351]  2.553948577  0.962560860  0.033257580 -0.615060675 -0.384701160
 [356]  0.660435440  0.000000000  1.278843481 -1.356025254 -1.341273375
 [361] -0.468212331 -0.294717751 -2.097544338  0.110317599 -2.865096857
 [366]  2.734654884  0.023247704  1.086577571  0.574811749  1.240212608
 [371]  1.179857740 -0.502148078  0.902820613 -0.983661220  0.387270584
 [376] -1.269149055  1.432697208 -1.211478339 -0.610341904 -1.159947689
 [381]  0.373928551 -0.464236589 -0.086370703  1.434993084  1.488551787
 [386]  2.132900409 -0.180881386  1.839547526  0.000000000  0.156367950
 [391]  0.689098250 -0.614874619 -0.053798149  0.000000000 -0.791258478
 [396]  0.417774402  0.475470067 -0.812002581  0.439143399 -2.051171327
 [401] -0.980932437 -0.795859305  1.178120617  1.308566676  0.569208035
 [406]  0.010884354 -1.028459487 -0.362876622  0.452488688 -2.224785761
 [411]  0.713523232 -0.847930380  0.180038258 -0.471751095  0.773050446
 [416]  0.078391847  2.058971633  1.661093142  2.901207938 -0.183418929
 [421] -0.556518087 -0.042236418  0.649659325  0.335852225 -0.653765690
 [426] -1.121347723  1.426898094  1.128608924  0.555411368  1.135659715
 [431] -0.770722744  0.478370454 -0.450496570  2.010696287  0.761203811
 [436]  0.135081049 -0.314763927 -0.421010425  0.417757198  0.461129768
 [441]  0.269420745 -0.860824999 -0.175667537 -1.191613455  1.058416446
 [446] -0.538771400 -0.405001772 -0.193158136 -0.040743570 -1.192235186
 [451]  0.665188470  0.122938224  2.394351786  1.219146597  0.399842038
 [456]  0.098333251 -0.221032467 -1.255291917 -0.752779301 -0.808720113
 [461]  1.043196435 -0.566330878  0.146169355  0.000000000  0.000000000
 [466]  1.570285369 -0.133789208 -1.329760842 -0.095544604 -0.895958122
 [471] -0.995479709 -0.892628123  0.652207671 -1.434816148 -0.260878639
 [476]  0.826532747  0.783438830 -1.127413127  0.958033948 -0.103145952
 [481] -0.691791430  0.140361822 -0.301095364 -2.181723510 -0.074523581
 [486] -1.209247816  0.981396603  0.384471619 -1.500079791 -0.864070854
 [491]  0.582883913 -0.519930676  0.000000000  0.000000000  1.339285714
 [496]  1.595573224 -0.037015494  0.751163775 -0.834820960  0.000000000
 [501] -0.841848891  0.160187954 -0.421153641 -0.438995664  1.516373609
 [506]  0.307219662  1.135343507 -0.208855472  0.481372959 -0.187460946
 [511] -0.986018364  1.101217135 -0.964144257  0.526232700  0.989373397
 [516]  0.316193241  0.366868186  1.075988468 -0.127336627  1.540187678
 [521] -0.678051231 -0.283185841 -0.593336376 -0.969288848 -0.813929528
 [526]  0.503791420  0.444421477  1.888151464  0.267622702  0.327340484
 [531] -0.050195763  0.000000000 -1.411209321  0.601090113  0.344321231
 [536] -0.671140940 -1.061776062  0.934531451  1.490563158  0.561403509
 [541] -0.403748380 -0.430408888  2.337270671  2.450884086  2.066254375
 [546] -0.864255519 -0.435895006  0.661463786  1.630974330 -0.525630291
 [551]  0.060790274  1.289840172 -0.253760266 -0.642952958  0.000000000
 [556] -0.544692737  1.146842672 -0.999629767 -0.514210920 -0.789399493
 [561]  0.568343279  1.690684751  0.662251656  0.473868237  0.998214204
 [566]  0.489640477 -1.109857884 -0.310233131 -1.327170381  0.088122072
 [571] -0.959221501 -0.369625228 -0.967408660 -0.018968134  0.507493834
 [576]  0.707847671 -2.605313715 -0.139523695  1.151474272  0.376280067
 [581] -0.616873873 -0.687547746 -1.081730769  1.705953827  0.764599063
 [586]  0.540643081  0.320754717 -0.573631747  0.099309562  0.566920206
 [591]  1.414008550  0.264035575 -0.790020790  0.419111484 -0.820812465
 [596] -0.551737037  0.018806714 -0.629906454  1.201570557  0.266442294
 [601]  0.107226107  0.111768267  2.325905940  1.463835978 -0.188180474
 [606] -0.776585716 -0.832428520  0.182481752 -0.637522769  0.000000000
 [611] -0.563703025  0.069133982 -1.621223287 -2.574906367  0.182604517
 [616]  1.347851113 -1.211604903  0.000000000  0.459924304  1.001478373
 [621] -0.094433165  1.517084928  0.079143389 -0.209331535 -2.918142831
 [626] -0.532987612 -0.043446778  2.308509611  0.103851964 -0.061303405
 [631] -0.434105601  2.080470120  0.301764160  1.291367739 -0.077682325
 [636] -0.484748708  1.341850099  0.276606357 -0.601428959 -0.081888904
 [641] -1.812138597  0.282865755 -0.106353463  1.671064204  1.233837188
 [646] -0.341803463  0.446771064  0.772755863  0.378956754  1.114812347
 [651] -0.527101819  0.763931820 -0.030676191 -0.569875504  0.987567234
 [656] -0.711603947 -1.086048454  1.133534851  1.428508637  0.420350147
 [661]  0.604151383 -2.118989405 -1.301546956  0.448450404 -1.215577068
 [666]  0.563808842  1.214737029 -0.742955115 -0.611214457  1.359180036
 [671]  0.167069686  0.179958741 -0.061338941  1.411661552  0.916479336
 [676] -0.132796436  1.055205250 -1.438940532  0.310077519 -1.807487549
 [681]  0.559660706  0.095656333 -0.230224578 -0.944792755  0.285701727
 [686] -1.034361851  0.000000000  1.027457927 -1.288795371 -1.625366374
 [691]  0.519140484  1.136210536 -1.940497336 -0.421138432  1.778080946
 [696] -2.457441580 -1.758966607  0.000000000  1.585303306  1.891035939
 [701] -0.157664760 -0.753474102 -0.686457244 -0.439439714  1.839080460
 [706]  1.963882619 -0.699579367  0.227404468 -1.178930510 -0.837347499
 [711] -0.090797657 -0.022720044 -2.163439687 -0.743287188  0.369746326
 [716] -0.983912334 -1.860224169 -0.095973895  0.000000000  0.000000000
 [721]  0.883808060  1.328381660 -0.404097359 -0.226457822  1.442216758
 [726]  0.153824640  0.176859350 -0.617914886  0.958346968  0.023152436
 [731] -1.115689088 -1.558988764 -0.508869549  2.065009560 -0.885162982
 [736]  0.689883287  0.769627857  0.139710334  0.730130679  0.932594645
 [741] -0.329338578 -1.716383662  0.980575271 -0.203458800 -0.871096284
 [746]  1.196597177  0.540415704  0.000000000  0.473193366  0.036579790
 [751]  0.338239327 -0.510204082 -0.851648352 -0.461808442  0.000000000
 [756] -1.025331725 -2.292223316  0.359815774 -1.969501410  0.087774906
 [761] -1.101096224 -2.473028228  1.399201899  1.708677892 -0.220404565
 [766] -0.662674259  1.141473539 -0.898964237 -0.379609544 -2.127975454
 [771]  0.723062143 -1.285140562 -1.200162734 -0.350010294 -1.704545455
 [776] -0.641093011  1.385656865  1.147626500 -1.650335224  0.241216571
 [781]  0.742833229  0.545227957 -2.287868615 -1.009513742 -0.357733995
 [786]  0.669810310  0.548251450  1.683430386  0.000000000  1.509787589
 [791] -0.394912299  1.673446270  0.000000000  0.000000000  2.557479996
 [796]  1.343143548 -0.419042050  0.494201693 -0.603758886  0.901342216
 [801]  0.825322847 -1.015986133 -0.111884030  1.051913899 -0.260240964
 [806]  2.299961345 -0.103910826 -0.874704492  0.505604579 -0.037966874
 [811] -1.509756445 -0.496505182 -1.225656429 -1.564569130  0.000000000
 [816]  0.269058296  1.123037170 -1.203931204 -0.457597613 -1.434067856
 [821]  1.419446416  0.284914526  1.006828490  1.786331113  0.610849857
 [826] -0.717968486  0.422248107 -1.652892562 -0.712565728 -1.098792318
 [831] -1.836652988  0.137649758  0.977497200 -1.744479177  0.923645320
 [836]  0.132194427 -0.837818625  1.249423934 -2.665250594 -0.088330043
 [841] -0.187217224 -1.151461470  0.115960363  1.474149731 -1.281519145
 [846] -0.073579650  0.194603692 -1.511811024  0.165227588 -1.410099505
 [851]  1.257556131 -2.260007462  0.528985112  0.705218618  2.257056669
 [856]  1.090449349 -0.046899427  1.955059694 -1.155655553 -1.376099327
 [861] -0.409148133 -1.174549668 -0.474337792 -1.354824890 -0.027142935
 [866] -0.933970460  0.389169042  1.452361452  2.561756633  0.000000000
 [871]  0.000000000 -1.684420423  2.001494449  1.077913244 -1.325257545
 [876]  0.807932427  1.165755920  0.231493390  0.000000000 -0.374666393
 [881]  0.690330225 -0.220005116 -1.163983181 -0.051880674  0.067479886
 [886] -0.850710655 -0.957413414  2.197453912  0.578901122  0.334035665
 [891] -0.635115755  1.850515464 -0.602257199  0.952138493 -0.453926464
 [896] -0.238131428  0.040629761 -0.797035232 -0.875083158 -0.913784202
 [901] -0.114625124  0.683323770  0.046627293 -0.357309306  0.202681634
 [906] -0.176339401  0.841689614  0.577051883 -0.112699145  0.856454177
 [911] -0.539001322 -1.441717791 -1.742919390 -0.686305564  0.000000000
 [916]  0.249840527  0.843098786 -1.593227469  0.796152819 -1.176844784
 [921] -0.268211565 -0.543244406 -0.270401817  0.536847243  1.014023732
 [926] -0.848996155  0.183100867 -1.247110681 -1.295520113 -2.233496939
 [931]  0.417418773  1.252668240  1.320388350 -0.668017303 -0.038586627
 [936] -0.854747987  1.663051338 -0.640113798  1.448158141  1.612027790
 [941] -0.090807115 -1.042557742  1.269652601 -0.266752027 -1.032416818
 [946]  0.324306794  0.312483164 -1.444760728 -0.681198910 -1.113854595
 [951]  0.188658307 -0.066459903  1.252493904 -1.165845649 -0.193830647
 [956] -1.403839751  1.772750295 -0.055297501 -0.675002766 -1.219919786
 [961] -1.392883325  0.468946586 -1.690573770  0.926408430 -1.221960874
 [966]  2.741317226 -1.718485020  2.714828023  0.167991936  1.274597496
 [971]  0.121439611  0.231558055 -1.226622662  1.202873531  1.034501733
 [976]  0.059909591  0.827345961  2.191751242 -1.769677760  0.242000538
 [981]  1.008583691 -0.525812620  0.923701212  0.539625436 -1.026099768
 [986] -0.616726035  0.139089499  0.491479246  0.000000000  0.000000000
 [991] -1.350273776  1.034649997  0.378686863  2.465462274 -0.513378967
 [996]  1.428199114 -0.185004368 -0.581784482 -0.647332988  0.000000000
 [ reached getOption("max.print") -- omitted 859 entries ]


$FTSE
$FTSE$x
   [1]  0.875342009 -0.755011527  1.160534902  0.747858595 -1.065359478
   [6]  1.072521761  1.014420963  0.087756855 -0.808083534  1.781864184
  [11]  1.252663668  0.199527087 -0.826917147 -0.400103684  0.865495146
  [16]  1.470324418 -0.489441280 -0.150232789  0.465263357  0.277230642
  [21]  0.016181201 -0.448798263  0.124370342  0.475806917 -0.927984105
  [26] -0.733666152  1.215136204  0.143417841 -1.559487170 -0.174826828
  [31]  0.789532284  1.181953091  0.411817256  0.176196131 -3.153406194
  [36]  0.710912844  2.253834800  0.998756101  0.871393127 -0.098590829
  [41] -1.157894875  0.206409282  0.680001523  0.360961770  1.621571613
  [46] -0.623307755 -0.320945426 -0.178935732  0.189907790 -0.823127102
  [51] -1.217962298 -0.312439110  0.753219684 -0.901350805 -1.104215353
  [56] -0.693657988 -0.653060847  0.238199023  0.565383709 -1.171176839
  [61] -0.256272124  1.007677172 -0.220203400  0.155689761  1.109190438
  [66]  1.165839367 -0.184418986 -1.039553035 -0.158419976 -1.466361761
  [71]  0.146143003 -0.885274487 -0.796919854 -0.911517835  0.961696145
  [76]  0.089110513  0.093172475  0.466766389  0.608637221 -1.380950295
  [81] -0.930060100  0.058012629 -1.707756416 -0.832624598  2.161436385
  [86] -0.360961770  1.203927669 -0.673220713 -0.963839475 -1.226499513
  [91]  0.664787965 -0.453276503  0.187162683  1.021211206 -0.313855244
  [96]  0.994325241 -1.532755121  0.771248856 -0.881291064 -2.147701284
 [101] -2.061362980  0.472789121 -0.581276182 -1.034934930  0.504698173
 [106]  0.815582246 -1.370529139 -1.137058773 -0.554343576 -0.382635132
 [111]  0.275829715  0.181676676 -1.023485109 -1.114193130  1.111688306
 [116] -1.072521761 -0.760401672  2.237060137  1.507075579 -0.683403669
 [121] -0.540247501 -1.163183043 -1.282778578 -1.859635855 -0.838359300
 [126]  2.061362980 -0.097235975 -0.095881300  1.815858073  0.051260673
 [131]  2.817407051 -0.094526801 -0.117578942  0.573311845 -0.680001523
 [136] -0.649726742 -0.948927784  1.587382521 -1.173858130  0.629871114
 [141]  1.353484113  1.018942572  0.214680871 -0.348039324  0.413285400
 [146] -0.188535059 -1.209512942  0.154325089 -0.883281024  1.524083329
 [151]  0.602158982 -0.379735168  0.207786884  0.989913817 -0.668155360
 [156] -0.282839826 -0.595705916 -0.773065541 -0.998756101  1.051196457
 [161] -0.183047659 -0.817464095 -0.166617795 -0.552771947  1.370529139
 [166]  0.762203300 -1.099267451  0.336601363 -0.165250729  0.883281024
 [171] -0.774884781  0.915611117 -0.264641513 -0.006741924 -0.512370678
 [176]  0.543370600 -0.475806917 -1.147414556 -0.362401286  0.901350805
 [181]  1.223643862 -2.308361815 -1.564052364 -1.028048865 -0.376838394
 [186]  1.028048865 -1.439246522  0.135248658 -0.697092314 -0.940500815
 [191]  0.936312283  0.328051780  0.378286384 -1.384457552  0.246530430
 [196] -0.809953940 -1.725407795 -0.284243507 -1.327002669  0.963839475
 [201]  0.162517520 -0.719619975  2.220892296  3.461124681  0.917663521
 [206]  0.456267049  1.915677702 -0.192654329 -0.093172475 -0.091818320
 [211] -0.751430255 -1.014420963  0.076933172  1.616570833  0.744296449
 [216] -0.468270477  0.671530349 -0.643080086  0.266038199 -0.090464333
 [221]  0.094526801  1.731412828  0.136609547  1.119223863  0.559066713
 [226] -0.861579831 -0.203655249 -1.330262031 -0.705714361  0.974623251
 [231] -0.250702523  0.521617717 -0.579680379  0.613512703 -0.089110513
 [236] -0.600543374 -0.386991129 -0.318107437  0.641422863 -0.582873468
 [241]  0.394267521 -1.304571699  0.033715750 -0.769434713 -1.223643862
 [246] -0.616771139  0.020226997 -1.203927669 -0.624946069 -0.611885927
 [251]  1.114193130 -1.009919999 -1.844648016  1.087013912 -1.795213515
 [256]  0.503167245 -1.498732738  1.279714656 -1.270594204 -1.067740821
 [261]  0.264641513 -1.470324418 -1.053542290  1.062984162 -1.528404858
 [266]  1.314104058 -1.220798154  1.327002669 -0.486403639 -0.771248856
 [271]  0.294085140  0.102656486 -0.268833132 -2.348932362 -1.577947245
 [276]  0.636461719 -1.545983054  0.621671114 -1.310913362 -1.626613277
 [281]  1.384457552  2.370761549 -0.742518914 -0.765814001  1.077327344
 [286] -0.813703281 -0.903376738 -0.942601281 -1.573281819 -1.424215576
 [291] -1.021211206 -0.483370478  0.844121708  2.096465896  1.005439403
 [296] -1.264572142  0.462260438 -0.330898947  0.342314746 -2.568276871
 [301] -1.756079872  0.211922070  1.502891083  0.040462274 -0.087756855
 [306] -0.907439769  0.830719108  2.752336985 -1.198379702  0.530909576
 [311] -1.941657387 -0.681701610  0.719619975  1.647205232  2.418146732
 [316] -2.393782545  0.442841227  3.153406194  3.001150261 -0.463761374
 [321]  1.320525901 -0.375391193  1.959733938 -1.134488812 -2.050206632
 [326]  0.267435404 -0.753219684  0.957422684 -1.243847553 -3.461124681
 [331]  2.147701284  1.478319741  1.084582727  0.099945863  0.823127102
 [336]  1.363663552 -0.608637221 -1.490492928  0.877321577 -0.198151791
 [341]  2.393782545  1.391523619  0.592488679  0.549632774 -0.510833777
 [346]  0.397183912 -1.070128233 -0.513908791  0.796919854  1.409499686
 [351]  0.853788545 -0.789532284  0.925912101 -0.523163215 -0.465263357
 [356]  0.911517835 -0.974623251  1.395082856 -1.435458325 -0.978968627
 [361] -0.123011613  1.187393051  0.085050020  1.264572142 -0.559066713
 [366]  0.191280879 -0.961696145  1.532755121  0.863535834  0.873365866
 [371]  0.600543374 -1.402254840  0.323786003 -0.656402227 -0.335174740
 [376]  0.714389194 -1.018942572 -1.246775496 -0.590882359  0.250702523
 [381] -0.294085140  0.707445064  0.352340246  2.205284963  0.842197799
 [386]  1.564052364 -0.787692121 -0.008090336 -0.086403358 -0.085050020
 [391]  0.921779971 -0.830719108  0.633162979 -0.083696837  0.674913004
 [396] -1.373986290 -0.460760541 -0.548065218 -0.909476911 -1.298282071
 [401] -0.853788545 -0.716130610  0.654730623  0.263245342 -0.206409282
 [406] -1.301420449  0.506230285  1.142221353  0.362401286 -0.544934137
 [411]  2.501345446 -0.257665760 -0.846048746 -0.551201681  1.969017784
 [416] -0.893283788  1.743613740 -0.478829051 -0.243751421  0.320945426
 [421] -1.802009946 -0.815582246  0.832624598  0.392810584  0.114863917
 [426] -1.587382521  0.062065052  1.053542290  0.083696837 -0.191280879
 [431] -1.055893934 -0.151596606  0.515448120  1.737480953  0.659750952
 [436] -0.113506724  1.606688823 -0.737200322  0.507763585  1.762416670
 [441] -0.435416939  0.295493393 -0.253486340 -1.673969302  0.284243507
 [446] -0.247920647 -1.409499686 -0.403026872  0.755011527 -1.641991740
 [451] -0.232653959 -0.125729300 -0.474297479 -0.009438762 -0.395725296
 [456]  0.661428091  0.808083534 -0.114863917 -0.497055264 -1.474310299
 [461] -0.410349998 -0.570136293 -0.116221323 -0.082343808 -0.080990929
 [466]  1.126823516 -0.322365390 -0.218822145 -0.840277002  0.239586428
 [471]  1.176547886  0.597316848  0.494006236 -1.731412828 -1.109190438
 [476]  0.457763852 -1.647205232 -0.584472241  1.217962298 -0.079638199
 [481] -0.127088491 -0.871393127 -0.578086050  0.339456669  1.641991740
 [486]  0.287052552  1.104215353 -0.636461719 -0.216060883  0.483370478
 [491] -0.594096529 -1.367088290 -0.239586428 -0.319526110  0.603776164
 [496]  0.537129662  0.414754435  0.375391193 -0.782187555 -0.078285614
 [501]  0.384086320  0.616771139 -0.568550673 -1.176547886  0.673220713
 [506] -0.120294834  0.983332566 -0.423587607  0.059363328  1.023485109
 [511] -0.828816630  0.571723349 -0.436899865  0.148869251  1.034934930
 [516]  0.173457852 -0.417695198 -0.369610210 -0.433934970  0.416224367
 [521] -0.597316848  0.620036135 -0.605394926 -1.458504802 -0.994325241
 [526]  0.425063002 -0.002696752 -0.217441306 -0.228499859 -0.676607229
 [531]  0.274429329 -0.325207270 -0.135248658  0.044511053  0.439868605
 [536] -0.989913817 -0.555916576  0.260454538  0.343744832  0.758602509
 [541]  1.573281819  0.205032071  1.490492928  0.389899206  0.666470718
 [546]  0.125729300 -0.275829715  0.068821391  1.144814095  0.716130610
 [551] -0.764007406  1.498732738  0.106723840  0.029668592 -0.189907790
 [556]  0.712649943  2.007958893 -0.451782750 -0.442841227 -0.778530978
 [561]  0.309608718  1.285854591 -0.076933172  0.903376738 -0.075580872
 [566] -0.131167483 -0.746076339 -0.641422863 -0.767623099 -0.194028142
 [571] -0.844121708 -0.246530430 -0.289863864  0.231268816 -0.631516191
 [576]  0.118936778 -1.685018832  0.618402813  0.049910572 -0.147505990
 [581] -0.231268816  0.236812077 -0.368166900  0.151596606  0.907439769
 [586]  0.444329005 -0.392810584  0.315272007  0.055311546  1.206715600
 [591]  0.735432089  0.653060847 -0.469775625  0.669841901 -0.366724356
 [596] -0.428016575 -0.698812562  0.210543276  1.420507713  0.686813744
 [601] -0.438383752  1.067740821  1.323757343  0.420639577 -0.688521779
 [606] -0.905406385 -0.557490953  0.356647694  0.329475030 -0.372499146
 [611] -0.112149739 -0.187162683 -0.658075667 -2.289421602 -0.445817767
 [616]  0.776706588  0.080990929  0.036414159 -0.132527628 -0.343744832
 [621]  0.159785525  0.938404491  0.213301268 -0.855731495 -1.601806100
 [626] -0.163883972 -0.200902759  1.058251433  0.767623099  0.976793633
 [631]  1.310913362  2.348932362 -0.490961795  0.408883624  0.101301081
 [636] -0.074228709  1.577947245 -0.333748798 -0.530909576 -0.363841553
 [641] -0.346607117  1.212319781  1.298282071  0.972457450  1.032634134
 [646] -0.992117116  0.492483445  1.559487170  0.590882359 -0.072876682
 [651] -0.071524788  1.837306881 -1.356861648 -0.509298081 -0.070173025
 [656] -0.492483445 -1.229365201  0.909476911  1.611610156 -0.311023602
 [661] -1.144814095 -1.621571613 -0.566966480  1.554954248  0.256272124
 [666]  1.074921450  1.405868039 -0.299721685  0.509298081 -0.214680871
 [671] -1.454609861 -0.405953507 -0.439868605  0.764007406  1.631696630
 [676] -0.495530174  1.416819278 -1.187393051 -0.726625143 -2.072781954
 [681]  0.804351175 -0.538687927 -0.965987242 -1.195619501 -0.712649943
 [686]  1.121749883  0.932140112  0.281436703 -1.631696630 -1.353484113
 [691] -0.762203300  0.318107437 -2.471677151  0.524709963  1.795213515
 [696] -2.161436385 -1.016679169 -0.180306035  1.273622589  1.065359478
 [701] -1.657768635 -0.842197799 -0.620036135 -1.743613740  1.657768635
 [706]  1.350121948 -1.096803562  0.487921897 -1.568650389 -0.925912101
 [711]  0.121653111 -1.924193887 -1.443055487  0.299721685  0.009438762
 [716] -0.355211147 -1.398659855 -0.350905885 -0.068821391 -0.067469881
 [721]  1.261578236  0.628227740 -0.213301268 -0.450290005  1.171176839
 [726]  0.395725296 -0.661428091 -0.703985770  1.515524656 -1.340125919
 [731] -0.541808390 -1.333535586  0.098590829  1.346774976 -1.249714166
 [736]  0.806215951  0.981148261 -0.955292497 -0.301132303 -0.066118496
 [741] -1.181953091 -1.343443023  1.482353090 -0.064767230 -0.454771268
 [746]  1.582647271 -0.342314746  0.298311662 -0.887271474 -0.263245342
 [751]  0.332323535 -0.394267521  0.242362624  0.172089202 -0.897309997
 [756] -0.921779971 -2.444036983 -0.146143003 -2.205284963 -0.063416084
 [761]  0.165250729 -1.749812815  2.084477779  0.733666152  0.480341759
 [766] -0.305367768  1.413150018 -0.515448120  1.131926322 -1.737480953
 [771]  0.968139475  0.245140689 -0.800629988 -0.420639577 -2.134359789
 [776] -1.427943123  0.887271474 -0.899328566 -2.501345446  0.996538226
 [781]  0.400103684  1.626613277 -1.292043388  0.765814001  1.486410698
 [786] -0.339456669 -0.919719798  0.782187555 -0.199527087  0.934224165
 [791] -0.987715314  1.768825039  1.882932462  0.992117116  0.302543521
 [796]  0.388444757 -0.714389194  0.751430255  0.828816630 -0.480341759
 [801]  0.451782750 -1.515524656  0.555916576 -0.671530349  0.611885927
 [806]  2.308361815  0.095881300 -0.529357768  0.693657988  0.166617795
 [811] -0.242362624 -0.181676676 -1.279714656  0.152960705 -0.102656486
 [816]  0.198151791  1.725407795 -0.425063002  0.358084978 -0.932140112
 [821]  0.137970689  1.232241021  1.157894875  1.243847553 -0.062065052
 [826] -0.738970862  0.048560562 -1.450736862  0.234039548  0.756805798
 [831] -1.507075579 -0.176196131 -1.089451538 -1.701989181 -0.546499008
 [836] -0.416224367 -1.788499010  1.360254733 -2.018186777  0.576493189
 [841] -1.830063448 -1.082157935  0.257665760  0.296902233 -1.320525901
 [846]  0.371054291  1.317308188 -1.997936847  1.446885503 -1.882932462
 [851]  0.800629988 -1.988111548  1.235127068  0.610260769  1.424215576
 [856]  1.707756416  1.139636266  1.701989181 -1.524083329  0.541808390
 [861] -1.511286632 -1.165839367  0.078285614 -1.395082856 -0.273029480
 [866] -1.314104058 -0.148869251  1.304571699  2.175591776  0.554343576
 [871] -0.152960705 -0.749643230  0.951045074 -0.384086320 -1.413150018
 [876] -0.196776871  1.511286632  0.144780288 -1.255624109  0.826917147
 [881]  1.652463885  0.450290005 -0.895295078  0.123011613 -0.537129662
 [886] -1.815858073 -2.096465896  0.386991129 -0.238199023  0.566966480
 [891]  0.584472241  0.857677680 -1.822914780 -1.074921450  0.685107711
 [896] -0.873365866 -0.267435404  0.039112832 -1.611610156 -1.537134586
 [901]  0.113506724  1.494600149 -0.426539323  1.713581019  0.895295078
 [906]  0.970296201  0.498581510  0.899328566 -0.462260438 -0.060714135
 [911] -0.059363328  0.497055264 -1.377459942 -0.104012078 -0.058012629
 [916] -0.004045135 -0.724870519 -0.934224165  1.373986290 -0.503167245
 [921]  0.188535059 -0.571723349 -0.821236508  0.643080086  1.201149064
 [926] -1.079739490  0.024273125 -1.235127068 -1.462421997 -1.852089931
 [931]  0.646399844  0.560643862  1.048856395  0.638113687 -1.238023440
 [936] -0.295493393  1.079739490  0.746076339  1.012167918  0.072876682
 [941]  0.438383752 -0.108080014  1.089451538  0.447307518 -1.307735956
 [946] -0.535572701  0.133888019 -1.139636266 -0.397183912 -1.206715600
 [951]  0.196776871 -0.280034133  1.292043388 -0.598929332 -0.644739077
 [956] -0.819348844  1.356861648 -0.235425586 -0.674913004 -1.124283082
 [961] -1.201149064  0.656402227 -0.332323535  1.466361761 -0.518530452
 [966]  1.636822499 -0.266038199  1.941657387 -0.306780804  1.450736862
 [971]  0.435416939  0.185790660 -0.245140689  0.698812562 -0.260454538
 [976] -1.007677172  0.562222407  1.380950295 -1.606688823  0.202278813
 [981]  1.808890648  0.064767230  0.419166933  0.398643373 -0.373944779
 [986] -0.651392890  0.769434713 -0.144780288 -0.056662036 -0.055311546
 [991] -0.695374126 -1.119223863  0.174826828  0.987715314  0.373944779
 [996]  0.209164881  0.445817767 -0.457763852 -0.142055660  0.129807580
 [ reached getOption("max.print") -- omitted 859 entries ]

$FTSE$y
   [1]  0.679325585 -0.487765222  0.906788661  0.578853627 -0.720408902
   [6]  0.855359170  0.823988102  0.083718705 -0.521808405  1.405461680
  [11]  0.959526160  0.164267835 -0.534947286 -0.227692066  0.668896321
  [16]  1.149110807 -0.285946134 -0.034876962  0.376027291  0.220136716
  [21]  0.023121387 -0.261981815  0.112021014  0.385847127 -0.626513434
  [26] -0.468012687  0.936540629  0.123200123 -1.153579943 -0.046681709
  [31]  0.603253678  0.924600565  0.321987121  0.145193336 -3.071346814
  [36]  0.551072623  1.855549031  0.810945847  0.674799848  0.000000000
  [41] -0.791456811  0.167951752  0.533495923  0.284284740  1.281324413
  [46] -0.395581430 -0.164855751 -0.048787811  0.153944355 -0.532353603
  [51] -0.844263531 -0.159647256  0.582502094 -0.609409894 -0.754055907
  [56] -0.445126631 -0.416281221  0.197398978  0.448101364 -0.799907703
  [61] -0.112424889  0.822789723 -0.084687043  0.130990908  0.873412851
  [66]  0.911622230 -0.052918053 -0.703426367 -0.038086533 -1.082069649
  [71]  0.127108851 -0.592421620 -0.514685964 -0.614594679  0.763209393
  [76]  0.085453486  0.089261458  0.376114773  0.479004906 -0.976509938
  [81] -0.628955235  0.062512209 -1.280699699 -0.537910849  1.741758460
  [86] -0.203244088  0.932127051 -0.430716697 -0.643024162 -0.851147284
  [91]  0.518237202 -0.263686095  0.149948702  0.827423168 -0.160218835
  [96]  0.806293788 -1.125994952  0.592970744 -0.585571518 -1.716013508
 [101] -1.590155420  0.385692826 -0.368033649 -0.698193627  0.404692801
 [106]  0.622913444 -0.971070200 -0.772216547 -0.345878284 -0.218990166
 [111]  0.219470786  0.148748037 -0.693126496 -0.760282509  0.874952903
 [116] -0.730411687 -0.493311037  1.810772204  1.167828994 -0.440528634
 [121] -0.323664372 -0.793291956 -0.911501492 -1.400735909 -0.538569187
 [126]  1.662829368  0.000000000  0.000000000  1.438517027  0.053747881
 [131]  3.020661157  0.000000000 -0.012033212  0.453305520 -0.435286131
 [136] -0.413123696 -0.636352652  1.248429330 -0.800672565  0.492352395
 [141]  1.052166580  0.826610500  0.177367861 -0.192791942  0.323254622
 [146] -0.058941412 -0.841393410  0.130848533 -0.590028907  1.175111536
 [151]  0.476396709 -0.215517241  0.168859219  0.799749098 -0.427815806
 [156] -0.132802125 -0.379380476 -0.502532292 -0.674742532  0.842205625
 [161] -0.051213363 -0.528162075 -0.043586797 -0.344882264  1.078006285
 [166]  0.586383314 -0.751203099  0.264122679 -0.043249194  0.684419620
 [171] -0.503965308  0.714622271 -0.116959064  0.003903201 -0.304437766
 [176]  0.434561328 -0.272861932 -0.785647280 -0.204861521  0.694800837
 [181]  0.944838672 -2.035109523 -1.153663178 -0.693859544 -0.214054927
 [186]  0.829724370 -1.063744380  0.117661379 -0.445777273 -0.635024017
 [191]  0.725112659  0.252165779  0.296158059 -0.982930184  0.204256710
 [196] -0.521831302 -1.290930700 -0.132857261 -0.943709986  0.763839342
 [201]  0.137448457 -0.457532651  1.805114491  5.590215071  0.715229729
 [206]  0.366653802  1.526629494 -0.060601470  0.000000000  0.000000000
 [211] -0.485105738 -0.685505370  0.076692998  1.272128132  0.575104048
 [216] -0.270859980  0.524330441 -0.405268490  0.214762066  0.000000000
 [221]  0.090232348  1.371046503  0.118575610  0.880861616  0.443922662
 [226] -0.562495434 -0.069791361 -0.948355082 -0.449029577  0.782822635
 [231] -0.110963160  0.418425535 -0.365057709  0.481125093  0.000000000
 [236] -0.383057090 -0.221844265 -0.163047506  0.497364709 -0.369330773
 [241]  0.307680902 -0.923907018  0.037300906 -0.499645774 -0.850665168
 [246] -0.393075818  0.026561433 -0.834566215 -0.397842470 -0.387909513
 [251]  0.875231339 -0.684172304 -1.373922414  0.862371717 -1.334726091
 [256]  0.403874054 -1.093493712  0.975282319 -0.907206820 -0.722149876
 [261]  0.214643453 -1.082817706 -0.713741529  0.848107912 -1.125305354
 [266]  1.000405022 -0.846132253  1.023214430 -0.284238761 -0.501846796
 [271]  0.229996368  0.096618357 -0.120656371 -2.073769832 -1.159587154
 [276]  0.495070100 -1.146713032  0.485782487 -0.929360283 -1.228335857
 [281]  1.081771721  2.098255667 -0.478705844 -0.497594958  0.858476413
 [286] -0.524750021 -0.610591900 -0.635239050 -1.156628533 -1.038253691
 [291] -0.692264695 -0.281434015  0.646954105  1.673856773  0.818906993
 [296] -0.900635495  0.373720644 -0.173471546  0.267017038 -2.307984952
 [301] -1.302410108  0.175361683  1.164113786  0.043260080  0.000000000
 [306] -0.614027502  0.635224504  2.978815391 -0.827070826  0.423334180
 [311] -1.454346177 -0.436326304  0.562835661  1.294539862  2.159517483
 [316] -2.151025969  0.350210970  4.440146323  3.345545312 -0.268796260
 [321]  1.011679231 -0.212683681  1.577213718 -0.770639402 -1.576316801
 [326]  0.214843750 -0.487234457  0.755973365 -0.878591144 -4.055379064
 [331]  1.720966357  1.153351551  0.862103214  0.094532850  0.629623800
 [336]  1.075394963 -0.386892096 -1.091389288  0.679337155 -0.066305238
 [341]  2.138786980  1.096675583  0.468685036  0.436401941 -0.303404877
 [346]  0.308085362 -0.726646191 -0.305614247  0.605533058  1.109731783
 [351]  0.662251656 -0.513749261  0.720734109 -0.309837335 -0.270100270
 [356]  0.712324701 -0.655713549  1.097597152 -1.060005869 -0.663577386
 [361] -0.014927601  0.925649448  0.081360947  0.968147218 -0.347679696
 [366]  0.154247310 -0.641707308  1.188367287  0.667444744  0.677511684
 [371]  0.475025191 -0.999283668  0.249629174 -0.418621436 -0.177574835
 [376]  0.555454710 -0.689580475 -0.879776057 -0.377773703  0.206170385
 [381] -0.143287530  0.548217374  0.274443794  1.802722330  0.645230670
 [386]  1.221640489 -0.513722730  0.003536818  0.000000000  0.000000000
 [391]  0.717948718 -0.537256830  0.494263019  0.000000000  0.526962937
 [396] -0.975013105 -0.268210051 -0.336164190 -0.614237529 -0.921691912
 [401] -0.558880796 -0.456869357  0.506319892  0.213830096 -0.072330115
 [406] -0.922876479  0.405464641  0.894968531  0.284859193 -0.334388034
 [411]  2.301670334 -0.112846916 -0.550750221 -0.344350172  1.581647193
 [416] -0.603170150  1.390064917 -0.274897348 -0.104679158  0.248000279
 [421] -1.348432056 -0.526260022  0.635563130  0.306954098  0.102004924
 [426] -1.184159668  0.064006827  0.842217484  0.081051556 -0.059859155
 [431] -0.715216855 -0.035486160  0.415335463  1.389330788  0.509065551
 [436] -0.010407271  1.259410887 -0.472829439  0.406224181  1.395460468
 [441] -0.250228249  0.230516289 -0.111610918 -1.269723031  0.222915738
 [446] -0.106077197 -1.007090741 -0.228381605  0.582665696 -1.248232820
 [451] -0.097768777 -0.017475796 -0.272670069  0.003505328 -0.224333135
 [456]  0.509397506  0.618664803 -0.010421371 -0.295302946 -1.083661452
 [461] -0.232492603 -0.356613234 -0.010630382  0.000000000  0.000000000
 [466]  0.885959317 -0.165097654 -0.084444601 -0.538789309  0.198272199
 [471]  0.922261484  0.472672525  0.400752718 -1.294644407 -0.756030663
 [476]  0.368493782 -1.249691107 -0.375361956  0.943734750  0.000000000
 [481] -0.017773986 -0.572424092 -0.364741641  0.265585185  1.288613666
 [486]  0.226172386  0.870914284 -0.401985459 -0.080721581  0.389884089
 [491] -0.377873412 -0.969339374 -0.102847821 -0.163305879  0.476495271
 [496]  0.428227633  0.324206223  0.295057782 -0.511329808  0.000000000
 [501]  0.299222023  0.484346483 -0.356269647 -0.802720135  0.526520372
 [506] -0.014060742  0.791027985 -0.240678084  0.062937063  0.828150115
 [511] -0.537168602  0.452961672 -0.253208463  0.128664325  0.833506981
 [516]  0.144657987 -0.237309121 -0.206846623 -0.248730438  0.329004329
 [521] -0.379703141  0.485100485 -0.386206897 -1.076571587 -0.671868986
 [526]  0.338206799  0.007022225 -0.084260787 -0.094873327 -0.432611142
 [531]  0.219011622 -0.169186846 -0.021184197  0.045908818  0.349452877
 [536] -0.668331633 -0.347037785  0.213212039  0.269493990  0.583513103
 [541]  1.237606357  0.166701396  1.158033423  0.305045243  0.519391765
 [546]  0.112180032 -0.125636672  0.071397001  0.896921927  0.558960199
 [551] -0.495579962  1.160990712  0.099797079  0.033232528 -0.059798678
 [556]  0.555130805  1.606611570 -0.263534617 -0.257706736 -0.510204082
 [561]  0.239973702  0.980552914  0.000000000  0.694985711  0.000000000
 [566] -0.019351093 -0.480645161 -0.405173252 -0.497949619 -0.062146338
 [571] -0.549846174 -0.105311657 -0.138367266  0.191343362 -0.401712216
 [576]  0.105792118 -1.274768824  0.485047167  0.053264090 -0.033272334
 [581] -0.096521884  0.196561834 -0.206151288  0.129943691  0.702116332
 [586]  0.350262697 -0.223912542  0.244216362  0.059259259  0.934425690
 [591]  0.570459954  0.505639829 -0.270897833  0.523864959 -0.205880461
 [596] -0.241763909 -0.445923676  0.175273459  1.117843372  0.538323507
 [601] -0.254971953  0.853144172  1.013845325  0.335602045 -0.443888715
 [606] -0.612283346 -0.347518403  0.275813968  0.252924439 -0.208136235
 [611] -0.009480470 -0.056888215 -0.420579958 -2.013337567 -0.259268862
 [616]  0.597868469  0.080749354  0.038728417 -0.019356712 -0.187151108
 [621]  0.135777325  0.726392252  0.176282051 -0.559910414 -1.203346203
 [626] -0.042337003 -0.068419509  0.844418362  0.591639456  0.784212895
 [631]  0.991772434  2.093529950 -0.287640727  0.319488818  0.095850597
 [636]  0.000000000  1.238686560 -0.176969549 -0.314830664 -0.205439549
 [641] -0.190499601  0.935845339  0.988166402  0.782193767  0.833058644
 [646] -0.668667717  0.397917664  1.215841702  0.465184749  0.000000000
 [651]  0.000000000  1.456495619 -0.958983247 -0.303313112  0.000000000
 [656] -0.289609174 -0.859615667  0.704308712  1.263590949 -0.156703424
 [661] -0.778933907 -1.224441971 -0.355871886  1.208333333  0.211727342
 [666]  0.856857797  1.108524876 -0.146758367  0.409221902 -0.080362781
 [671] -1.074280462 -0.229384437 -0.256104304  0.586467482  1.287927133
 [676] -0.294976803  1.114462157 -0.818112093 -0.461119863 -1.619957415
 [681]  0.617121465 -0.322655660 -0.644483975 -0.824772527 -0.455769629
 [686]  0.883008771  0.722032300  0.222371770 -1.246606137 -0.954886773
 [691] -0.495478017  0.245972943 -2.226278464  0.419280796  1.429355114
 [696] -1.727712509 -0.687947166 -0.049259567  0.970275682  0.851128737
 [701] -1.255331377 -0.542212964 -0.394246466 -1.298741458  1.300166045
 [706]  1.051524711 -0.749831670  0.394708440 -1.154897564 -0.624592151
 [711]  0.109443402 -1.443073559 -1.064874972  0.233846942  0.015979546
 [716] -0.194919316 -0.992508164 -0.194024059  0.000000000  0.000000000
 [721]  0.965526179  0.490982607 -0.079833945 -0.262064557  0.916431684
 [726]  0.307995174 -0.421005983 -0.448216670  1.168694319 -0.950036297
 [731] -0.325027086 -0.949488491  0.093599716  1.047981427 -0.880747998
 [736]  0.618138502  0.790324129 -0.638095238 -0.146969552  0.000000000
 [741] -0.809522286 -0.951612903  1.156163491  0.000000000 -0.264005151
 [746]  1.242817483 -0.184931288  0.233189586 -0.592772006 -0.115414209
 [751]  0.253562717 -0.224107572  0.202149848  0.144101447 -0.604355195
 [756] -0.620898211 -2.214237156 -0.033104909 -1.765076001  0.000000000
 [761]  0.138214671 -1.299444538  1.667860432  0.570316694  0.386950430
 [766] -0.152854390  1.111554846 -0.306102297  0.891412724 -1.295853922
 [771]  0.772469582  0.203974207 -0.515463918 -0.237615920 -1.713586291
 [776] -1.040018848  0.687028093 -0.608025942 -2.236269712  0.809984009
 [781]  0.313803924  1.282227570 -0.919797712  0.589202521  1.157880398
 [786] -0.181793698 -0.617200675  0.600671938 -0.067467278  0.722387254
 [791] -0.666934781  1.396808259  1.500682128  0.799895096  0.234161571
 [796]  0.301752109 -0.456118785  0.581697647  0.633259022 -0.276110059
 [801]  0.357361321 -1.119594508  0.441228952 -0.429600439  0.480114189
 [806]  1.940337057  0.091844814 -0.313251487  0.539596889  0.138910813
 [811] -0.104038589 -0.050495487 -0.909377960  0.130648142 -0.003182382
 [816]  0.162306664  1.366250437 -0.241356612  0.276503488 -0.629817635
 [821]  0.119824678  0.948001638  0.904779733  0.955414013  0.000000000
 [826] -0.474717467  0.052314131 -1.070341094  0.192756101  0.583361777
 [831] -1.113681937 -0.046796032 -0.745965854 -1.279874214 -0.334469468
 [836] -0.236512401 -1.332735311  1.068251185 -1.529219006  0.456755081
 [841] -1.357539541 -0.740789517  0.212286055  0.231696015 -0.937850869
 [846]  0.290019335  1.003822503 -1.520387008  1.129490393 -1.414268248
 [851]  0.613373555 -1.515757212  0.950512465  0.479158290  1.120485544
 [856]  1.342215480  0.894890986  1.335268505 -1.120341195  0.434544694
 [861] -1.118518044 -0.794088095  0.078410873 -0.992426221 -0.121999472
 [866] -0.930969595 -0.033323336  0.990033001  1.789015051  0.441014333
 [871] -0.035513657 -0.484449181  0.749683575 -0.219043938 -1.026601240
 [876] -0.065235828  1.168483582  0.125822687 -0.889318511  0.630709711
 [881]  1.295512551  0.354021815 -0.603845543  0.111910472 -0.319386777
 [886] -1.355334829 -1.663039595  0.300578035 -0.102087861  0.448327015
 [891]  0.459453251  0.663160302 -1.356526254 -0.733649164  0.536903854
 [896] -0.573594857 -0.119359438  0.043153527 -1.211095627 -1.138615524
 [901]  0.101922946  1.160738528 -0.241562102  1.351987624  0.690204407
 [906]  0.781044028  0.402210523  0.693720688 -0.268460717  0.000000000
 [911]  0.000000000  0.402153467 -0.975515214 -0.003262004  0.000000000
 [916]  0.006524221 -0.459927586 -0.632455106  1.078389341 -0.300163132
 [921]  0.150533412 -0.359430140 -0.531252050  0.497824080  0.931666831
 [926] -0.737803491  0.029469548 -0.860911977 -1.079706795 -1.391902266
 [931]  0.500981653  0.444594139  0.841660519  0.495461045 -0.870226987
 [936] -0.143529490  0.859072068  0.576674510  0.823804659  0.075170768
 [941]  0.349444807 -0.006508934  0.862489829  0.351726363 -0.926074793
 [946] -0.318068222  0.117214209 -0.774008911 -0.226147947 -0.840943433
 [951]  0.159014113 -0.128993848  0.986918364 -0.380415177 -0.408203575
 [956] -0.528873170  1.060047187 -0.098645272 -0.431176354 -0.766916796
 [961] -0.829474666  0.507222036 -0.173790983  1.144999833 -0.307834895
 [966]  1.288266153 -0.118009572  1.545782737 -0.155133965  1.129705759
 [971]  0.345688496  0.149920255 -0.105105583  0.542022701 -0.114162491
 [976] -0.682583021  0.447527411  1.078827610 -1.205843461  0.165715925
 [981]  1.431707550  0.065869954  0.335402169  0.312412134 -0.208664237
 [986] -0.415080207  0.592309380 -0.031154589  0.000000000  0.000000000
 [991] -0.445649464 -0.763812803  0.145105833  0.793775790  0.293759180
 [996]  0.174492880  0.351488382 -0.266567479 -0.027971159  0.115024715
 [ reached getOption("max.print") -- omitted 859 entries ]
qqline(eu_percentreturns)

Note that the vast majority of returns are near zero, but some daily returns are greater than 5 percentage points in magnitude. Similarly, note the clear departure from normality, especially in the tails of the distributions, as evident in the normal quantile plots.

3.1.3 Plotting pairs of data

Time series data is often presented in a time series plot. For example, the index values from the eu_stocks dataset are shown in the adjoining figure.

plot(eu_stocks)

Recall, eu_stocks contains daily closing prices from 1991-1998 for the major stock indices in Germany (DAX), Switzerland (SMI), France (CAC), and the UK (FTSE).

It is also useful to examine the bivariate relationship between pairs of time series. In this exercise we will consider the contemporaneous relationship, that is matching observations that occur at the same time, between pairs of index values as well as their log returns. The plot(a, b) function will produce a scatterplot when two time series names a and b are given as input.

To simultaneously make scatterplots for all pairs of several assets the pairs() function can be applied to produce a scatterplot matrix. When shared time trends are present in prices or index values it is common to instead compare their returns or log returns.

In this exercise, you’ll practice these skills on the eu_stocks data. Because the DAX and FTSE returns have similar time coverage, you can easily make a scatterplot of these indices. Note that the normal distribution has elliptical contours of equal probability, and pairs of data drawn from the multivariate normal distribution form a roughly elliptically shaped point cloud. Do any of the pairs in the scatterplot matrices exhibit this pattern, before or after log transformation?

# Make a scatterplot of DAX and FTSE
plot(eu_stocks[,"DAX"], eu_stocks[,"FTSE"])


# Make a scatterplot matrix of eu_stocks
pairs(eu_stocks)


# Convert eu_stocks to log returns
logreturns <- diff(log(eu_stocks))

# Plot logreturns
plot(logreturns)


# Make a scatterplot matrix of logreturns
pairs(logreturns)

As you can see, the pairs() command is a useful way to quickly check for relationships between your indices.

3.2 Covariance and correlation

3.2.1 Calculating sample covariances and correlations

Sample covariances measure the strength of the linear relationship between matched pairs of variables. The cov() function can be used to calculate covariances for a pair of variables, or a covariance matrix when a matrix containing several variables is given as input. For the latter case, the matrix is symmetric with covariances between variables on the off-diagonal and variances of the variables along the diagonal.

Covariances are very important throughout finance, but they are not scale free and they can be difficult to directly interpret. Correlation is the standardized version of covariance that ranges in value from -1 to 1, where values close to 1 in magnitude indicate a strong linear relationship between pairs of variables. The cor() function can be applied to both pairs of variables as well as a matrix containing several variables, and the output is interpreted analogously.

DAX_logreturns <- diff(log(eu_stocks[, "DAX"]))
FTSE_logreturns <- diff(log(eu_stocks[, "FTSE"]))
# Use cov() with DAX_logreturns and FTSE_logreturns
cov(DAX_logreturns, FTSE_logreturns)
[1] 5.241794e-05
# Use cov() with logreturns
cov(logreturns)
              DAX          SMI          CAC         FTSE
DAX  1.061072e-04 6.699564e-05 8.345130e-05 5.241794e-05
SMI  6.699564e-05 8.556317e-05 6.285881e-05 4.304517e-05
CAC  8.345130e-05 6.285881e-05 1.216802e-04 5.693174e-05
FTSE 5.241794e-05 4.304517e-05 5.693174e-05 6.332543e-05
# Use cor() with DAX_logreturns and FTSE_logreturns
cor(DAX_logreturns, FTSE_logreturns)
[1] 0.6394674
# Use cor() with logreturns
cor(logreturns)
           DAX       SMI       CAC      FTSE
DAX  1.0000000 0.7031219 0.7344304 0.6394674
SMI  0.7031219 1.0000000 0.6160454 0.5847791
CAC  0.7344304 0.6160454 1.0000000 0.6485679
FTSE 0.6394674 0.5847791 0.6485679 1.0000000

The cov() and cor() commands provide a simple and intuitive output for comparing the relationships between your indices, especially when a scatterplot matrix is difficult to interpret.

3.3 Autocorrelation

3.3.1 Calculating autocorrelations

Autocorrelations or lagged correlations are used to assess whether a time series is dependent on its past. For a time series x of length n we consider the n-1 pairs of observations one time unit apart. The first such pair is (x[2],x[1]), and the next is (x[3],x[2]). Each such pair is of the form (x[t],x[t-1]) where t is the observation index, which we vary from 2 to n in this case. The lag-1 autocorrelation of x can be estimated as the sample correlation of these (x[t], x[t-1]) pairs.

In general, we can manually create these pairs of observations. First, create two vectors, x_t0 and x_t1, each with length n-1, such that the rows correspond to (x[t], x[t-1]) pairs. Then apply the cor() function to estimate the lag-1 autocorrelation.

Luckily, the acf() command provides a shortcut. Applying acf(…, lag.max = 1, plot = FALSE) to a series x automatically calculates the lag-1 autocorrelation.

Finally, note that the two estimates differ slightly as they use slightly different scalings in their calculation of sample covariance, 1/(n-1) versus 1/n. Although the latter would provide a biased estimate, it is preferred in time series analysis, and the resulting autocorrelation estimates only differ by a factor of (n-1)/n.

n = 100
# Define x_t0 as x[-1]
x_t0 <- x[-1]

# Define x_t1 as x[-n]
x_t1 <- x[-n]

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
          x_t0      x_t1
[1,]  9.569009 -4.198033
[2,]  5.175143  9.569009
[3,] -9.691646  5.175143
[4,] -3.215294 -9.691646
[5,] 10.843669 -3.215294
[6,]  6.452159 10.843669
  
# Plot x_t0 and x_t1
plot(x_t0, x_t1)


# View the correlation between x_t0 and x_t1
cor(x_t0, x_t1)
[1] -0.03554649
# Use acf with x
acf(x, lag.max = 1, plot = FALSE)

Autocorrelations of series ‘x’, by lag

     0      1 
 1.000 -0.035 
# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n
[1] -0.03519102

As you can see, the acf() command is a helpful shortcut for calculating autocorrelation.

3.3.2 The autocorrelation function

Autocorrelations can be estimated at many lags to better assess how a time series relates to its past. We are typically most interested in how a series relates to its most recent past.

The acf(…, lag.max = …, plot = FALSE) function will estimate all autocorrelations from 0, 1, 2,…, up to the value specified by the argument lag.max. In the previous exercise, you focused on the lag-1 autocorrelation by setting the lag.max argument to 1.

In this exercise, you’ll explore some further applications of the acf() command.

x <- arima.sim(model = list(order = c(0, 1, 0)), n = 100)
# Generate ACF estimates for x up to lag-10
acf(x, lag.max = 10, plot = FALSE)

Autocorrelations of series ‘x’, by lag

    0     1     2     3     4     5     6     7     8     9    10 
1.000 0.927 0.874 0.835 0.783 0.723 0.668 0.629 0.580 0.544 0.509 
# Type the ACF estimate at lag-10 
0.604
[1] 0.604
# Type the ACF estimate at lag-5
0.209
[1] 0.209

Since autocorrelations may vary by lag, we often consider autocorrelations as a function of the time lag. Taking this view, we have now estimated the autocorrelation function (ACF) of x from lags 0 to 10.

3.3.3 Visualizing the autocorrelation function

Estimating the autocorrelation function (ACF) at many lags allows us to assess how a time series x relates to its past. The numeric estimates are important for detailed calculations, but it is also useful to visualize the ACF as a function of the lag.

In fact, the acf() command produces a figure by default. It also makes a default choice for lag.max, the maximum number of lags to be displayed.

The time series x shows strong persistence, meaning the current value is closely relatively to those that proceed it. The time series y shows a periodic pattern with a cycle length of approximately four observations, meaning the current value is relatively close to the observation four before it. The time series z does not exhibit any clear pattern.

plot.ts(cbind(x, y, z))

In this exercise, you’ll plot an estimated autocorrelation function for each time series. In the plots produced by acf(), the lag for each autocorrelation estimate is denoted on the horizontal axis and each autocorrelation estimate is indicated by the height of the vertical bars. Recall that the ACF at lag-0 is always 1.

Finally, each ACF figure includes a pair of blue, horizontal, dashed lines representing lag-wise 95% confidence intervals centered at zero. These are used for determining the statistical significance of an individual autocorrelation estimate at a given lag versus a null value of zero, i.e., no autocorrelation at that lag.

# View the ACF of x
acf(x)


# View the ACF of y
acf(y)


# View the ACF of z
acf(z)

Plotting the estimated ACF of x shows large positive correlations for several lags which quickly decay towards zero. Plotting the estimated ACF of y shows large positive correlations at lags which are multiples of four, although these also decay towards zero as the lag multiple increases. Finally, the estimated ACF of z is near zero at all lags. It appears the series z is not linearly related to its past, at least through lag 20.

4 Autoregression

4.1 The autoregressive model

4.1.1 Simulate the autoregressive model

The autoregressive (AR) model is arguably the most widely used time series model. It shares the very familiar interpretation of a simple linear regression, but here each observation is regressed on the previous observation. The AR model also includes the white noise (WN) and random walk (RW) models examined in earlier chapters as special cases.

The versatile arima.sim() function used in previous chapters can also be used to simulate data from an AR model by setting the model argument equal to list(ar = phi) , in which phi is a slope parameter from the interval (-1, 1). We also need to specify a series length n.

# Simulate an AR model with 0.5 slope
x <- arima.sim(model = list(ar = 0.5), n = 100)

# Simulate an AR model with 0.9 slope
y <- arima.sim(model = list(ar = 0.9), n = 100)

# Simulate an AR model with -0.75 slope
z <- arima.sim(model = list(ar = -.75), n = 100)

# Plot your simulated data
plot.ts(cbind(x, y, z))

As you can see, your x data shows a just a moderate amount of autocorrelation while your y data shows a large amount of autocorrelation. Alternatively, your z data tends to oscillate considerably from one observation to the next.

4.1.2 Estimate the autocorrelation function (ACF) for an autoregression

What if you need to estimate the autocorrelation function from your data? To do so, you’ll need the acf() command, which estimates autocorrelation by exploring lags in your data. By default, this command generates a plot of the relationship between the current observation and lags extending backwards.

In this exercise, you’ll use the acf() command to estimate the autocorrelation function for three new simulated AR series (x, y, and z). These objects have slope parameters 0.5, 0.9, and -0.75.

# Calculate the ACF for x
acf(x)


# Calculate the ACF for y
acf(y)


# Calculate the ACF for z
acf(z)

The plots generated by the acf() command provide useful information about each lag of your time series. The first series x has positive autocorrelation for the first couple lags, but they quickly approach zero. The second series y has positive autocorrelation for many lags, but they also decay to zero. The last series z has an alternating pattern, as does its autocorrelation function (ACF), but its ACF still quickly decays to zero in magnitude.

4.1.3 Persistence and anti-persistence

Autoregressive processes can exhibit varying levels of persistence as well as anti-persistence or oscillatory behavior. Persistence is defined by a high correlation between an observation and its lag, while anti-persistence is defined by a large amount of variation between an observation and its lag.

4.1.4 Compare the random walk (RW) and autoregressive (AR) models

The random walk (RW) model is a special case of the autoregressive (AR) model, in which the slope parameter is equal to 1. Recall from previous chapters that the RW model is not stationary and exhibits very strong persistence. Its sample autocovariance function (ACF) also decays to zero very slowly, meaning past values have a long lasting impact on current values.

The stationary AR model has a slope parameter between -1 and 1. The AR model exhibits higher persistence when its slope parameter is closer to 1, but the process reverts to its mean fairly quickly. Its sample ACF also decays to zero at a quick (geometric) rate, indicating that values far in the past have little impact on future values of the process.

# Simulate and plot AR model with slope 0.9 
x <- arima.sim(model = list(ar = 0.9), n = 200)
ts.plot(x)

acf(x)


# Simulate and plot AR model with slope 0.98
y <- arima.sim(model = list(ar = 0.98), n = 200)
ts.plot(y)

acf(y)


# Simulate and plot RW model
z <-arima.sim(model = list(order = c(0, 1, 0)), n = 200)
ts.plot(z)

acf(z)

As you can see, the AR model represented by series y exhibits greater persistence than series x, but the ACF continues to decay to 0. By contrast, the RW model represented by series z shows considerable persistence and relatively little decay in the ACF.

4.2 AR model estimation and forecasting

4.2.1 Estimate the autoregressive (AR) model

For a given time series x we can fit the autoregressive (AR) model using the arima() command and setting order equal to c(1, 0, 0). Note for reference that an AR model is an ARIMA(1, 0, 0) model.

In this exercise, you’ll explore additional qualities of the AR model by practicing the arima() command on a simulated time series x as well as the AirPassengers data. This command allows you to identify the estimated slope (ar1), mean (intercept), and innovation variance (sigma^2) of the model.

# Fit the AR model to x
arima(x, order = c(1, 0, 0))

Call:
arima(x = x, order = c(1, 0, 0))

Coefficients:
         ar1  intercept
      0.8967     0.3405
s.e.  0.0304     0.6398

sigma^2 estimated as 0.947:  log likelihood = -279.15,  aic = 564.31
# Copy and paste the slope (ar1) estimate
0.8954
[1] 0.8954
# Copy and paste the slope mean (intercept) estimate
-0.2025
[1] -0.2025
# Copy and paste the innovation variance (sigma^2) estimate
1.046
[1] 1.046
# Fit the AR model to AirPassengers
AR <- arima(AirPassengers, order = c(1, 0, 0))
print(AR)

Call:
arima(x = AirPassengers, order = c(1, 0, 0))

Coefficients:
         ar1  intercept
      0.9646   278.4649
s.e.  0.0214    67.1141

sigma^2 estimated as 1119:  log likelihood = -711.09,  aic = 1428.18
# Run the following commands to plot the series and fitted values
ts.plot(AirPassengers)
AR_fitted <- AirPassengers - residuals(AR)
points(AR_fitted, type = "l", col = 2, lty = 2)

By fitting an AR model to the AirPassengers data, you’ve succesfully modeled the data in a reproducible fashion. This allows you to predict future observations based on your AR_fitted data.

4.2.2 Simple forecasts from an estimated AR mode

Now that you’ve modeled your data using the arima() command, you are ready to make simple forecasts based on your model. The predict() function can be used to make forecasts from an estimated AR model. In the object generated by your predict() command, the $pred value is the forecast, and the $se value is the standard error for the forecast.

To make predictions for several periods beyond the last observations, you can use the n.ahead argument in your predict() command. This argument establishes the forecast horizon (h), or the number of periods being forecast. The forecasts are made recursively from 1 to h-steps ahead from the end of the observed time series.

In this exercise, you’ll make simple forecasts using an AR model applied to the Nile data, which records annual observations of the flow of the River Nile from 1871 to 1970.

# Fit an AR model to Nile
AR_fit <- arima(Nile, order  = c(1, 0, 0))
print(AR_fit)

Call:
arima(x = Nile, order = c(1, 0, 0))

Coefficients:
         ar1  intercept
      0.5063   919.5685
s.e.  0.0867    29.1410

sigma^2 estimated as 21125:  log likelihood = -639.95,  aic = 1285.9
# Use predict() to make a 1-step forecast
predict_AR <- predict(AR_fit)

# Obtain the 1-step forecast using $pred[1]
predict_AR$pred[1]
[1] 828.6576
# Use predict to make 1-step through 10-step forecasts
predict(AR_fit, n.ahead = 10)
$pred
Time Series:
Start = 1971 
End = 1980 
Frequency = 1 
 [1] 828.6576 873.5426 896.2668 907.7715 913.5960 916.5448 918.0377 918.7935
 [9] 919.1762 919.3699

$se
Time Series:
Start = 1971 
End = 1980 
Frequency = 1 
 [1] 145.3439 162.9092 167.1145 168.1754 168.4463 168.5156 168.5334 168.5380
 [9] 168.5391 168.5394
# Run to plot the Nile series plus the forecast and 95% prediction intervals
ts.plot(Nile, xlim = c(1871, 1980))
AR_forecast <- predict(AR_fit, n.ahead = 10)$pred
AR_forecast_se <- predict(AR_fit, n.ahead = 10)$se
points(AR_forecast, type = "l", col = 2)
points(AR_forecast - 2*AR_forecast_se, type = "l", col = 2, lty = 2)
points(AR_forecast + 2*AR_forecast_se, type = "l", col = 2, lty = 2)

Your predictions of River Nile flow from 1971 to 1980 make sense based on the data you have. The relatively wide band of confidence (represented by the dotted lines) is a result of the low persistence in your Nile data.

4.3 The simple moving average model

4.3.1 Simulate the simple moving average model

The simple moving average (MA) model is a parsimonious time series model used to account for very short-run autocorrelation. It does have a regression like form, but here each observation is regressed on the previous innovation, which is not actually observed. Like the autoregressive (AR) model, the MA model includes the white noise (WN) model as special case.

As with previous models, the MA model can be simulated using the arima.sim() command by setting the model argument to list(ma = theta), where theta is a slope parameter from the interval (-1, 1). Once again, you also need to specifcy the series length using the n argument.

# Generate MA model with slope 0.5
x <- arima.sim(model = list(ma = 0.5), n = 100)

# Generate MA model with slope 0.9
y <- arima.sim(model = list(ma = 0.9), n = 100)

# Generate MA model with slope -0.5
z <- arima.sim(model = list(ma = -0.5), n = 100)

# Plot all three models together
plot.ts(cbind(x, y, z))

Note that there is some very short-run persistence for the positive slope values (x and y), and the series has a tendency to alternate when the slope value is negative (z).

4.3.2 Estimate the autocorrelation function (ACF) for a moving average

Now that you’ve simulated some MA data using the arima.sim() command, you may want to estimate the autocorrelation functions (ACF) for your data. As in the previous chapter, you can use the acf() command to generate plots of the autocorrelation in your MA data.

In this exercise, you’ll use acf() to estimate the ACF for three simulated MA series, x, y, and z. These series have slope parameters of 0.4, 0.9, and -0.75, respectively, and are shown in the figure on the right.

# Calculate ACF for x
acf(x)


# Calculate ACF for y
acf(y)


# Calculate ACF for z
acf(z)

As you can see from your ACF plots, the series x has positive sample autocorrelation at the first lag, but it is approximately zero at other lags. The series y has a larger sample autocorrelation at its first lag, but it is also approximately zero for the others. The series z has an alternating pattern, and its sample autocorrelation is negative at the first lag. However, similar to the others, it is approximately zero for all higher lags.

4.4 MA model estimation and forecasting

4.4.1 Estimate the simple moving average model

Now that you’ve simulated some MA models and calculated the ACF from these models, your next step is to fit the simple moving average (MA) model to some data using the arima() command. For a given time series x we can fit the simple moving average (MA) model using arima(…, order = c(0, 0, 1)). Note for reference that an MA model is an ARIMA(0, 0, 1) mode.

# Fit the MA model to x
arima(x, order = c(0, 0, 1))

Call:
arima(x = x, order = c(0, 0, 1))

Coefficients:
         ma1  intercept
      0.5449    -0.3421
s.e.  0.1248     0.1456

sigma^2 estimated as 0.8949:  log likelihood = -136.52,  aic = 279.04
# Paste the slope (ma1) estimate below
0.7928
[1] 0.7928
# Paste the slope mean (intercept) estimate below
0.1589
[1] 0.1589
# Paste the innovation variance (sigma^2) estimate below
0.9576
[1] 0.9576
# Fit the MA model to Nile
MA <- arima(Nile, order = c(0, 0, 1))
print(MA)

Call:
arima(x = Nile, order = c(0, 0, 1))

Coefficients:
         ma1  intercept
      0.3783   919.2433
s.e.  0.0791    20.9685

sigma^2 estimated as 23272:  log likelihood = -644.72,  aic = 1295.44
# Plot Nile and MA_fit 
ts.plot(Nile)
MA_fit <- Nile - resid(MA)
points(MA_fit, type = "l", col = 2, lty = 2)

By fitting an MA model to your Nile data, you’re able to capture variation in the data for future prediction. Based on the plot you’ve generated, does the MA model appear to be a strong fit for the Nile data?

4.4.2 Simple forecasts from an estimated MA model

Now that you’ve estimated a MA model with your Nile data, the next step is to do some simple forecasting with your model. As with other types of models, you can use the predict() function to make simple forecasts from your estimated MA model. Recall that the $pred value is the forecast, while the $se value is a standard error for that forecast, each of which is based on the fitted MA model.

Once again, to make predictions for several periods beyond the last observation you can use the n.ahead = h argument in your call to predict(). The forecasts are made recursively from 1 to h-steps ahead from the end of the observed time series. However, note that except for the 1-step forecast, all forecasts from the MA model are equal to the estimated mean (intercept).

# Make a 1-step forecast based on MA
predict_MA <- predict(MA)

# Obtain the 1-step forecast using $pred[1]
predict_MA$pred[1]
[1] 868.8747
# Make a 1-step through 10-step forecast based on MA
predict(MA, n.ahead = 10)
$pred
Time Series:
Start = 1971 
End = 1980 
Frequency = 1 
 [1] 868.8747 919.2433 919.2433 919.2433 919.2433 919.2433 919.2433 919.2433
 [9] 919.2433 919.2433

$se
Time Series:
Start = 1971 
End = 1980 
Frequency = 1 
 [1] 152.5508 163.1006 163.1006 163.1006 163.1006 163.1006 163.1006 163.1006
 [9] 163.1006 163.1006
# Plot the Nile series plus the forecast and 95% prediction intervals
ts.plot(Nile, xlim = c(1871, 1980))
MA_forecasts <- predict(MA, n.ahead = 10)$pred
MA_forecast_se <- predict(MA, n.ahead = 10)$se
points(MA_forecasts, type = "l", col = 2)
points(MA_forecasts - 2*MA_forecast_se, type = "l", col = 2, lty = 2)
points(MA_forecasts + 2*MA_forecast_se, type = "l", col = 2, lty = 2)

Note that the MA model can only produce a 1-step forecast. For additional forecasting periods, the predict() command simply extends the original 1-step forecast. This explains the unexpected horizontal lines after 1971.

4.5 Compare AR and MA models

4.5.1 AR vs MA models

As you’ve seen, autoregressive (AR) and simple moving average (MA) are two useful approaches to modeling time series. But how can you determine whether an AR or MA model is more appropriate in practice?

To determine model fit, you can measure the Akaike information criterion (AIC) and Bayesian information criterion (BIC) for each model. While the math underlying the AIC and BIC is beyond the scope of this course, for your purposes the main idea is these these indicators penalize models with more estimated parameters, to avoid overfitting, and smaller values are preferred. All factors being equal, a model that produces a lower AIC or BIC than another model is considered a better fit.

To estimate these indicators, you can use the AIC() and BIC() commands, both of which require a single argument to specify the model in question.

In this exercise, you’ll return to the Nile data and the AR and MA models you fitted to this data. These models and their predictions for the 1970s (AR_fit) and (MA_fit) are depicted in the plot on the right.

AR <- arima(Nile, order = c(1, 0, 0))
MA <- arima(Nile, order = c(0, 0, 1))


AR_fit <- Nile - resid(AR)
MA_fit <- Nile - resid(MA)
# Find correlation between AR_fit and MA_fit
cor(AR_fit, MA_fit)
[1] 0.9401765
# Find AIC of AR
AIC(AR)
[1] 1285.904
# Find AIC of MA
AIC(MA)
[1] 1295.442
# Find BIC of AR
BIC(AR)
[1] 1293.72
# Find BIC of MA
BIC(MA)
[1] 1303.257

Although the predictions from both models are very similar (indeed, they have a correlation coeffiicent of 0.94), both the AIC and BIC indicate that the AR model is a slightly better fit for your Nile data.

LS0tCnRpdGxlOiAiVGltZSBTZXJpZXMgQW5hbHlzaXMgaW4gUiIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogZmFsc2UKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgCnRvY19kZXB0aDogMwotLS0KCiMgRXhwbG9yYXRvcnkgdGltZSBzZXJpZXMgZGF0YSBhbmFseXNpcwoKIyMgSW50cm9kdWN0aW9uCgojIyMgRXhwbG9yaW5nIHJhdyB0aW1lIHNlcmllcwoKVGhlIG1vc3QgY29tbW9uIGZpcnN0IHN0ZXAgd2hlbiBjb25kdWN0aW5nIHRpbWUgc2VyaWVzIGFuYWx5c2lzIGlzIHRvIGRpc3BsYXkgeW91ciB0aW1lIHNlcmllcyBkYXRhc2V0IGluIGEgdmlzdWFsbHkgaW50dWl0aXZlIGZvcm1hdC4gVGhlIG1vc3QgdXNlZnVsIHdheSB0byB2aWV3IHJhdyB0aW1lIHNlcmllcyBkYXRhIGluIFIgaXMgdG8gdXNlIHRoZSBwcmludCgpIGNvbW1hbmQsIHdoaWNoIGRpc3BsYXlzIHRoZSBTdGFydCwgRW5kLCBhbmQgRnJlcXVlbmN5IG9mIHlvdXIgZGF0YSBhbG9uZyB3aXRoIHRoZSBvYnNlcnZhdGlvbnMuCgpBbm90aGVyIHVzZWZ1bCBjb21tYW5kIGZvciB2aWV3aW5nIHRpbWUgc2VyaWVzIGRhdGEgaW4gUiBpcyB0aGUgbGVuZ3RoKCkgZnVuY3Rpb24sIHdoaWNoIHRlbGxzIHlvdSB0aGUgdG90YWwgbnVtYmVyIG9mIG9ic2VydmF0aW9ucyBpbiB5b3VyIGRhdGEuCgpTb21lIGRhdGFzZXRzIGFyZSB2ZXJ5IGxvbmcsIGFuZCBwcmV2aWV3aW5nIGEgc3Vic2V0IG9mIGRhdGEgaXMgbW9yZSBzdWl0YWJsZSB0aGFuIGRpc3BsYXlpbmcgdGhlIGVudGlyZSBzZXJpZXMuIFRoZSBoZWFkKF9fXywgbiA9X19fKSBhbmQgdGFpbChfX18sIG4gPV9fXykgZnVuY3Rpb25zLCBpbiB3aGljaCBuIGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheSwgZm9jdXMgb24gdGhlIGZpcnN0IGFuZCBsYXN0IGZldyBlbGVtZW50cyBvZiBhIGdpdmVuIGRhdGFzZXQgcmVzcGVjdGl2ZWx5LgoKSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIGV4cGxvcmUgdGhlIGZhbW91cyBSaXZlciBOaWxlIGFubnVhbCBzdHJlYW1mbG93IGRhdGEsIE5pbGUuIFRoaXMgdGltZSBzZXJpZXMgZGF0YXNldCBpbmNsdWRlcyBzb21lIG1ldGFkYXRhIGluZm9ybWF0aW9uLiBXaGVuIGNhbGxpbmcgcHJpbnQoTmlsZSksIG5vdGUgdGhhdCBTdGFydCA9IDE4NzEgaW5kaWNhdGVzIHRoYXQgMTg3MSBpcyB0aGUgeWVhciBvZiB0aGUgZmlyc3QgYW5udWFsIG9ic2VydmF0aW9uLCBhbmQgRW5kID0gMTk3MCBpbmRpY2F0ZXMgMTk3MCBpcyB0aGUgeWVhciBvZiB0aGUgbGFzdCBhbm51YWwgb2JzZXJ2YXRpb24uCgpgYGB7cn0KIyBQcmludCB0aGUgTmlsZSBkYXRhc2V0CnByaW50KE5pbGUpCgojIExpc3QgdGhlIG51bWJlciBvZiBvYnNlcnZhdGlvbnMgaW4gdGhlIE5pbGUgZGF0YXNldApsZW5ndGgoTmlsZSkKCiMgRGlzcGxheSB0aGUgZmlyc3QgMTAgZWxlbWVudHMgb2YgdGhlIE5pbGUgZGF0YXNldApoZWFkKE5pbGUsIG4gPSAxMCkKCiMgRGlzcGxheSB0aGUgbGFzdCAxMiBlbGVtZW50cyBvZiB0aGUgTmlsZSBkYXRhc2V0CnRhaWwoTmlsZSwgbiA9IDEyKQpgYGAKIyMjIEJhc2ljIHRpbWUgc2VyaWVzIHBsb3RzCgpXaGlsZSBzaW1wbGUgY29tbWFuZHMgc3VjaCBhcyBwcmludCgpLCBsZW5ndGgoKSwgaGVhZCgpLCBhbmQgdGFpbCgpIHByb3ZpZGUgY3J1Y2lhbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHRpbWUgc2VyaWVzIGRhdGEsIGFub3RoZXIgdmVyeSB1c2VmdWwgd2F5IHRvIGV4cGxvcmUgYW55IGRhdGEgaXMgdG8gZ2VuZXJhdGUgYSBwbG90LgoKSW4gdGhpcyBleGVyY2lzZSwgeW91IHdpbGwgcGxvdCB0aGUgUml2ZXIgTmlsZSBhbm51YWwgc3RyZWFtZmxvdyBkYXRhIHVzaW5nIHRoZSBwbG90KCkgZnVuY3Rpb24uIEZvciB0aW1lIHNlcmllcyBkYXRhIG9iamVjdHMgc3VjaCBhcyBOaWxlLCBhIFRpbWUgaW5kZXggZm9yIHRoZSBob3Jpem9udGFsIGF4aXMgaXMgdHlwaWNhbGx5IGluY2x1ZGVkLiBGcm9tIHRoZSBwcmV2aW91cyBleGVyY2lzZSwgeW91IGtub3cgdGhhdCB0aGlzIGRhdGEgc3BhbnMgZnJvbSAxODcxIHRvIDE5NzAsIGFuZCBob3Jpem9udGFsIHRpY2sgbWFya3MgYXJlIGxhYmVsZWQgYXMgc3VjaC4gVGhlIGRlZmF1bHQgbGFiZWwgb2YgIlRpbWUiIGlzIG5vdCB2ZXJ5IGluZm9ybWF0aXZlLiBTaW5jZSB0aGVzZSBkYXRhIGFyZSBhbm51YWwgbWVhc3VyZW1lbnRzLCB5b3Ugc2hvdWxkIHVzZSB0aGUgbGFiZWwgIlllYXIiLiBXaGlsZSB5b3UncmUgYXQgaXQsIHlvdSBzaG91bGQgY2hhbmdlIHRoZSB2ZXJ0aWNhbCBheGlzIGxhYmVsIHRvICJSaXZlciBWb2x1bWUgKDFlOSBtXnszfSkiLgoKQWRkaXRpb25hbGx5LCBpdCBoZWxwcyB0byBoYXZlIGFuIGluZm9ybWF0aXZlIHRpdGxlLCB3aGljaCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBhcmd1bWVudCBtYWluLiBGb3IgeW91ciBwdXJwb3NlcywgYSB1c2VmdWwgdGl0bGUgZm9yIHRoaXMgZmlndXJlIHdvdWxkIGJlICJBbm51YWwgUml2ZXIgTmlsZSBWb2x1bWUgYXQgQXN3YW4sIDE4NzEtMTk3MCIuCgpGaW5hbGx5LCB0aGUgZGVmYXVsdCBwbG90dGluZyB0eXBlIGZvciB0aW1lIHNlcmllcyBvYmplY3RzIGlzICJsIiBmb3IgbGluZS4gQ29ubmVjdGluZyBjb25zZWN1dGl2ZSBvYnNlcnZhdGlvbnMgY2FuIGhlbHAgbWFrZSBhIHRpbWUgc2VyaWVzIHBsb3QgbW9yZSBpbnRlcnByZXRhYmxlLiBTb21ldGltZXMgaXQgaXMgYWxzbyB1c2VmdWwgdG8gaW5jbHVkZSBib3RoIHRoZSBvYnNlcnZhdGlvbnMgcG9pbnRzIGFzIHdlbGwgYXMgdGhlIGxpbmVzLCBhbmQgd2UgaW5zdGVhZCB1c2UgImIiIGZvciBib3RoLgpgYGB7cn0KIyBQbG90IHRoZSBOaWxlIGRhdGEgd2l0aCB4bGFiLCB5bGFiLCBtYWluLCBhbmQgdHlwZSBhcmd1bWVudHMKcGxvdChOaWxlLCB0eXBlID0gImIiLCB4bGFiID0gIlllYXIiLCB5bGFiID0gIlJpdmVyIFZvbHVtZSAoMWU5IG1eezN9KSIsIG1haW4gPSAiQW5udWFsIFJpdmVyIE5pbGUgVm9sdW1lIGF0IEFzd2FuLCAxODcxLTE5NzAiKQoKYGBgClRoZSBwbG90KCkgY29tbWFuZCBpcyBvbmUgb2YgdGhlIG1vc3QgdmVyc2F0aWxlIGNvbW1hbmRzIGluIFIuIFdoZW4gdXNlZCB3aXRoIHRpbWUgc2VyaWVzIGRhdGEsIHRoaXMgY29tbWFuZCBhdXRvbWF0aWNhbGx5IHBsb3RzIHlvdXIgZGF0YSBvdmVyIHRpbWUuCgojIyMgV2hhdCBkb2VzIHRoZSB0aW1lIGluZGV4IHRlbGwgdXM/CgpTb21lIGRhdGEgYXJlIG5hdHVyYWxseSBldmVubHkgc3BhY2VkIGJ5IHRpbWUuIFRoZSB0aW1lIHNlcmllcyBkaXNjcmV0ZV9kYXRhIHNob3duIGluIHRoZSB0b3AgZmlndXJlIGhhcyAyMCBvYnNlcnZhdGlvbnMsIHdpdGggb25lIG9ic2VydmF0aW9uIGFwcGVhcmluZyBhdCBlYWNoIG9mIHRoZSBkaXNjcmV0ZSB0aW1lIGluZGljZXMgMSB0aHJvdWdoIDIwLiBEaXNjcmV0ZSB0aW1lIGluZGV4aW5nIGlzIGFwcHJvcHJpYXRlIGZvciBkaXNjcmV0ZV9kYXRhLgoKVGhlIHRpbWUgc2VyaWVzIGNvbnRpbnVvdXNfc2VyaWVzIHNob3duIGluIHRoZSBib3R0b20gZmlndXJlIGFsc28gaGFzIDIwIG9ic2VydmF0aW9ucywgaXQgaXMgZm9sbG93aW5nIHRoZSBzYW1lIHBlcmlvZGljIHBhdHRlcm4gYXMgZGlzY3JldGVfZGF0YSwgYnV0IGl0cyBvYnNlcnZhdGlvbnMgYXJlIG5vdCBldmVubHkgc3BhY2VkLiBJdHMgZmlyc3QsIHNlY29uZCwgYW5kIGxhc3Qgb2JzZXJ2YXRpb25zIHdlcmUgb2JzZXJ2ZWQgYXQgdGltZXMgMS4yMTAzMjIsIDEuNzQ2MTM3LCBhbmQgMjAuMTgwNTI0LCByZXNwZWN0aXZlbHkuIENvbnRpbnVvdXMgdGltZSBpbmRleGluZyBpcyBuYXR1cmFsIGZvciBjb250aW51b3VzX3NlcmllcywgaG93ZXZlciwgdGhlIG9ic2VydmF0aW9ucyBhcmUgYXBwcm94aW1hdGVseSBldmVubHkgc3BhY2VkLCB3aXRoIGFib3V0IDEgb2JzZXJ2YXRpb24gb2JzZXJ2ZWQgcGVyIHRpbWUgdW5pdC4gTGV0J3MgaW52ZXN0aWdhdGUgdXNpbmcgYSBkaXNjcmV0ZSB0aW1lIGluZGV4aW5nIGZvciBjb250aW51b3VzX3Nlcmllcy4KCmBgYHtyIGluY2x1ZGU9RkFMU0V9CmRpc2NyZXRlX2RhdGEgPC0gcmJpbmQoc3RydWN0dXJlKGMoMC40Nzk0MjU1Mzg2MDQyMDMsIDAuODQxNDcwOTg0ODA3ODk3LCAwLjk5NzQ5NDk4NjYwNDA1NCwgCjAuOTA5Mjk3NDI2ODI1NjgyLCAwLjU5ODQ3MjE0NDEwMzk1NywgMC4xNDExMjAwMDgwNTk4NjcsIC0wLjM1MDc4MzIyNzY4OTYyLCAKLTAuNzU2ODAyNDk1MzA3OTI4LCAtMC45Nzc1MzAxMTc2NjUwOTcsIC0wLjk1ODkyNDI3NDY2MzEzOCwgLTAuNzA1NTQwMzI1NTcwMzkyLCAKLTAuMjc5NDE1NDk4MTk4OTI2LCAwLjIxNTExOTk4ODA4NzgxNiwgMC42NTY5ODY1OTg3MTg3ODksIDAuOTM3OTk5OTc2Nzc0NzM5LCAKMC45ODkzNTgyNDY2MjMzODIsIDAuNzk4NDg3MTEyNjIzNDksIDAuNDEyMTE4NDg1MjQxNzU3LCAtMC4wNzUxNTExMjA0NjE4MDkzLCAKLTAuNTQ0MDIxMTEwODg5MzcpLCAuVHNwID0gYygxLCAyMCwgMSksIGNsYXNzID0gInRzIikpCgpjb250aW51b3VzX3NlcmllcyA8LSByYmluZChjKDAuNTY4ODk0Njc1MzkxNjc0LCAwLjc2NjMwNDA4Mjc0ODc2MiwgMC45OTIwNzUxMjIwNzQ3NDMsIDAuOTc0ODE3NDE0MjQ2ODk3LCAKMC4zOTkxMjMyMDI2ODc4MDcsIDAuMzc2NjAyNDYyODg3ODIsIC0wLjM4NTMyMDMzMjgxODQyMSwgLTAuODM2MzU4NTE4MTQyNTMzLCAKLTAuOTk5NjY5ODI5MDQ1NjIyLCAtMC45OTgzMTAxODk1MzYxOTUsIC0wLjY0NjIyMjc5OTg0MjE5MiwgLTAuMDkzODYxNTEzMDA2MTQ0NywgCjAuNDAwNTI5MDkzODc0Mzc4LCAwLjY4MTYwNTc3ODg5OTIzNiwgMC45NTMxODE1OTIyMTQxODcsIDAuOTk2OTM4MDI3MjA1NjkyLCAKMC44MzkzNDE5Mzg0Njg4MzgsIDAuMzcwMDM3NTQ0NjA5MzczLCAtMC4yNTUwOTY3NTY3ODQ2NTUsIC0wLjYxNzQzOTgyNTMxMDEwOQopKQoKY29udGludW91c190aW1lX2luZGV4IDwtIHJiaW5kKGMoMS4yMTAzMjI0NDY2NTU0OCwgMS43NDYxMzczMDE2NzAzOSwgMi44ODk2MzQ0NDQ2MTExNSwgMy41OTEzODM2NzI1NTIxOCwgCjUuNDYyMDY0NTQ0NjcwMjgsIDUuNTEwOTMzMzMwMDQ5NzQsIDcuMDc0Mjk1MTc3NTkwMSwgOC4yNjQzOTc5ODk0OTI4NiwgCjkuMzczMzgyMzA5MjE4ODcsIDkuNTQxMDYzMzU0MTE3OCwgMTEuMTYxMTIxNjAwNTQwNCwgMTIuMzc4MzcwODUwMzQ3LCAKMTMuMzkwNTU5MDI5NTMyNiwgMTQuMDY2MjgwNDY1NTczMSwgMTUuMDkzNTQ3MzQ0NDQwNiwgMTUuODY0NTE0NTE2NjY2NSwgCjE2Ljg1NzQxMjg1MTQxNTYsIDE4LjA5MTQ1NzA1NDI1MTgsIDE5LjM2NTQ1MTQ2MDIzODUsIDIwLjE4MDUyMzY2MDAzMzkKKSkKYGBgCmBgYHtyfQoKZGlzY3JldGVfdGltZV9pbmRleCA8LSBjKDE6MjApCgpwbG90KGNvbnRpbnVvdXNfdGltZV9pbmRleCwgZGlzY3JldGVfZGF0YSwgdHlwZSA9ICJiIikKcGxvdChkaXNjcmV0ZV90aW1lX2luZGV4LCBkaXNjcmV0ZV9kYXRhLCB0eXBlID0gImIiKQpgYGAKCmBgYHtyfQojIFBsb3QgdGhlIGNvbnRpbnVvdXNfc2VyaWVzIHVzaW5nIGNvbnRpbnVvdXMgdGltZSBpbmRleGluZwpwYXIobWZyb3c9YygyLDEpKQpwbG90KGNvbnRpbnVvdXNfdGltZV9pbmRleCxjb250aW51b3VzX3NlcmllcywgdHlwZSA9ICJiIikKCiMgTWFrZSBhIGRpc2NyZXRlIHRpbWUgaW5kZXggdXNpbmcgMToyMCAKZGlzY3JldGVfdGltZV9pbmRleCA8LSBjKDE6MjApCgojIE5vdyBwbG90IHRoZSBjb250aW51b3VzX3NlcmllcyB1c2luZyBkaXNjcmV0ZSB0aW1lIGluZGV4aW5nCnBsb3QoZGlzY3JldGVfdGltZV9pbmRleCxjb250aW51b3VzX3NlcmllcywgdHlwZSA9ICJiIikKCmBgYAojIyBTYW1wbGluZyBmcmVxdWVuY3kKCiMjIyBJZGVudGlmeWluZyB0aGUgc2FtcGxpbmcgZnJlcXVlbmN5CgpJbiBhZGRpdGlvbiB0byB2aWV3aW5nIHlvdXIgZGF0YSBhbmQgcGxvdHRpbmcgb3ZlciB0aW1lLCB0aGVyZSBhcmUgc2V2ZXJhbCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIHRpbWUgc2VyaWVzIGRhdGFzZXRzLgoKVGhlIHN0YXJ0KCkgYW5kIGVuZCgpIGZ1bmN0aW9ucyByZXR1cm4gdGhlIHRpbWUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IG9ic2VydmF0aW9ucywgcmVzcGVjdGl2ZWx5LiBUaGUgdGltZSgpIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYSB2ZWN0b3Igb2YgdGltZSBpbmRpY2VzLCB3aXRoIG9uZSBlbGVtZW50IGZvciBlYWNoIHRpbWUgaW5kZXggb24gd2hpY2ggdGhlIHNlcmllcyB3YXMgb2JzZXJ2ZWQuCgpUaGUgZGVsdGF0KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgZml4ZWQgdGltZSBpbnRlcnZhbCBiZXR3ZWVuIG9ic2VydmF0aW9ucyBhbmQgdGhlIGZyZXF1ZW5jeSgpIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBvYnNlcnZhdGlvbnMgcGVyIHVuaXQgdGltZS4gRmluYWxseSwgdGhlIGN5Y2xlKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgcG9zaXRpb24gaW4gdGhlIGN5Y2xlIG9mIGVhY2ggb2JzZXJ2YXRpb24uCgpJbiB0aGlzIGV4ZXJjaXNlLCB5b3UnbGwgcHJhY3RpY2UgYXBwbHlpbmcgdGhlc2UgZnVuY3Rpb25zIHRvIHRoZSBBaXJQYXNzZW5nZXJzIGRhdGFzZXQsIHdoaWNoIHJlcG9ydHMgdGhlIG1vbnRobHkgdG90YWwgaW50ZXJuYXRpb25hbCBhaXJsaW5lIHBhc3NlbmdlcnMgKGluIHRob3VzYW5kcykgZnJvbSAxOTQ5IHRvIDE5NjAuCgpgYGB7cn0KIyBQbG90IEFpclBhc3NlbmdlcnMKcGxvdChBaXJQYXNzZW5nZXJzKQoKIyBWaWV3IHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIG9mIEFpclBhc3NlbmdlcnMKc3RhcnQoQWlyUGFzc2VuZ2VycykKZW5kKEFpclBhc3NlbmdlcnMpCgojIFVzZSB0aW1lKCksIGRlbHRhdCgpLCBmcmVxdWVuY3koKSwgYW5kIGN5Y2xlKCkgd2l0aCBBaXJQYXNzZW5nZXJzIAp0aW1lKEFpclBhc3NlbmdlcnMpCmRlbHRhdChBaXJQYXNzZW5nZXJzKQpmcmVxdWVuY3koQWlyUGFzc2VuZ2VycykKY3ljbGUoQWlyUGFzc2VuZ2VycykKYGBgClRoZXNlIGNvbW1hbmRzIHByb3ZpZGUgY29uc2lkZXJhYmxlIGRlc2NyaXB0aXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJ1Y3R1cmVzIGFuZCBwYXR0ZXJucyBpbiB5b3VyIHRpbWUgc2VyaWVzIGRhdGEuIEl0IG1heSBoZWxwIHRvIGtlZXAgdGhlc2UgY29tbWFuZHMgaGFuZHkgd2hlbiB3b3JraW5nIHdpdGggeW91ciBvd24gdGltZSBzZXJpZXMgZGF0YS4KCiMjIyBXaGVuIGlzIHRoZSBzYW1wbGluZyBmcmVxdWVuY3kgZXhhY3Q/CgpUaGUgc2FtcGxpbmcgZnJlcXVlbmN5IGlzIG9mdGVuIG9ubHkgYXBwcm94aW1hdGUgYW5kIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIG9ic2VydmF0aW9ucyBpcyBub3QgcXVpdGUgYSBmaXhlZCB1bml0LiBGb3IgZXhhbXBsZSwgdGhlcmUgYXJlIHVzdWFsbHkgMzY1IGRheXMgaW4gYSB5ZWFyIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIuIEhvd2V2ZXIsIChhbG1vc3QpIGV2ZXJ5IGZvdXIgeWVhcnMgdGhlcmUgYXJlIDM2NiBkYXlzIChsZWFwIHllYXJzKS4gVGhpcyBjb21wZW5zYXRlcyBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgRWFydGggY29tcGxldGVzIGEgcm90YXRpb24gYXJvdW5kIFNvbCwgdGhlIHN1biwgaW4gYXBwcm94aW1hdGVseSAzNjUuMjQyMiBkYXlzLCBvbiBhdmVyYWdlLgoKQXMgYSBzaW1wbGlmeWluZyBhc3N1bXB0aW9uLCB3ZSBvZnRlbiBpZ25vcmUgdGhlc2Ugc21hbGwgZGlzY3JlcGFuY2llcyBhbmQgcHJvY2VlZCBhcyB0aG91Z2ggdGhlIHNhbXBsaW5nIGZyZXF1ZW5jeSBhbmQgb2JzZXJ2YXRpb24gaW50ZXJ2YWxzIGFyZSBmaXhlZCBjb25zdGFudHMuIFR5cGljYWxseSwgb3VyIHJlc3VsdHMgd2lsbCBub3QgYmUgc2Vuc2l0aXZlIHRvIGFwcHJveGltYXRpb24gd2hlbiB0aGUgdW5kZXJseWluZyBwcm9jZXNzIGlzIG5vdCBjaGFuZ2luZyB0b28gcXVpY2tseS4KCiMjIyBNaXNzaW5nIHZhbHVlcwoKU29tZXRpbWVzIHRoZXJlIGFyZSBtaXNzaW5nIHZhbHVlcyBpbiB0aW1lIHNlcmllcyBkYXRhLCBkZW5vdGVkIE5BIGluIFIsIGFuZCBpdCBpcyB1c2VmdWwgdG8ga25vdyB0aGVpciBsb2NhdGlvbnMuIEl0IGlzIGFsc28gaW1wb3J0YW50IHRvIGtub3cgaG93IG1pc3NpbmcgdmFsdWVzIGFyZSBoYW5kbGVkIGJ5IHZhcmlvdXMgUiBmdW5jdGlvbnMuIFNvbWV0aW1lcyB3ZSBtYXkgd2FudCB0byBpZ25vcmUgYW55IG1pc3NpbmduZXNzLCBidXQgb3RoZXIgdGltZXMgd2UgbWF5IHdpc2ggdG8gaW1wdXRlIG9yIGVzdGltYXRlIHRoZSBtaXNzaW5nIHZhbHVlcy4KCkxldCdzIGFnYWluIGNvbnNpZGVyIHRoZSBtb250aGx5IEFpclBhc3NlbmdlcnMgZGF0YXNldCwgYnV0IG5vdyB0aGUgZGF0YSBmb3IgdGhlIHllYXIgMTk1NiBhcmUgbWlzc2luZy4gSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIGV4cGxvcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG1pc3NpbmcgZGF0YSBhbmQgaW1wdXRlIHNvbWUgbmV3IGRhdGEgdG8gc29sdmUgdGhlIHByb2JsZW0uCgpUaGUgbWVhbigpIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIHNhbXBsZSBtZWFuLCBidXQgaXQgZmFpbHMgaW4gdGhlIHByZXNlbmNlIG9mIGFueSBOQSB2YWx1ZXMuIFVzZSBtZWFuKF9fXywgbmEucm0gPSBUUlVFKSB0byBjYWxjdWxhdGUgdGhlIG1lYW4gd2l0aCBhbGwgbWlzc2luZyB2YWx1ZXMgcmVtb3ZlZC4gSXQgaXMgY29tbW9uIHRvIHJlcGxhY2UgbWlzc2luZyB2YWx1ZXMgd2l0aCB0aGUgbWVhbiBvZiB0aGUgb2JzZXJ2ZWQgdmFsdWVzLiBEb2VzIHRoaXMgc2ltcGxlIGRhdGEgaW1wdXRhdGlvbiBzY2hlbWUgYXBwZWFyIGFkZXF1YXRlIHdoZW4gYXBwbGllZCB0aGUgdGhlIEFpclBhc3NlbmdlcnMgZGF0YXNldD8KCmBgYHtyIGluY2x1ZGU9RkFMU0V9CkFpclBhc3NlbmdlcnNfTkEgPC0gQWlyUGFzc2VuZ2VycwpBaXJQYXNzZW5nZXJzX05BWzg1Ojk2XSA8LSBOQQpgYGAKYGBge3J9CiMgUGxvdCB0aGUgQWlyUGFzc2VuZ2VycyBkYXRhCnBsb3QoQWlyUGFzc2VuZ2Vyc19OQSkKCiMgQ29tcHV0ZSB0aGUgbWVhbiBvZiBBaXJQYXNzZW5nZXJzCm1lYW4oQWlyUGFzc2VuZ2Vyc19OQSwgbmEucm0gPSBUUlVFKQoKIyBJbXB1dGUgbWVhbiB2YWx1ZXMgdG8gTkEgaW4gQWlyUGFzc2VuZ2VycwpBaXJQYXNzZW5nZXJzX05BWzg1Ojk2XSA8LSBtZWFuKEFpclBhc3NlbmdlcnNfTkEsIG5hLnJtID0gVFJVRSkKCiMgR2VuZXJhdGUgYW5vdGhlciBwbG90IG9mIEFpclBhc3NlbmdlcnMKcGxvdChBaXJQYXNzZW5nZXJzX05BKQoKIyBBZGQgdGhlIGNvbXBsZXRlIEFpclBhc3NlbmdlcnMgZGF0YSB0byB5b3VyIHBsb3QKI3JtKEFpclBhc3NlbmdlcnNfTkEpCnBvaW50cyhBaXJQYXNzZW5nZXJzX05BLCB0eXBlID0gImwiLCBjb2wgPSAyLCBsdHkgPSAzKQpBaXJQYXNzZW5nZXJzX05BCmBgYApCYXNlZCBvbiB5b3VyIHBsb3QsIGl0IHNlZW1zIHRoYXQgc2ltcGxlIGRhdGEgaW1wdXRhdGlvbiB1c2luZyB0aGUgbWVhbiBpcyBub3QgYSBncmVhdCBtZXRob2QgdG8gYXBwcm94aW1hdGUgd2hhdCdzIHJlYWxseSBnb2luZyBvbiBpbiB0aGUgQWlyUGFzc2VuZ2VycyBkYXRhLgoKIyMgQmFzaWMgdGltZSBzZXJpZXMgb2JqZWN0cwoKIyMjIENyZWF0aW5nIGEgdGltZSBzZXJpZXMgb2JqZWN0IHdpdGggdHMoKQoKVGhlIGZ1bmN0aW9uIHRzKCkgY2FuIGJlIGFwcGxpZWQgdG8gY3JlYXRlIHRpbWUgc2VyaWVzIG9iamVjdHMuIEEgdGltZSBzZXJpZXMgb2JqZWN0IGlzIGEgdmVjdG9yICh1bml2YXJpYXRlKSBvciBtYXRyaXggKG11bHRpdmFyaWF0ZSkgd2l0aCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyB0aW1lIGluZGljZXMgZm9yIGVhY2ggb2JzZXJ2YXRpb24sIHRoZSBzYW1wbGluZyBmcmVxdWVuY3kgYW5kIHRpbWUgaW5jcmVtZW50IGJldHdlZW4gb2JzZXJ2YXRpb25zLCBhbmQgdGhlIGN5Y2xlIGxlbmd0aCBmb3IgcGVyaW9kaWMgZGF0YS4gU3VjaCBvYmplY3RzIGFyZSBvZiB0aGUgdHMgY2xhc3MsIGFuZCByZXByZXNlbnQgZGF0YSB0aGF0IGhhcyBiZWVuIG9ic2VydmVkIGF0IChhcHByb3hpbWF0ZWx5KSBlcXVhbGx5IHNwYWNlZCB0aW1lIHBvaW50cy4gTm93IHlvdSB3aWxsIGNyZWF0ZSB0aW1lIHNlcmllcyBvYmplY3RzIHlvdXJzZWxmLgoKVGhlIGFkdmFudGFnZSBvZiBjcmVhdGluZyBhbmQgd29ya2luZyB3aXRoIHRpbWUgc2VyaWVzIG9iamVjdHMgb2YgdGhlIHRzIGNsYXNzIGlzIHRoYXQgbWFueSBtZXRob2RzIGFyZSBhdmFpbGFibGUgZm9yIHV0aWxpemluZyB0aW1lIHNlcmllcyBhdHRyaWJ1dGVzLCBzdWNoIGFzIHRpbWUgaW5kZXggaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBhcyB5b3UndmUgc2VlbiBpbiBlYXJsaWVyIGV4ZXJjaXNlcywgY2FsbGluZyBwbG90KCkgb24gYSB0cyBvYmplY3Qgd2lsbCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgcGxvdCBvdmVyIHRpbWUuCgpJbiB0aGlzIGV4ZXJjaXNlLCB5b3UnbGwgZmFtaWxpYXJpemUgeW91cnNlbGYgd2l0aCB0aGUgdHMgY2xhc3MgYnkgZW5jb2Rpbmcgc29tZSB0aW1lIHNlcmllcyBkYXRhIChzYXZlZCBhcyBkYXRhX3ZlY3RvcikgaW50byB0cyBhbmQgZXhwbG9yaW5nIHRoZSByZXN1bHQuIFlvdXIgdGltZSBzZXJpZXMgZGF0YV92ZWN0b3Igc3RhcnRzIGluIHRoZSB5ZWFyIDIwMDQgYW5kIGhhcyA0IG9ic2VydmF0aW9ucyBwZXIgeWVhciAoaS5lLiBpdCBpcyBxdWFydGVybHkgZGF0YSkuCmBgYHtyIGluY2x1ZGU9RkFMU0V9CmRhdGFfdmVjdG9yIDwtIGMoMi4wNTIxOTQxMDczMTExMSwgNC4yOTI4ODUyNzk3NDA5MSwgMy4zMjk0MTMyOTQ0MTg0NCwgMy41MDg1OTUwNjY5NjA0NSwgMC4wMDA5NTc2OTM3NjIxOTMxMjQsIDEuOTIxNzE4NjM0NTAyNDksIDAuNzk3ODEzNDEyODAwNTM1LCAwLjI5OTk1NDM0MzQ3ODA2MywgMC45NDM1Njg3NTM1NjI2MDksIDAuNTc0ODI4MzM4NzU4NzE0LCAtMC4wMDM0MDA1OTAyODY3NDYxMSwgMC4zNDQ4NjQ5MTc1NzA4NiwgMi4yMjI5NzYxMTM2MDkwNCwgMC4xNzYzMTQ0NTc2MzE1LCAyLjcwOTc2MjI3Njk4MDI0LCAxLjI1MDE5NDg5NjUzNDE5LCAtMC40MDA3MTY0NzU0NDg2NTEsIDAuODg1MjczMjEyMDg5NjUsIC0xLjU4NTI0MjAyNjU1MzksIC0yLjI4MjkyNzg4OTEwNDQ3LCAtMi41NjA5NTMxMjg5ODQ0NCwgLTMuMTI1OTk2Mzc1NDQ3OTMsIC0yLjg2NjAyOTU4OTU0NjkyLCAtMS43ODQ3MDA5MjA2ODY2MiwgLTEuODg5NDkxMjkwNzg2OTIsIC0yLjcyNTUzNTExOTM4MjYsIC0yLjEwMzMxNDE4MDAzNjI3LCAtMC4wMTc0MjU2ODkzMzM4NDg3LCAtMC4zNjEzMjA0MTUxMTY4ODEsIC0yLjkwMDg0MDMzMjY2MTA1LCAtMy4yODQ3NDQwOTI2NzA0NywgLTIuODY4NDU5NDcxNzcwOSwgLTEuOTUwNTA3NDQzNjU2NzQsIC00Ljg4MDE4OTI1MjQ3MzAzLCAtMy4yNjM0NjA1MzUyODk0LCAtMS42Mzk2MDYyNTIyMjU1NCwgLTMuMzAxMjU3NTg0MDI4OTQsIC0yLjYzMzEyNDU0MzM0OTQzLCAtMS43MDU4MzU0MDIyMTEzOSwgLTIuMjExOTgyNTA2MTMyNTUsIC0wLjUxNzA1OTUxODU3Mjk1NSwgMC4wNzUyNTA4MDk0ODQxNDIzLCAtMC44NDA2OTk0NzE1NjM1ODUsIC0xLjQwMjI2ODM0ODc0NTYxLCAtMC4xMzgyMTE0MjMwMjM4NTcsIC0xLjQwNjU5NTQ3MDI4MjgxLCAtMi4zMDQ2OTQxMDU0ODA0LCAxLjUwNzM4OTE0MzI0NTY1LCAwLjcxMTg2Nzk0NzY4ODg2NCwgLTEuMTMwMDUxOTAyMjMwNDUpCmBgYApgYGB7cn0KIyBVc2UgcHJpbnQoKSBhbmQgcGxvdCgpIHRvIHZpZXcgZGF0YV92ZWN0b3IKcHJpbnQoZGF0YV92ZWN0b3IpCnBsb3QoZGF0YV92ZWN0b3IpCgojIENvbnZlcnQgZGF0YV92ZWN0b3IgdG8gYSB0cyBvYmplY3Qgd2l0aCBzdGFydCA9IDIwMDQgYW5kIGZyZXF1ZW5jeSA9IDQKdGltZV9zZXJpZXMgPC0gdHMoZGF0YV92ZWN0b3IsIHN0YXJ0ID0gMjAwNCwgZnJlcXVlbmN5ID0gNCkKCiMgVXNlIHByaW50KCkgYW5kIHBsb3QoKSB0byB2aWV3IHRpbWVfc2VyaWVzCnByaW50KHRpbWVfc2VyaWVzKQpwbG90KHRpbWVfc2VyaWVzKQpgYGAKQXMgeW91IGNhbiBzZWUsIHRzIG9iamVjdHMgYXJlIHRyZWF0ZWQgZGlmZmVyZW50bHkgYnkgY29tbWFuZHMgc3VjaCBhcyBwcmludCgpIGFuZCBwbG90KCkuIEZvciBleGFtcGxlLCBhdXRvbWF0aWMgdXNlIG9mIHRoZSB0aW1lLWluZGV4IGluIHlvdXIgY2FsbHMgdG8gcGxvdCgpIHJlcXVpcmVzIGEgdHMgb2JqZWN0LgoKIyMjIFRlc3Rpbmcgd2hldGhlciBhbiBvYmplY3QgaXMgYSB0aW1lIHNlcmllcwoKV2hlbiB5b3Ugd29yayB0byBjcmVhdGUgeW91ciBvd24gZGF0YXNldHMsIHlvdSBjYW4gYnVpbGQgdGhlbSBhcyB0cyBvYmplY3RzLiBSZWNhbGwgdGhlIGRhdGFzZXQgZGF0YV92ZWN0b3IgZnJvbSB0aGUgcHJldmlvdXMgZXhlcmNpc2UsIHdoaWNoIHdhcyBqdXN0IGEgdmVjdG9yIG9mIG51bWJlcnMsIGFuZCB0aW1lX3NlcmllcywgdGhlIHRzIG9iamVjdCB5b3UgY3JlYXRlZCBmcm9tIGRhdGFfdmVjdG9yIHVzaW5nIHRoZSB0cygpIGZ1bmN0aW9uIGFuZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHN0YXJ0IHRpbWUgYW5kIHRoZSBvYnNlcnZhdGlvbiBmcmVxdWVuY3kuIEFzIGEgcmVtaW5kZXIsIGRhdGFfdmVjdG9yIGFuZCB0aW1lX3NlcmllcyBhcmUgc2hvd24gaW4gdGhlIHBsb3Qgb24gdGhlIHJpZ2h0LgoKV2hlbiB5b3UgdXNlIGRhdGFzZXRzIGZyb20gb3RoZXJzLCBzdWNoIGFzIHRob3NlIGluY2x1ZGVkIGluIGFuIFIgcGFja2FnZSwgeW91IGNhbiBjaGVjayB3aGV0aGVyIHRoZXkgYXJlIHRzIG9iamVjdHMgdXNpbmcgdGhlIGlzLnRzKCkgY29tbWFuZC4gVGhlIHJlc3VsdCBvZiB0aGUgdGVzdCBpcyBlaXRoZXIgVFJVRSB3aGVuIHRoZSBkYXRhIGlzIG9mIHRoZSB0cyBjbGFzcywgb3IgRkFMU0UgaWYgaXQgaXMgbm90LgpgYGB7cn0KIyBDaGVjayB3aGV0aGVyIGRhdGFfdmVjdG9yIGFuZCB0aW1lX3NlcmllcyBhcmUgdHMgb2JqZWN0cwppcy50cyhkYXRhX3ZlY3RvcikKaXMudHModGltZV9zZXJpZXMpCgojIENoZWNrIHdoZXRoZXIgTmlsZSBpcyBhIHRzIG9iamVjdAppcy50cyhOaWxlKQoKIyBDaGVjayB3aGV0aGVyIEFpclBhc3NlbmdlcnMgaXMgYSB0cyBvYmplY3QKaXMudHMoQWlyUGFzc2VuZ2VycykKYGBgCmlzLnRzKCkgaXMgYSBzaW1wbGUgY29tbWFuZCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgeW91J3JlIHdvcmtpbmcgd2l0aCBhIHRzIG9iamVjdC4gQXMgeW91IGNhbiBzZWUsIHRoZSBOaWxlIGFuZCBBaXJQYXNzZW5nZXJzIGRhdGFzZXRzIHlvdSB3b3JrZWQgd2l0aCBlYXJsaWVyIGluIHRoZSBjaGFwdGVyIGFyZSBib3RoIGVuY29kZWQgYXMgdHMgb2JqZWN0cy4KCiMjIyBQbG90dGluZyBhIHRpbWUgc2VyaWVzIG9iamVjdAoKSXQgaXMgb2Z0ZW4gdmVyeSB1c2VmdWwgdG8gcGxvdCBkYXRhIHdlIGFyZSBhbmFseXppbmcsIGFzIGlzIHRoZSBjYXNlIHdoZW4gY29uZHVjdGluZyB0aW1lIHNlcmllcyBhbmFseXNpcy4gSWYgdGhlIGRhdGFzZXQgdW5kZXIgc3R1ZHkgaXMgb2YgdGhlIHRzIGNsYXNzLCB0aGVuIHRoZSBwbG90KCkgZnVuY3Rpb24gaGFzIG1ldGhvZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGluY29ycG9yYXRlIHRpbWUgaW5kZXggaW5mb3JtYXRpb24gaW50byBhIGZpZ3VyZS4KCkxldCdzIGNvbnNpZGVyIHRoZSBldV9zdG9ja3MgZGF0YXNldCAoYXZhaWxhYmxlIGluIFIgYnkgZGVmYXVsdCBhcyBFdVN0b2NrTWFya2V0cykuIFRoaXMgZGF0YXNldCBjb250YWlucyBkYWlseSBjbG9zaW5nIHByaWNlcyBvZiBtYWpvciBFdXJvcGVhbiBzdG9jayBpbmRpY2VzIGZyb20gMTk5MS0xOTk4LCBzcGVjaWZpY2FsbHksIGZyb20gR2VybWFueSAoREFYKSwgU3dpdHplcmxhbmQgKFNNSSksIEZyYW5jZSAoQ0FDKSwgYW5kIHRoZSBVSyAoRlRTRSkuIFRoZSBkYXRhIHdlcmUgb2JzZXJ2ZWQgd2hlbiB0aGUgbWFya2V0cyB3ZXJlIG9wZW4sIHNvIHRoZXJlIGFyZSBubyBvYnNlcnZhdGlvbnMgb24gd2Vla2VuZHMgYW5kIGhvbGlkYXlzLiBXZSB3aWxsIHByb2NlZWQgd2l0aCB0aGUgYXBwcm94aW1hdGlvbiB0aGF0IHRoaXMgZGF0YXNldCBoYXMgZXZlbmx5IHNwYWNlZCBvYnNlcnZhdGlvbnMgYW5kIGlzIGEgZm91ciBkaW1lbnNpb25hbCB0aW1lIHNlcmllcy4KYGBge3J9CmV1X3N0b2NrcyA8LSBFdVN0b2NrTWFya2V0cwpgYGAKYGBge3J9CiMgQ2hlY2sgd2hldGhlciBldV9zdG9ja3MgaXMgYSB0cyBvYmplY3QKaXMudHMoZXVfc3RvY2tzKQoKIyBWaWV3IHRoZSBzdGFydCwgZW5kLCBhbmQgZnJlcXVlbmN5IG9mIGV1X3N0b2NrcwpzdGFydChldV9zdG9ja3MpCmVuZChldV9zdG9ja3MpCmZyZXF1ZW5jeShldV9zdG9ja3MpCgojIEdlbmVyYXRlIGEgc2ltcGxlIHBsb3Qgb2YgZXVfc3RvY2tzCnBsb3QoZXVfc3RvY2tzKQoKIyBVc2UgdHMucGxvdCB3aXRoIGV1X3N0b2Nrcwp0cy5wbG90KGV1X3N0b2NrcywgY29sID0gMTo0LCB4bGFiID0gIlllYXIiLCB5bGFiID0gIkluZGV4IFZhbHVlIiwgbWFpbiA9ICJNYWpvciBFdXJvcGVhbiBTdG9jayBJbmRpY2VzLCAxOTkxLTE5OTgiKQoKIyBBZGQgYSBsZWdlbmQgdG8geW91ciB0cy5wbG90CmxlZ2VuZCgidG9wbGVmdCIsIGNvbG5hbWVzKGV1X3N0b2NrcyksIGx0eSA9IDEsIGNvbCA9IDE6NCwgYnR5ID0gIm4iKQpgYGAKIyBQcmVkaWN0aW5nIHRoZSBmdXR1cmUKCiMjIFRyZW5kIHNwb3R0aW5nIQoKIyMjIFJlbW92aW5nIHRyZW5kcyBpbiB2YXJpYWJpbGl0eSB2aWEgdGhlIGxvZ2FyaXRobWljIHRyYW5zZm9ybWF0aW9uCgpUaGUgbG9nYXJpdGhtaWMgZnVuY3Rpb24gbG9nKCkgaXMgYSBkYXRhIHRyYW5zZm9ybWF0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gcG9zaXRpdmVseSB2YWx1ZWQgdGltZSBzZXJpZXMgZGF0YS4gSXQgc2xpZ2h0bHkgc2hyaW5rcyBvYnNlcnZhdGlvbnMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIG9uZSB0b3dhcmRzIHplcm8sIHdoaWxlIGdyZWF0bHkgc2hyaW5raW5nIHZlcnkgbGFyZ2Ugb2JzZXJ2YXRpb25zLiBUaGlzIHByb3BlcnR5IGNhbiBzdGFiaWxpemUgdmFyaWFiaWxpdHkgd2hlbiBhIHNlcmllcyBleGhpYml0cyBpbmNyZWFzaW5nIHZhcmlhYmlsaXR5IG92ZXIgdGltZS4gSXQgbWF5IGFsc28gYmUgdXNlZCB0byBsaW5lYXJpemUgYSByYXBpZCBncm93dGggcGF0dGVybiBvdmVyIHRpbWUuCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpyYXBpZF9ncm93dGggPC0gdHMoYyg1MDUuOTU0NzM3MzE2NTQyLCA0NDcuMzU1NjA4MTY2OTUsIDU0Mi41ODMwOTA0NzcwNDQsIDUxNi4wNjMzNjEyNzQ5ODMsIAo1MDYuOTU5OTI0MDg3Nzk3LCA1MzUuMDE2MjMyNjA2MDE1LCA0OTYuOTI5MTI5NDM3OTk2LCA0OTcuNTYyNTU1MzI4NTAyLCAKNTc3LjI0ODMwMDUzMDk1NiwgNTM2Ljg1NTk2NzMyNTI1NywgNTQxLjI0NTk0MDQxMjI2MiwgNDczLjQ5Nzg0MDI4OTA5NywgCjU1MC45ODg5NjE0NjA1NTEsIDU2OS40MTA2Mzc0MzcwNjksIDUyMi45MTUxODMzNjg0NzMsIDQ4Ny4yMDAxOTUxMzA5MTksIAo1OTQuNjEwNzg2Mzk1NTI0LCA1OTEuMTczOTc1NjY4NzIzLCA2MTUuOTg2Nzc1Mzk0NTY0LCA2MjEuMzE3NTQ1MTIwNjkzLCAKNjA3LjEyNTA0NjkxNjc2MSwgNTg3LjAzNjcwMTM3ODk4MSwgNTU0LjE1NTQzODQ2MjI4NSwgNjQ0LjExNzI0MTgyNzAyNywgCjUwOS43MDAwMjU3MjgxMTgsIDYwNy4wOTQzMzk0MDEzNTksIDYwMy41NTExODU1MzQ0NCwgNjEzLjYyMTU4NjY1MDA3NiwgCjU0NC45MTQzMzQ3NzUwNDcsIDY3MC44MTE4MjA3NjY1NjEsIDY4Ny4xMzE2MTU4ODIwOSwgNjE1LjU4MTcwODg1OTkxOCwgCjcxMS4xODczMTg2MDg5NDUsIDY5NC4yOTc5MDMzODYzMzgsIDY4MS45MjkzNDQ0OTUxMjksIDY1OS4xNDAyNTYxODkzMjEsIAo2NDIuNzAyMDU3ODMwMTU4LCA2MDEuNTMwMDYyNzEyNTIxLCA2NjYuNzYyMzA3NDczMTA2LCA2NTAuOTY1NjgzMTAwNTI5LCAKNjA2LjA5MTM0MzYyNzg2NSwgNjk2LjY3ODgyNzM3MzcwMiwgNjQxLjYwMjUwOTQ3MjgxNiwgODU1Ljc3MTkxOTc5NzE1MiwgCjY2Ny4zMjkwNzQ2NTI3ODQsIDU3My40OTEzOTAxOTI0NjIsIDc5MS43MzMyNjUwNjUwMTUsIDc1MS41OTE0NDY3ODM5NDcsIAo2MTAuNzk0ODE0MDgwNTQ4LCA2MjQuNjUwMzM2MjMyMDEsIDgzMy4yOTg5OTE3MDA4NTgsIDYzOS44ODY3MjQ0ODQyODgsIAo3MzYuODI4MjU2ODAzNTE5LCA3NzIuMjkyMzQxMDcxMjI0LCA2ODYuODg2NTE5MzIxMDk1LCA2NjcuNzYzMDgzMzc4NDk4LCAKNzEyLjk0MTQ5NTI1NzI2LCA5MTguMTgzODI4NDAyNjg5LCA2NTYuMTA4OTA3NzI0OTAyLCA3MDAuNDk3MjAxOTY0MjE3LCAKNjgzLjQ5MzI3MjQ2MjU4NSwgNzgxLjczNzk2ODIwMTk4MywgNzE1LjY4NDI4MDQ5OTA1NiwgODA4LjI4NzU0OTQzNjE4NCwgCjgyMC43Nzk1NDY3NzAzNjIsIDY1Ni44ODU1ODkzNTk3NzYsIDczMy4zMzk5NzQzNDA4MjcsIDc3My41Mzg3MzA0Mzc2MDcsIAo2NDEuMjAyNzQwMDgyMTE4LCA5MzIuMjExODU3Mzk2NzgsIDY4MC42NzY1NjU0MjcxMDksIDk4OC4yODI4MTUyODUwMjksIAo2NjQuODk4NTY4MjgwMjg4LCA4MTMuNTI4MzE4MjkwNTQ1LCA4ODMuNDA4Nzk4OTcxNzI2LCA5MjQuMjc0OTI0NjkxMTc2LCAKOTY5LjQzMjExODI0MTA3LCA3NzcuMzI5MzQ2NTE0MTA5LCA4ODAuOTk4NDA5OTE5ODAxLCA5NzEuMzU4Mjg5NTEwNzY2LCAKOTAyLjk1ODQyMzU3MTM0OCwgMTAyMC43NDU2NTg5NTUxNywgMTA3NS4xNDgzMTcxMDU5NywgODg2LjE3MDc0ODcxOTMwNywgCjg4OS42MzIyMDA4OTI1MTUsIDk1MC4zOTA3NzY5OTk1NTYsIDg3OC4wMzk1MjIxNDY5NjQsIDEwNDMuNzY3NjMyNzA4NjgsIAo5MDEuMTA4OTY2MDQwMDI1LCAxMDc5LjY1ODQwODU2Nzk4LCA5MzMuOTA1Mzk4NTA4MzYxLCA5MjEuOTQzMzAxMzkxOCwgCjg3MC44MDcxMTM2MTY5NTQsIDgxMS4xMzk3NjY2MjQ1ODksIDEwMDQuMjY3NjYyNDM1OTIsIDEwMDguMTc1ODI1ODExNDYsIAoxMTg5LjQ4OTMzNzM1MTkzLCA3NTEuOTcwNjA2NzYwOTczLCA5NDcuNDc1MjUyMzMwMjg4LCA4ODYuNTE1MzA1MTkzMjg2LCAKMTA3NC44OTQyNjQwODk2OSwgMTEwMS4xMzA2NzIwNzA4LCAxMTMwLjE4NTQ1NzYxOTksIDk3NS44NDk1MDcyNjU3ODcsIAo5NDguMTYxMDA5OTk5NjYyLCAxMTc3LjgyMjY1NjgyODcsIDEyMjcuMTI3MTMyOTc5NDYsIDk3Ni45OTU3MTEwMzUwOTQsIAo4MzYuNzA4ODcxODY2NjU1LCAxMzIzLjYwNDczMzg5MDkzLCA4NTIuMzUzMjA3MzA5MDQsIDEyMDAuODI2MTU3MDM3MzgsIAoxMjc0LjQ3ODg0NzUzMDgzLCAxMzQ5LjI2MTM5MDA0ODIsIDExMDIuNjMzMzcxOTY3NzgsIDEzMjQuODU2NTk0Mjk2OTYsIAoxMjY4LjcxODY1NDgxNjg4LCAxMDU4LjIyODkyODg2NDYzLCAxMjA0LjA4NzIzNDk4OTQ3LCAxMDg0LjY1MDI4NDk5MTY2LCAKMTI4NC40MzA1MDkzNTU2OSwgMTE5NS4yODQyNTE3NDEyNCwgMTA1OC40MjYyMTI1Njg0NiwgMTE4OC4wNTc2NjIzNDM5LCAKMTE2Ni41OTMzNjA3NiwgMTA2NC42OTQ1ODk2OTUzOCwgMTQyOS4wNjg1MjQ0MjU1MSwgMTA3MC44NTI4MDg3MTcwNCwgCjE1MzkuMzMwNTMzNTIzNzcsIDE0NjcuMTU3MTA4NzAwNDQsIDExMjcuNzA1ODIwMjQzMTQsIDEyOTYuMDcxNzE3MTIyNiwgCjE1NTUuMjc0MTI4MjI1MzUsIDEzMzIuOTAzNzIzNzIxNjIsIDEzMTUuNDIzNjM5NjE2NSwgMTE4OS4yNDYxNjkxOTAxLCAKMTQ4Mi40MzM5NDE2Nzk5OCwgMTI0MC45Mjg2ODkzMjUxNSwgMTIzNy43NzE5NjkzNTQzMSwgMTQ2OC42MDgzMzgzNTQzNywgCjEzMjguNTQ1Njk5NDI2MDYsIDE1ODkuNTA3ODM3ODc2ODksIDEzNzMuMTYyOTU4NTA1OTEsIDE1MDMuNTU2Mjc4Mzg1NjcsIAoxNjU5LjkzNzU2MzcxNzM0LCAxNzA0LjYxMzY1NzQxNzYsIDE1NTAuNDYzNzgyMTc5ODYsIDE2MjUuODAyNjExNjI3OTQsIAoxODczLjg1ODIzNjMyNjMyLCAxMzcwLjYyMDg2MjgyNTc0LCAxNDM5LjcxMTM1MzM5NTU0LCAxNDQ3LjQzNjkxNjU5MTAyLCAKMTU3OS45MTU3NjM0NTY3OSwgMTY4MS4yNTcxMTM1OTAzLCAxNjYxLjYwNTg5OTc4MzkyLCAxMzExLjg0Njg0MTU4NDQyLCAKMTMyNi4wMzA4NDIxODQ2MSwgMTMyMy4wOTk1MTE4OTgxMywgMTU1MC40ODYzMTc1NTY1NywgMTYwNi4yMDQyMDQ5MDQwMywgCjE3NjguNTQwMTQ2Mjc1MDgsIDE1MDkuODM2Nzk2NjU3NiwgMTU5Mi4xMDg2MTg5Mjk0NCwgMTYyNy42MTg3NTgwNjg1NiwgCjE1NDQuNjMyODk4MDM5OTcsIDE0MzkuNTIzNDMxNDU2MzMsIDE2ODIuMzUxNzczODA3NDUsIDE4NTAuNzA5NzA4MDgxODYsIAoxNjczLjM4MDA5MjcxNjQ0LCAxODMyLjQyNzE2MTY3MzE0LCAxNjcyLjI2NzE3NTk0NTkyLCAxNzgxLjU3NjgzMDIwNTE5LCAKMTY1OS4yODk4NTAwMTQ0MiwgMTk3MC4wMzg4NjIwMTQwNiwgMjA0NC43MTIzNjc2NTg3LCAxOTI5LjA5MDE5OTUzNTQxLCAKMTg5MS43MDQyMjI4OTU2LCAxNDg3LjE1Nzc0MDY1OTU2LCAyMDEzLjg3MjE3NTI2OTUsIDE3OTYuNzg4NjMzMDc0MDEsIAoxOTc3LjAxODI1ODQzOTE4LCAxNTE2Ljk1NTIxMTUxNTkxLCAxNjUwLjYwMzkxNjQ0MDQsIDE1MjMuMjgzMzk0MDQ1NjIsIAoxNjk2LjYxODEwNjUwMTIsIDE2MjcuMjYwODc2MDkyNzksIDE3ODcuMjk2ODMyNzg4MjUsIDE1NjcuMjg3MzU0MjA2NzYsIAoxODgxLjk5NjI3MjU0MjY3LCAyMzE4Ljk4MzI3NDkwNjgxLCAxOTQxLjk4Nzg2MTgwNTQ4LCAxODIwLjI3OTcyOTc2OTY5LCAKMjE1NC44MTIyOTE0NTY5MiwgMjI2MS41NDcwNjU2MDgzMywgMjA1Mi4yMjEzOTYwMTM2NSwgMjA3OS4xNzEwNDQ3OTE4NiwgCjIwMTAuMDYwODY2MzkyNTksIDIxNDUuMjYwNTk4ODY2ODcsIDE3NzUuMzAwODAxMjc2MzEsIDIwMTMuNDA3MDQ5NDc3MDEKKSkKYGBgCmBgYHtyfQpwbG90KHJhcGlkX2dyb3d0aCkKYGBgCmBgYHtyfQojIExvZyByYXBpZF9ncm93dGgKbGluZWFyX2dyb3d0aCA8LSBsb2cocmFwaWRfZ3Jvd3RoKQogIAojIFBsb3QgbGluZWFyX2dyb3d0aCB1c2luZyB0cy5wbG90KCkKIHRzLnBsb3QobGluZWFyX2dyb3d0aCkKYGBgCkFzIHlvdSBjYW4gc2VlLCB0aGUgbG9nYXJpdGhtaWMgdHJhbnNmb3JtYXRpb24gaGVscHMgc3RhYmlsaXplIHlvdXIgZGF0YSBieSBpbmR1Y2luZyBsaW5lYXIgZ3Jvd3RoIG92ZXIgdGltZS4gUmVtZW1iZXIgdG8gYWRqdXN0IHlvdXIgaW50ZXJwZXRhdGlvbiBvZiB0aGUgZGF0YSBhY2NvcmRpbmdseS4KCiMjIyBSZW1vdmluZyB0cmVuZHMgaW4gbGV2ZWwgYnkgZGlmZmVyZW5jaW5nCgpUaGUgZmlyc3QgZGlmZmVyZW5jZSB0cmFuc2Zvcm1hdGlvbiBvZiBhIHRpbWUgc2VyaWVzICR6W3RdJCBjb25zaXN0cyBvZiB0aGUgZGlmZmVyZW5jZXMgKGNoYW5nZXMpIGJldHdlZW4gc3VjY2Vzc2l2ZSBvYnNlcnZhdGlvbnMgb3ZlciB0aW1lLCB0aGF0IGlzICR6W3Rd4oiSelt04oiSMV0kLgoKRGlmZmVyZW5jaW5nIGEgdGltZSBzZXJpZXMgY2FuIHJlbW92ZSBhIHRpbWUgdHJlbmQuIFRoZSBmdW5jdGlvbiBkaWZmKCkgd2lsbCBjYWxjdWxhdGUgdGhlIGZpcnN0IGRpZmZlcmVuY2Ugb3IgY2hhbmdlIHNlcmllcy4gQSBkaWZmZXJlbmNlIHNlcmllcyBsZXRzIHlvdSBleGFtaW5lIHRoZSBpbmNyZW1lbnRzIG9yIGNoYW5nZXMgaW4gYSBnaXZlbiB0aW1lIHNlcmllcy4gSXQgYWx3YXlzIGhhcyBvbmUgZmV3ZXIgb2JzZXJ2YXRpb25zIHRoYW4gdGhlIG9yaWdpbmFsIHNlcmllcy4KCmBgYHtyfQojIEdlbmVyYXRlIHRoZSBmaXJzdCBkaWZmZXJlbmNlIG9mIHoKZHogPC0gZGlmZihyYXBpZF9ncm93dGgpCiAgCiMgUGxvdCBkegp0cy5wbG90KGR6KQoKIyBWaWV3IHRoZSBsZW5ndGggb2YgeiBhbmQgZHosIHJlc3BlY3RpdmVseQpsZW5ndGgocmFwaWRfZ3Jvd3RoKQpsZW5ndGgoZHopCmBgYAogQnkgcmVtb3ZpbmcgdGhlIGxvbmctdGVybSB0aW1lIHRyZW5kLCB5b3UgY2FuIHZpZXcgdGhlIGFtb3VudCBvZiBjaGFuZ2UgZnJvbSBvbmUgb2JzZXJ2YXRpb24gdG8gdGhlIG5leHQuCgojIyMgUmVtb3Zpbmcgc2Vhc29uYWwgdHJlbmRzIHdpdGggc2Vhc29uYWwgZGlmZmVyZW5jaW5nCgpGb3IgdGltZSBzZXJpZXMgZXhoaWJpdGluZyBzZWFzb25hbCB0cmVuZHMsIHNlYXNvbmFsIGRpZmZlcmVuY2luZyBjYW4gYmUgYXBwbGllZCB0byByZW1vdmUgdGhlc2UgcGVyaW9kaWMgcGF0dGVybnMuIEZvciBleGFtcGxlLCBtb250aGx5IGRhdGEgbWF5IGV4aGliaXQgYSBzdHJvbmcgdHdlbHZlIG1vbnRoIHBhdHRlcm4uIEluIHN1Y2ggc2l0dWF0aW9ucywgY2hhbmdlcyBpbiBiZWhhdmlvciBmcm9tIHllYXIgdG8geWVhciBtYXkgYmUgb2YgbW9yZSBpbnRlcmVzdCB0aGFuIGNoYW5nZXMgZnJvbSBtb250aCB0byBtb250aCwgd2hpY2ggbWF5IGxhcmdlbHkgZm9sbG93IHRoZSBvdmVyYWxsIHNlYXNvbmFsIHBhdHRlcm4uCgpUaGUgZnVuY3Rpb24gZGlmZiguLi4sIGxhZyA9IHMpIHdpbGwgY2FsY3VsYXRlIHRoZSBsYWcgcyBkaWZmZXJlbmNlIG9yIGxlbmd0aCBzIHNlYXNvbmFsIGNoYW5nZSBzZXJpZXMuIEZvciBtb250aGx5IG9yIHF1YXJ0ZXJseSBkYXRhLCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBvZiBzIHdvdWxkIGJlIDEyIG9yIDQsIHJlc3BlY3RpdmVseS4gVGhlIGRpZmYoKSBmdW5jdGlvbiBoYXMgbGFnID0gMSBhcyBpdHMgZGVmYXVsdCBmb3IgZmlyc3QgZGlmZmVyZW5jaW5nLiBTaW1pbGFyIHRvIGJlZm9yZSwgYSBzZWFzb25hbGx5IGRpZmZlcmVuY2VkIHNlcmllcyB3aWxsIGhhdmUgcyBmZXdlciBvYnNlcnZhdGlvbnMgdGhhbiB0aGUgb3JpZ2luYWwgc2VyaWVzLgpgYGB7ciBpbmNsdWRlPUZBTFNFfQp4IDwtIHRzKGMoLTQuMTk4MDMzMzU5NzM4MjIsIDkuNTY5MDA5MDUwNTA3NDcsIDUuMTc1MTQzMzg5MDY2MjIsIC05LjY5MTY0NjM2MTg0MTE5LCAKLTMuMjE1MjkzNTc0NzY1NTIsIDEwLjg0MzY2OTMwNjI1NTksIDYuNDUyMTU4NjU3MDgxODgsIC0xMC44MzM1NTkwNzMxNDQxLCAKLTIuMjM1MzUwNzM1MTQ1NjYsIDEwLjExOTgzMjk2Mjk0NywgNi41Nzk2NDU3MzUyODU0NSwgLTguNjU2NTY0NzMyMjYxNDgsIAotMi41MTUwMDEzODg0NzQwNiwgOS44Mzc0MzQxNjc5NzI0MywgNy4zODYxOTQzMjcyNjA0NiwgLTguMjQzNTAzNTU2MzEzNDIsIAotNC4yNjQwMzI1NzA3MjQzOCwgOC44OTg4NjE0MzAwODcyNywgOC41NDQzMzU4MTU1NjI1NCwgLTguMDY2OTEyODQxMDcwNTMsIAotNC4wMjMwMjUzMDU2NjUzNiwgOS44MjI2Nzg1NjQ1NDQ4NCwgNy43NzI4NTIzODYwOTcwNywgLTYuNTg3Nzc2ODY4MDc2NzUsIAotMy40NTkxNzExMjAwNjYzMywgMTAuNjEzODUwNTAxNjczMywgNy4zNzQ0NTA0NzM4MjkwNCwgLTUuNzk4NzE0NTA1MjIyMDEsIAotMS4yMDQ3MTA1NTgyNjU1OCwgMTEuNDI5MjM1ODg0NTUxNSwgNy41NzAwNDY5NDg3MzYzNCwgLTQuOTY4MzgzNzU5Nzc0MTUsIAotMi4wMDM3ODY1OTY2ODgwNSwgMTEuOTQxMzQ4Mjk4MjA3OCwgOS40MDY2NzIxMDI2NTI4OSwgLTQuMzk2NTg0ODI0MjU0OTIsIAotMS41NTU1Nzg4OTI3MzI1OSwgMTIuNTk5ODc3MTI4OTYyMywgOC41MDI5MTYzNzg0NTg4OSwgLTMuNzI4OTY4MjY3MTA2MDYsIAotMi44MjcwMDAwMDkyMTY5MSwgMTMuMzc1OTgxMjg2Nzk0MiwgOC4xMjg5NDExNDc0OTMyMSwgLTMuMTQ5MjQ5MDc3NzA0MDYsIAotMi43OTk0NzI3MjMzNDM5NiwgMTMuNzEwNTcwMTIyNjc5NSwgNi43NTUyMTY4ODE1NjcyNSwgLTMuNzc5NzQ0MTc3ODc2NDksIAotMy43NjgyNzM5NDA4NDYxNywgMTMuNjI1MzM1ODU2MDU5MywgNi41Mzc5MzA1NjM0OTg5MiwgLTMuMjQ5MDk4MzQyNjU2NzcsIAotNS4wMjQxOTEwMjgyNjMzNCwgMTMuMzU1MzczMTMzNzk5NywgNi45MzExNjA4MDY0MTMzNSwgLTMuNTI3MzUzNTAzNjI5OTMsIAotNS4xOTczMjg5Njg3ODA1OCwgMTEuNTc5NzkxMzIzMzM5MywgNy4xNjI0NDg1NzI0NzQxMiwgLTEuODk0NjA2ODE2NDM4NzksIAotNS43Nzc3OTcwMDY5MDA0OCwgMTIuNDgyNjk1Mjg4NDE3OCwgNi4yMDgwODg0MTI3NzkzOCwgLTMuNDM0MDM3OTcwNDM4MTYsIAotNy4wODA3MjEwMDk2ODE1OSwgMTEuNDEzNjU1Nzc0NjYzMywgNi43NDE5OTAxMzY2Nzc5OSwgLTMuNTMyMzc1ODY0MjMxMzcsIAotOC4zOTM1NDIzMDA1OTkzMiwgMTIuNTA3MjYxMTI4NjI5NywgNi40NzMxNzU0NzE2NDI0MywgLTMuNzQ1MjQ2MTgxOTc0NzMsIAotOS40MjYyMDg3MDgyMzc5MywgMTIuMzgwODE3MDQ1Nzg5NywgOC4wNDgyNDI3MjIwNDkxNywgLTIuODMxNTI3NzQzODE2NTYsIAotNy4zMDE4OTI4NTg4MDc4NywgMTIuNzY1ODM4MzA2MTAwNCwgOC4yMjM2OTg1MDYyOTc4NiwgLTQuNDQ4MTMwNjc5ODcxNDQsIAotNi45NjM1NTc1OTYwMjQ5NywgMTIuMDM0MDA0OTg2MjkxOCwgNy41NzQ5MjQ3MDk2NDE3NiwgLTUuNDAyMjE4MTg1OTMyNTQsIAotNi41NjgxOTgxNDQ4MDY2MiwgMTAuODk2NDgxNTA2MTYwOCwgNy4yNzY1NzA1Nzk3MzA0MiwgLTQuMDM3ODczMzc5MDIyMDksIAotNi43MjMwMTMyODM5NzUwMiwgMTIuMTgwODE0OTY5MjAzNSwgOC4yODUxNjIxMzgzMjA2NSwgLTQuMTU5MzQyNDc5NjYzNjksIAotNi4zNjA2NzA0NDY0NjA3NSwgMTIuNzUzMDE3NzY0OTQ1NywgOC42NjU5MTE2NTE3ODI1NSwgLTUuNDQwNTM3ODQwMzI2MDcsIAotNC44NzQ5MzE3MDUzNzE4MywgMTIuNjAwMTk3NDA0MTAxMSwgOC4xNjI1ODkyMDU5NDE5NywgLTYuNTM5NTcxNjcyMjk2MjEKKSkKYGBgCmBgYHtyfQp0cy5wbG90KHgpCmBgYApgYGB7cn0KIyBHZW5lcmF0ZSBhIGRpZmYgb2YgeCB3aXRoIGxhZyA9IDQuIFNhdmUgdGhpcyB0byBkeApkeCA8LSBkaWZmKHgsIGxhZyA9IDQpCiAgCiMgUGxvdCBkeAp0cy5wbG90KGR4KQoKIyBWaWV3IHRoZSBsZW5ndGggb2YgeCBhbmQgZHgsIHJlc3BlY3RpdmVseSAKbGVuZ3RoKHgpCmxlbmd0aChkeCkKYGBgCk9uY2UgYWdhaW4gZGlmZmVyZW5jaW5nIGFsbG93cyB5b3UgdG8gcmVtb3ZlIHRoZSBsb25nZXItdGVybSB0aW1lIHRyZW5kIC0gaW4gdGhpcyBjYXNlLCBzZWFzb25hbCB2b2xhdGlsaXR5IC0gYW5kIGZvY3VzIG9uIHRoZSBjaGFuZ2UgZnJvbSBvbmUgcGVyaW9kIHRvIGFub3RoZXIuCgojIyBUaGUgd2hpdGUgbm9pc2UgKFdOKSBtb2RlbAoKIyMjIFNpbXVsYXRlIHRoZSB3aGl0ZSBub2lzZSBtb2RlbAoKVGhlIHdoaXRlIG5vaXNlIChXTikgbW9kZWwgaXMgYSBiYXNpYyB0aW1lIHNlcmllcyBtb2RlbC4gSXQgaXMgYWxzbyBhIGJhc2lzIGZvciB0aGUgbW9yZSBlbGFib3JhdGUgbW9kZWxzIHdlIHdpbGwgY29uc2lkZXIuIFdlIHdpbGwgZm9jdXMgb24gdGhlIHNpbXBsZXN0IGZvcm0gb2YgV04sIGluZGVwZW5kZW50IGFuZCBpZGVudGljYWxseSBkaXN0cmlidXRlZCBkYXRhLgoKVGhlIGFyaW1hLnNpbSgpIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNpbXVsYXRlIGRhdGEgZnJvbSBhIHZhcmlldHkgb2YgdGltZSBzZXJpZXMgbW9kZWxzLiBBUklNQSBpcyBhbiBhYmJyZXZpYXRpb24gZm9yIHRoZSBhdXRvcmVncmVzc2l2ZSBpbnRlZ3JhdGVkIG1vdmluZyBhdmVyYWdlIGNsYXNzIG9mIG1vZGVscyB3ZSB3aWxsIGNvbnNpZGVyIHRocm91Z2hvdXQgdGhpcyBjb3Vyc2UuCgpBbiBBUklNQShwLCBkLCBxKSBtb2RlbCBoYXMgdGhyZWUgcGFydHMsIHRoZSBhdXRvcmVncmVzc2l2ZSBvcmRlciBwLCB0aGUgb3JkZXIgb2YgaW50ZWdyYXRpb24gKG9yIGRpZmZlcmVuY2luZykgZCwgYW5kIHRoZSBtb3ZpbmcgYXZlcmFnZSBvcmRlciBxLiBXZSB3aWxsIGRldGFpbCBlYWNoIG9mIHRoZXNlIHBhcnRzIHNvb24sIGJ1dCBmb3Igbm93IHdlIG5vdGUgdGhhdCB0aGUgQVJJTUEoMCwgMCwgMCkgbW9kZWwsIGkuZS4sIHdpdGggYWxsIG9mIHRoZXNlIGNvbXBvbmVudHMgemVybywgaXMgc2ltcGx5IHRoZSBXTiBtb2RlbC4KCmBgYHtyfQojIFNpbXVsYXRlIGEgV04gbW9kZWwgd2l0aCBsaXN0KG9yZGVyID0gYygwLCAwLCAwKSkKd2hpdGVfbm9pc2UgPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChvcmRlciA9IGMoMCwgMCwgMCkpLCBuID0gMTAwKQoKIyBQbG90IHlvdXIgd2hpdGVfbm9pc2UgZGF0YQp0cy5wbG90KHdoaXRlX25vaXNlKQoKIyBTaW11bGF0ZSBmcm9tIHRoZSBXTiBtb2RlbCB3aXRoOiBtZWFuID0gMTAwLCBzZCA9IDEwCndoaXRlX25vaXNlXzIgPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChvcmRlciA9IGMoMCwgMCwgMCkpLCBuID0gMTAwLCBtZWFuID0gMTAwLCBzZCA9IDEwKQoKIyBQbG90IHlvdXIgd2hpdGVfbm9pc2VfMiBkYXRhCnRzLnBsb3Qod2hpdGVfbm9pc2VfMikKYGBgClRoZSBhcmltYS5zaW0oKSBjb21tYW5kIGlzIGEgdXNlZnVsIHdheSB0byBxdWlja2x5IHNpbXVsYXRlIHRpbWUgc2VyaWVzIGRhdGEgd2l0aCB0aGUgcXVhbGl0aWVzIHlvdSBzcGVjaWZ5LgoKIyMjIEVzdGltYXRlIHRoZSB3aGl0ZSBub2lzZSBtb2RlbAoKRm9yIGEgZ2l2ZW4gdGltZSBzZXJpZXMgeSB3ZSBjYW4gZml0IHRoZSB3aGl0ZSBub2lzZSAoV04pIG1vZGVsIHVzaW5nIHRoZSBhcmltYSguLi4sIG9yZGVyID0gYygwLCAwLCAwKSkgZnVuY3Rpb24uIFJlY2FsbCB0aGF0IHRoZSBXTiBtb2RlbCBpcyBhbiBBUklNQSgwLDAsMCkgbW9kZWwuIEFwcGx5aW5nIHRoZSBhcmltYSgpIGZ1bmN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gb3Igb3V0cHV0IGFib3V0IHRoZSBlc3RpbWF0ZWQgbW9kZWwuIEZvciB0aGUgV04gbW9kZWwgdGhpcyBpbmNsdWRlcyB0aGUgZXN0aW1hdGVkIG1lYW4sIGxhYmVsZWQgaW50ZXJjZXB0LCBhbmQgdGhlIGVzdGltYXRlZCB2YXJpYW5jZSwgbGFiZWxlZCBzaWdtYV4yLgoKSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIGV4cGxvcmUgdGhlIHF1YWxpdGllcyBvZiB0aGUgV04gbW9kZWwuIFdoYXQgaXMgdGhlIGVzdGltYXRlZCBtZWFuPyBDb21wYXJlIHRoaXMgd2l0aCB0aGUgc2FtcGxlIG1lYW4gdXNpbmcgdGhlIG1lYW4oKSBmdW5jdGlvbi4gV2hhdCBpcyB0aGUgZXN0aW1hdGVkIHZhcmlhbmNlPyBDb21wYXJlIHRoaXMgd2l0aCB0aGUgc2FtcGxlIHZhcmlhbmNlIHVzaW5nIHRoZSB2YXIoKSBmdW5jdGlvbi4KClRoZSB0aW1lIHNlcmllcyB5IGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLCBhbmQgaXMgc2hvd24gaW4gdGhlIGFkam9pbmluZyBmaWd1cmUuCmBgYHtyIGluY2x1ZGU9RkFMU0V9CnkgPC0gdHMoYygxMDkuNzYxMzM1MjAzODA3LCA5OC4zMTYxMDE1NjYxODIzLCAxMDAuNjMyOTQ2OTE1NjgsIAo4OC43NDMzOTg3MTI3NTkzLCAxMDEuODcyMzc3MDE2OTYxLCAxMDQuNjI4MzU3MzA4MDIyLCA5Ni42NDQ2MTg1Njc3NDk5LCAKMTAyLjg2MTkzNTUzNzc0MSwgMTEyLjc2MjQ3MjA5NTA3MSwgODIuMjMyMTg5NTYwNDQwNSwgODguOTQ0MzQyNTE2MjQ2NSwgCjk0LjYwMzE4NDk1OTA2NiwgMTA1LjYxMTEzNDI4MzYzOCwgMTEzLjgyNzc1OTg4OTYxMiwgMTA0LjgyMzE4Njc5OTIxMSwgCjEwMS4yOTYyODc2MDUyMDksIDgyLjk4NDU4ODM0OTk5MDIsIDg4Ljk2MDU4Mzk4MTU4MTksIDEwMC42MDA0NTY2MDc5OTYsIAo5MS4wMzUyNDkyNTY1NjMsIDEwMC4xOTI4NTk0MDQyLCA5NS4zMjUzNzI3MjQxMDc3LCA5NC41ODY0MzE1NTEwNTIzLCAKMTIxLjM1ODI5NTkxODM0OSwgODcuMzc4NzM4Mjk5MTQ4MSwgOTYuODkwMDY1MjU2MTU5MSwgOTAuNTEzMDk3NDUxODYwMSwgCjk5LjkwODQyOTIyMjEyNzEsIDEwMi41NjkzNDE3NzAzMTcsIDEwNC45NjE0NDA2MjM2NTIsIDEwNC43MzQ2MzU0NzQ5MDUsIAo4OC4wMDQ2NDUwNTQ5Mjk5LCAxMDAuNzc5NDMyNzYxODkxLCAxMjEuNjQ3NzY0MTMzODQzLCA4NS43NzA4MzE5MTQ2NDY0LCAKNzkuMTU0MjgxNzc1MTQ2MSwgOTguMTg4NDY5ODc3MDAyOSwgOTkuOTAwMDU3NTkxODQxMiwgOTguOTEwODQwODg1NDAwMywgCjEwMS42NDQyMjQ3ODE1NDEsIDEwMi43OTUyNjI3ODYyMzEsIDg0LjY1MTExNTMyODc2MjcsIDk2LjQ3ODY5NTg3OTYyMywgCjEwNS44MTU0NzExMDI3NzEsIDk4LjUxODY4NzMwNzA3OTEsIDEwNS4yNDM2NjIxODkzNSwgMTA5LjYxMjY0MjA4NjgwOSwgCjg1LjE0MjAxMzA2MTgxNTMsIDgyLjgxNDQxNzQyNTE4NTcsIDEwMy4wMzYyOTE0MzY0ODMsIDkzLjU2OTY3MzU0NjU3MjQsIAo5OC4wODkyMjIzOTQ0Nzk0LCA4MS4yNTQ2MDYxNzk1NTg4LCAxMDkuMTg1NTM4MjkzNzUzLCA4MC40MzE4MDkwNjA0NDgyLCAKMTAzLjU1OTUzMjM5OTQzNSwgODAuMjIyNjg1NTUwMTI4NiwgODQuOTc0NzY1NDcwNzAzNywgMTA3Ljc4MzYyOTgwMzM4MywgCjkyLjYxMjg3NTgxNTY0NywgOTkuODAyOTM0NDA1OTUxOSwgMTA3LjI1MDg0OTYzNzg2NiwgOTguNjYzNzg0NzYxMTgzNiwgCjkxLjkyMjc0NTMxNTQ5OTMsIDk4LjMyNjQxODAyMTgyODIsIDExMi43MzQwMTc2NTk3MTgsIDk2LjAyODEwNjc5MjQ1ODgsIAo5Mi42NDkwOTA4ODUzMTA1LCA4My4wODQ4NDM5MTAyOTc1LCA5Ny4yMjE5NjQ4NTQyODAxLCAxMDYuNjEzNjEyNzU2Njg3LCAKOTcuMzY5NDI4NzA0MjQ3OCwgMTA4Ljc4NDY1NDQ0MjIwNywgMTA0LjkxODU4NDI1MzcyMywgODQuNDQzNDI5NzQ3NTIxOSwgCjg1LjYwNzg2MDk5OTgyNzYsIDk2LjUxNTI5MDU2MDY4NTIsIDk0LjE4MTA1MjgwMTQ5NTMsIDg1LjAyODUxMjg4MjkxNjIsIAo2My4yNjYyMTc1MTM2MTQ2LCA4Ny4yMjEzNjczMTQ0MzIyLCAxMDMuNTIyOTU0Mjk1MTY3LCAxMDUuNjAyMTU1NTQyNDMyLCAKMTAzLjI2MDM5MTUyNzM5MiwgMTAxLjExNTE5MjU0OTQxNywgMTA4LjQ1Njk2NTY3NTg4OSwgOTcuNjc2MzE0MzQxMzIzLCAKMTAzLjAxMDgwODI3NDkzMSwgMTAwLjYxNzU1NTUxMDE0MSwgMTA1LjU4MTA3NzI5ODMwMywgOTguNzI3MjI0MTE4MDQ2NSwgCjk4LjQzOTk1NjM1OTUwODksIDkwLjc4MjE5MTAzNDQ5MjksIDkyLjc0NTk5MjMyNTg4MjUsIDEwMi45Mzc2MjQzOTM4MjYsIAo4My45NTMwNTkxNjQwNjg5LCAxMTAuMTU5MzY2MjM0OTMxLCAxMDQuMTc1NzgxNjk5MzA5LCA5OS4yNzg3NTUwNTI4NTc4LCAKMTAzLjI1MTE0ODgyMzkxNykpCmBgYApgYGB7cn0KdHMucGxvdCh5KQpgYGAKYGBge3J9CiMgRml0IHRoZSBXTiBtb2RlbCB0byB5IHVzaW5nIHRoZSBhcmltYSBjb21tYW5kCmFyaW1hKHksIG9yZGVyID0gYygwLCAwLCAwKSkKCiMgQ2FsY3VsYXRlIHRoZSBzYW1wbGUgbWVhbiBhbmQgc2FtcGxlIHZhcmlhbmNlIG9mIHkKbWVhbih5KQp2YXIoeSkKYGBgCkZyb20gdGhlIGNvbXBhcmlzb25zIHlvdSBjYW4gc2VlIHRoYXQgdGhlIGFyaW1hKCkgZnVuY3Rpb24gZXN0aW1hdGVzIGFyZSB2ZXJ5IGNsb3NlIHRvIHRoZSBzYW1wbGUgbWVhbiBhbmQgdmFyaWFuY2UgZXN0aW1hdGVzLCBpbiBmYWN0IGlkZW50aWNhbCBmb3IgdGhlIG1lYW4uCgojIyBUaGUgcmFuZG9tIHdhbGsgKFJXKSBtb2RlbAoKIyMjIFNpbXVsYXRlIHRoZSByYW5kb20gd2FsayBtb2RlbAoKVGhlIHJhbmRvbSB3YWxrIChSVykgbW9kZWwgaXMgYWxzbyBhIGJhc2ljIHRpbWUgc2VyaWVzIG1vZGVsLiBJdCBpcyB0aGUgY3VtdWxhdGl2ZSBzdW0gKG9yIGludGVncmF0aW9uKSBvZiBhIG1lYW4gemVybyB3aGl0ZSBub2lzZSAoV04pIHNlcmllcywgc3VjaCB0aGF0IHRoZSBmaXJzdCBkaWZmZXJlbmNlIHNlcmllcyBvZiBhIFJXIGlzIGEgV04gc2VyaWVzLiBOb3RlIGZvciByZWZlcmVuY2UgdGhhdCB0aGUgUlcgbW9kZWwgaXMgYW4gQVJJTUEoMCwgMSwgMCkgbW9kZWwsIGluIHdoaWNoIHRoZSBtaWRkbGUgZW50cnkgb2YgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgbW9kZWwncyBvcmRlciBvZiBpbnRlZ3JhdGlvbiBpcyAxLgoKVGhlIGFyaW1hLnNpbSgpIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNpbXVsYXRlIGRhdGEgZnJvbSB0aGUgUlcgYnkgaW5jbHVkaW5nIHRoZSBtb2RlbCA9IGxpc3Qob3JkZXIgPSBjKDAsIDEsIDApKSBhcmd1bWVudC4gV2UgYWxzbyBuZWVkIHRvIHNwZWNpZnkgYSBzZXJpZXMgbGVuZ3RoIG4uIEZpbmFsbHksIHlvdSBjYW4gc3BlY2lmeSBhIHNkIGZvciB0aGUgc2VyaWVzIChpbmNyZW1lbnRzKSwgd2hlcmUgdGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4KCmBgYHtyfQojIEdlbmVyYXRlIGEgUlcgbW9kZWwgdXNpbmcgYXJpbWEuc2ltCnJhbmRvbV93YWxrIDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3Qob3JkZXIgPSBjKDAsIDEsIDApKSwgbiA9IDEwMCkKCiMgUGxvdCByYW5kb21fd2Fsawp0cy5wbG90KHJhbmRvbV93YWxrKQoKIyBDYWxjdWxhdGUgdGhlIGZpcnN0IGRpZmZlcmVuY2Ugc2VyaWVzCnJhbmRvbV93YWxrX2RpZmYgPC0gZGlmZihyYW5kb21fd2FsaykKCiMgUGxvdCByYW5kb21fd2Fsa19kaWZmCnRzLnBsb3QocmFuZG9tX3dhbGtfZGlmZikKYGBgCkFzIHlvdSBjYW4gc2VlLCB0aGUgZmlyc3QgZGlmZmVyZW5jZSBvZiB5b3VyIHJhbmRvbV93YWxrIGRhdGEgaXMgd2hpdGUgbm9pc2UgZGF0YS4gVGhpcyBpcyBiZWNhdXNlIGEgcmFuZG9tIHdhbGsgaXMgc2ltcGx5IHJlY3Vyc2l2ZSB3aGl0ZSBub2lzZSBkYXRhLiBCeSByZW1vdmluZyB0aGUgbG9uZy10ZXJtIHRyZW5kLCB5b3UgZW5kIHVwIHdpdGggc2ltcGxlIHdoaXRlIG5vaXNlLgoKIyMjIFNpbXVsYXRlIHRoZSByYW5kb20gd2FsayBtb2RlbCB3aXRoIGEgZHJpZnQKCkEgcmFuZG9tIHdhbGsgKFJXKSBuZWVkIG5vdCB3YW5kZXIgYWJvdXQgemVybywgaXQgY2FuIGhhdmUgYW4gdXB3YXJkIG9yIGRvd253YXJkIHRyYWplY3RvcnksIGkuZS4sIGEgZHJpZnQgb3IgdGltZSB0cmVuZC4gVGhpcyBpcyBkb25lIGJ5IGluY2x1ZGluZyBhbiBpbnRlcmNlcHQgaW4gdGhlIFJXIG1vZGVsLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgc2xvcGUgb2YgdGhlIFJXIHRpbWUgdHJlbmQuCgpGb3IgYW4gYWx0ZXJuYXRpdmUgZm9ybXVsYXRpb24sIHlvdSBjYW4gdGFrZSB0aGUgY3VtdWxhdGl2ZSBzdW0gb2YgYSBjb25zdGFudCBtZWFuIHdoaXRlIG5vaXNlIChXTikgc2VyaWVzLCBzdWNoIHRoYXQgdGhlIG1lYW4gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3BlIG9mIHRoZSBSVyB0aW1lIHRyZW5kLgoKVG8gc2ltdWxhdGUgZGF0YSBmcm9tIHRoZSBSVyBtb2RlbCB3aXRoIGEgZHJpZnQgeW91IGFnYWluIHVzZSB0aGUgYXJpbWEuc2ltKCkgZnVuY3Rpb24gd2l0aCB0aGUgbW9kZWwgPSBsaXN0KG9yZGVyID0gYygwLCAxLCAwKSkgYXJndW1lbnQuIFRoaXMgdGltZSwgeW91IHNob3VsZCBhZGQgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnQgbWVhbiA9IC4uLiB0byBzcGVjaWZ5IHRoZSBkcmlmdCB2YXJpYWJsZSwgb3IgdGhlIGludGVyY2VwdC4KYGBge3J9CiMgR2VuZXJhdGUgYSBSVyBtb2RlbCB3aXRoIGEgZHJpZnQgdWluZyBhcmltYS5zaW0KcndfZHJpZnQgPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChvcmRlciA9IGMoMCwgMSwgMCkpLCBuID0gMTAwLCBtZWFuID0gMSkKCiMgUGxvdCByd19kcmlmdAp0cy5wbG90KHJ3X2RyaWZ0KQoKIyBDYWxjdWxhdGUgdGhlIGZpcnN0IGRpZmZlcmVuY2Ugc2VyaWVzCnJ3X2RyaWZ0X2RpZmYgPC0gZGlmZihyd19kcmlmdCkKCiMgUGxvdCByd19kcmlmdF9kaWZmCnRzLnBsb3QocndfZHJpZnRfZGlmZikKYGBgCk9uY2UgYWdhaW4sIHRha2luZyB0aGUgZmlyc3QgZGlmZmVyZW5jZSBvZiB5b3VyIHJhbmRvbSB3YWxrIGRhdGEgdHJhbnNmb3JtZWQgaXQgYmFjayBpbnRvIHdoaXRlIG5vaXNlIGRhdGEsIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZXNlbmNlIG9mIHlvdXIgbG9uZy10ZXJtIGRyaWZ0LgoKIyMjIEVzdGltYXRlIHRoZSByYW5kb20gd2FsayBtb2RlbAoKRm9yIGEgZ2l2ZW4gdGltZSBzZXJpZXMgeSB3ZSBjYW4gZml0IHRoZSByYW5kb20gd2FsayBtb2RlbCB3aXRoIGEgZHJpZnQgYnkgZmlyc3QgZGlmZmVyZW5jaW5nIHRoZSBkYXRhLCB0aGVuIGZpdHRpbmcgdGhlIHdoaXRlIG5vaXNlIChXTikgbW9kZWwgdG8gdGhlIGRpZmZlcmVuY2VkIGRhdGEgdXNpbmcgdGhlIGFyaW1hKCkgY29tbWFuZCB3aXRoIHRoZSBvcmRlciA9IGMoMCwgMCwgMCkpIGFyZ3VtZW50LgoKVGhlIGFyaW1hKCkgY29tbWFuZCBkaXNwbGF5cyBpbmZvcm1hdGlvbiBvciBvdXRwdXQgYWJvdXQgdGhlIGZpdHRlZCBtb2RlbC4gVW5kZXIgdGhlIENvZWZmaWNpZW50czogaGVhZGluZyBpcyB0aGUgZXN0aW1hdGVkIGRyaWZ0IHZhcmlhYmxlLCBuYW1lZCB0aGUgaW50ZXJjZXB0LiBJdHMgYXBwcm94aW1hdGUgc3RhbmRhcmQgZXJyb3IgKG9yIHMuZS4pIGlzIHByb3ZpZGVkIGRpcmVjdGx5IGJlbG93IGl0LiBUaGUgdmFyaWFuY2Ugb2YgdGhlIFdOIHBhcnQgb2YgdGhlIG1vZGVsIGlzIGFsc28gZXN0aW1hdGVkIHVuZGVyIHRoZSBsYWJlbCBzaWdtYV4yLgoKYGBge3J9CiMgRGlmZmVyZW5jZSB5b3VyIHJhbmRvbV93YWxrIGRhdGEKcndfZGlmZiA8LSBkaWZmKHJ3X2RyaWZ0KQoKIyBQbG90IHJ3X2RpZmYKdHMucGxvdChyd19kaWZmKQoKIyBOb3cgZml0IHRoZSBXTiBtb2RlbCB0byB0aGUgZGlmZmVyZW5jZWQgZGF0YQptb2RlbF93biA8LSBhcmltYShyd19kaWZmLCBvcmRlciA9IGMoMCwgMCwgMCkpCgojIFN0b3JlIHRoZSB2YWx1ZSBvZiB0aGUgZXN0aW1hdGVkIHRpbWUgdHJlbmQgKGludGVyY2VwdCkKaW50X3duIDwtIG1vZGVsX3duJGNvZWYKCiMgUGxvdCB0aGUgb3JpZ2luYWwgcmFuZG9tX3dhbGsgZGF0YQp0cy5wbG90KHJ3X2RyaWZ0KQoKIyBVc2UgYWJsaW5lKDAsIC4uLikgdG8gYWRkIHRpbWUgdHJlbmQgdG8gdGhlIGZpZ3VyZQphYmxpbmUoMCwgaW50X3duKQoKYGBgClRoZSBhcmltYSgpIGNvbW1hbmQgY29ycmVjdGx5IGlkZW50aWZpZWQgdGhlIHRpbWUgdHJlbmQgaW4geW91ciBvcmlnaW5hbCByYW5kb20td2FsayBkYXRhLgoKIyMgU3RhdGlvbmFyeSBwcm9jZXNzZXMKCiMjIyBBcmUgdGhlIHdoaXRlIG5vaXNlIG1vZGVsIG9yIHRoZSByYW5kb20gd2FsayBtb2RlbCBzdGF0aW9uYXJ5PwoKVGhlIHdoaXRlIG5vaXNlIChXTikgYW5kIHJhbmRvbSB3YWxrIChSVykgbW9kZWxzIGFyZSB2ZXJ5IGNsb3NlbHkgcmVsYXRlZC4gSG93ZXZlciwgb25seSB0aGUgUlcgaXMgYWx3YXlzIG5vbi1zdGF0aW9uYXJ5LCBib3RoIHdpdGggYW5kIHdpdGhvdXQgYSBkcmlmdCB0ZXJtLiBUaGlzIGlzIGEgc2ltdWxhdGlvbiBleGVyY2lzZSB0byBoaWdobGlnaHQgdGhlIGRpZmZlcmVuY2VzLgoKUmVjYWxsIHRoYXQgaWYgd2Ugc3RhcnQgd2l0aCBhIG1lYW4gemVybyBXTiBwcm9jZXNzIGFuZCBjb21wdXRlIGl0cyBydW5uaW5nIG9yIGN1bXVsYXRpdmUgc3VtLCB0aGUgcmVzdWx0IGlzIGEgUlcgcHJvY2Vzcy4gVGhlIGN1bXN1bSgpIGZ1bmN0aW9uIHdpbGwgbWFrZSB0aGlzIHRyYW5zZm9ybWF0aW9uIGZvciB5b3UuIFNpbWlsYXJseSwgaWYgd2UgY3JlYXRlIGEgV04gcHJvY2VzcywgYnV0IGNoYW5nZSBpdHMgbWVhbiBmcm9tIHplcm8sIGFuZCB0aGVuIGNvbXB1dGUgaXRzIGN1bXVsYXRpdmUgc3VtLCB0aGUgcmVzdWx0IGlzIGEgUlcgcHJvY2VzcyB3aXRoIGEgZHJpZnQuCmBgYHtyfQojIFVzZSBhcmltYS5zaW0oKSB0byBnZW5lcmF0ZSBXTiBkYXRhCndoaXRlX25vaXNlIDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3Qob3JkZXIgPSBjKDAsMCwwKSksIG4gPSAxMDApCgojIFVzZSBjdW1zdW0oKSB0byBjb252ZXJ0IHlvdXIgV04gZGF0YSB0byBSVwpyYW5kb21fd2FsayA8LSBjdW1zdW0od2hpdGVfbm9pc2UpCiAgCiMgVXNlIGFyaW1hLnNpbSgpIHRvIGdlbmVyYXRlIFdOIGRyaWZ0IGRhdGEKd25fZHJpZnQgPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChvcmRlciA9IGMoMCwwLDApKSwgbiA9IDEwMCwgbWVhbiA9IDAuNCkKICAKIyBVc2UgY3Vtc3VtKCkgdG8gY29udmVydCB5b3VyIFdOIGRyaWZ0IGRhdGEgdG8gUlcKcndfZHJpZnQgPC0gY3Vtc3VtKHduX2RyaWZ0KQoKIyBQbG90IGFsbCBmb3VyIGRhdGEgb2JqZWN0cwpwbG90LnRzKGNiaW5kKHdoaXRlX25vaXNlLCByYW5kb21fd2Fsaywgd25fZHJpZnQsIHJ3X2RyaWZ0KSkKYGBgCkFzIHlvdSBjYW4gc2VlLCBpdCBpcyBlYXN5IHRvIHJldmVyc2UtZW5naW5lZXIgdGhlIFJXIGRhdGEgYnkgc2ltcGx5IGdlbmVyYXRpbmcgYSBjdW11bGF0aXZlIHN1bSBvZiB3aGl0ZSBub2lzZSBkYXRhLgoKIyBDb3JyZWxhdGlvbiBhbmFseXNpcyBhbmQgdGhlIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbgoKIyMgU2NhdHRlcnBsb3RzCgojIyMgQXNzZXQgcHJpY2VzIHZzLiBhc3NldCByZXR1cm5zCgpUaGUgZ29hbCBvZiBpbnZlc3RpbmcgaXMgdG8gbWFrZSBhIHByb2ZpdC4gVGhlIHJldmVudWUgb3IgbG9zcyBmcm9tIGludmVzdGluZyBkZXBlbmRzIG9uIHRoZSBhbW91bnQgaW52ZXN0ZWQgYW5kIGNoYW5nZXMgaW4gcHJpY2VzLCBhbmQgaGlnaCByZXZlbnVlIHJlbGF0aXZlIHRvIHRoZSBzaXplIG9mIGFuIGludmVzdG1lbnQgaXMgb2YgY2VudHJhbCBpbnRlcmVzdC4gVGhpcyBpcyB3aGF0IGZpbmFuY2lhbCBhc3NldCByZXR1cm5zIG1lYXN1cmUsIGNoYW5nZXMgaW4gcHJpY2UgYXMgYSBmcmFjdGlvbiBvZiB0aGUgaW5pdGlhbCBwcmljZSBvdmVyIGEgZ2l2ZW4gdGltZSBob3Jpem9uLCBmb3IgZXhhbXBsZSwgb25lIGJ1c2luZXNzIGRheS4KCkxldCdzIGFnYWluIGNvbnNpZGVyIHRoZSBldV9zdG9ja3MgZGF0YXNldC4gVGhpcyBkYXRhc2V0IHJlcG9ydHMgaW5kZXggdmFsdWVzLCB3aGljaCB3ZSBjYW4gcmVnYXJkIGFzIHByaWNlcy4gVGhlIGluZGljZXMgYXJlIG5vdCBpbnZlc3RhYmxlIGFzc2V0cyB0aGVtc2VsdmVzLCBidXQgdGhlcmUgYXJlIG1hbnkgaW52ZXN0YWJsZSBmaW5hbmNpYWwgYXNzZXRzIHRoYXQgY2xvc2VseSB0cmFjayBtYWpvciBtYXJrZXQgaW5kaWNlcywgaW5jbHVkaW5nIG11dHVhbCBmdW5kcyBhbmQgZXhjaGFuZ2UgdHJhZGVkIGZ1bmRzLgoKTG9nIHJldHVybnMsIGFsc28gY2FsbGVkIGNvbnRpbnVvdXNseSBjb21wb3VuZGVkIHJldHVybnMsIGFyZSBhbHNvIGNvbW1vbmx5IHVzZWQgaW4gZmluYW5jaWFsIHRpbWUgc2VyaWVzIGFuYWx5c2lzLiBUaGV5IGFyZSB0aGUgbG9nIG9mIGdyb3NzIHJldHVybnMsIG9yIGVxdWl2YWxlbnRseSwgdGhlIGNoYW5nZXMgKG9yIGZpcnN0IGRpZmZlcmVuY2VzKSBpbiB0aGUgbG9nYXJpdGhtIG9mIHByaWNlcy4KClRoZSBjaGFuZ2UgaW4gYXBwZWFyYW5jZSBiZXR3ZWVuIGRhaWx5IHByaWNlcyBhbmQgZGFpbHkgcmV0dXJucyBpcyB0eXBpY2FsbHkgc3Vic3RhbnRpYWwsIHdoaWxlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZGFpbHkgcmV0dXJucyBhbmQgbG9nIHJldHVybnMgaXMgdXN1YWxseSBzbWFsbC4gQXMgeW91J2xsIHNlZSBsYXRlciwgb25lIGFkdmFudGFnZSBvZiB1c2luZyBsb2cgcmV0dXJucyBpcyB0aGF0IGNhbGN1bGF0aW5nIG11bHRpLXBlcmlvZCByZXR1cm5zIGZyb20gaW5kaXZpZHVhbCBwZXJpb2RzIGlzIGdyZWF0bHkgc2ltcGxpZmllZCAtIHlvdSBqdXN0IGFkZCB0aGVtIHRvZ2V0aGVyIQoKSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIGZ1cnRoZXIgZXhwbG9yZSB0aGUgZXVfc3RvY2tzIGRhdGFzZXQsIGluY2x1ZGluZyBwbG90dGluZyBwcmljZXMsIGNvbnZlcnRpbmcgcHJpY2VzIHRvIChuZXQpIHJldHVybnMsIGFuZCBjb252ZXJ0aW5nIHByaWNlcyB0byBsb2cgcmV0dXJucy4KYGBge3J9CiMgUGxvdCBldV9zdG9ja3MKcGxvdChldV9zdG9ja3MpCgojIFVzZSB0aGlzIGNvZGUgdG8gY29udmVydCBwcmljZXMgdG8gcmV0dXJucwpyZXR1cm5zIDwtIGV1X3N0b2Nrc1stMSxdIC8gZXVfc3RvY2tzWy0xODYwLF0gLSAxCgojIENvbnZlcnQgcmV0dXJucyB0byB0cwpyZXR1cm5zIDwtIHRzKHJldHVybnMsIHN0YXJ0ID0gYygxOTkxLCAxMzApLCBmcmVxdWVuY3kgPSAyNjApCgojIFBsb3QgcmV0dXJucwpwbG90KHJldHVybnMpCgojIFVzZSB0aGlzIGNvZGUgdG8gY29udmVydCBwcmljZXMgdG8gbG9nIHJldHVybnMKbG9ncmV0dXJucyA8LSBkaWZmKGxvZyhldV9zdG9ja3MpKQoKIyBQbG90IGxvZ3JldHVybnMKcGxvdChsb2dyZXR1cm5zKQpgYGAKRGFpbHkgbmV0IHJldHVybnMgYW5kIGRhaWx5IGxvZyByZXR1cm5zIGFyZSB0d28gdmFsdWFibGUgbWV0cmljcyBmb3IgZmluYW5jaWFsIGRhdGEuCgojIyMgQ2hhcmFjdGVyaXN0aWNzIG9mIGZpbmFuY2lhbCB0aW1lIHNlcmllcwoKRGFpbHkgZmluYW5jaWFsIGFzc2V0IHJldHVybnMgdHlwaWNhbGx5IHNoYXJlIG1hbnkgY2hhcmFjdGVyaXN0aWNzLiBSZXR1cm5zIG92ZXIgb25lIGRheSBhcmUgdHlwaWNhbGx5IHNtYWxsLCBhbmQgdGhlaXIgYXZlcmFnZSBpcyBjbG9zZSB0byB6ZXJvLiBBdCB0aGUgc2FtZSB0aW1lLCB0aGVpciB2YXJpYW5jZXMgYW5kIHN0YW5kYXJkIGRldmlhdGlvbnMgY2FuIGJlIHJlbGF0aXZlbHkgbGFyZ2UuIE92ZXIgdGhlIGNvdXJzZSBvZiBhIGZldyB5ZWFycywgc2V2ZXJhbCB2ZXJ5IGxhcmdlIHJldHVybnMgKGluIG1hZ25pdHVkZSkgYXJlIHR5cGljYWxseSBvYnNlcnZlZC4gVGhlc2UgcmVsYXRpdmUgb3V0bGllcnMgaGFwcGVuIG9uIG9ubHkgYSBoYW5kZnVsIG9mIGRheXMsIGJ1dCB0aGV5IGFjY291bnQgZm9yIHRoZSBtb3N0IHN1YnN0YW50aWFsIG1vdmVtZW50cyBpbiBhc3NldCBwcmljZXMuIEJlY2F1c2Ugb2YgdGhlc2UgZXh0cmVtZSByZXR1cm5zLCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRhaWx5IGFzc2V0IHJldHVybnMgaXMgbm90IG5vcm1hbCwgYnV0IGhlYXZ5LXRhaWxlZCwgYW5kIHNvbWV0aW1lcyBza2V3ZWQuIEluIGdlbmVyYWwsIGluZGl2aWR1YWwgc3RvY2sgcmV0dXJucyB0eXBpY2FsbHkgaGF2ZSBldmVuIGdyZWF0ZXIgdmFyaWFiaWxpdHkgYW5kIG1vcmUgZXh0cmVtZSBvYnNlcnZhdGlvbnMgdGhhbiBpbmRleCByZXR1cm5zLgoKSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIHdvcmsgd2l0aCB0aGUgZXVfcGVyY2VudHJldHVybnMgZGF0YXNldCwgd2hpY2ggaXMgdGhlIHBlcmNlbnRhZ2UgcmV0dXJucyBjYWxjdWxhdGVkIGZyb20geW91ciBldV9zdG9ja3MgZGF0YS4gRm9yIGVhY2ggb2YgdGhlIGZvdXIgaW5kaWNlcyBjb250YWluZWQgaW4geW91ciBkYXRhLCB5b3UnbGwgY2FsY3VsYXRlIHRoZSBzYW1wbGUgbWVhbiwgdmFyaWFuY2UsIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24uCgpOb3RpY2UgdGhhdCB0aGUgYXZlcmFnZSBkYWlseSByZXR1cm4gaXMgYWJvdXQgMCwgd2hpbGUgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBpcyBhYm91dCAxIHBlcmNlbnRhZ2UgcG9pbnQuIEFsc28gYXBwbHkgdGhlIGhpc3QoKSBhbmQgcXFub3JtKCkgZnVuY3Rpb25zIHRvIG1ha2UgaGlzdG9ncmFtcyBhbmQgbm9ybWFsIHF1YW50aWxlIHBsb3RzLCByZXNwZWN0aXZlbHksIGZvciBlYWNoIG9mIHRoZSBpbmRpY2VzLgpgYGB7cn0KZXVfcGVyY2VudHJldHVybnMgPC0gIHJldHVybnMgKiAxMDAKYGBgCgpgYGB7cn0KIyBHZW5lcmF0ZSBtZWFucyBmcm9tIGV1X3BlcmNlbnRyZXR1cm5zCmNvbE1lYW5zKGV1X3BlcmNlbnRyZXR1cm5zKQoKIyBVc2UgYXBwbHkgdG8gY2FsY3VsYXRlIHNhbXBsZSB2YXJpYW5jZSBmcm9tIGV1X3BlcmNlbnRyZXR1cm5zCmFwcGx5KGV1X3BlcmNlbnRyZXR1cm5zLCBNQVJHSU4gPSAyLCBGVU4gPSB2YXIpCgojIFVzZSBhcHBseSB0byBjYWxjdWxhdGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZyb20gZXVfcGVyY2VudHJldHVybnMKYXBwbHkoZXVfcGVyY2VudHJldHVybnMsIE1BUkdJTiA9IDIsIEZVTiA9IHNkKQoKIyBEaXNwbGF5IGEgaGlzdG9ncmFtIG9mIHBlcmNlbnQgcmV0dXJucyBmb3IgZWFjaCBpbmRleApwYXIobWZyb3cgPSBjKDIsMikpCmFwcGx5KGV1X3BlcmNlbnRyZXR1cm5zLCBNQVJHSU4gPSAyLCBGVU4gPSBoaXN0LCBtYWluID0gIiIsIHhsYWIgPSAiUGVyY2VudGFnZSBSZXR1cm4iKQoKIyBEaXNwbGF5IG5vcm1hbCBxdWFudGlsZSBwbG90cyBvZiBwZXJjZW50IHJldHVybnMgZm9yIGVhY2ggaW5kZXgKcGFyKG1mcm93ID0gYygyLDIpKQphcHBseShldV9wZXJjZW50cmV0dXJucywgTUFSR0lOID0gMiwgRlVOID0gcXFub3JtLCBtYWluID0gIiIpCnFxbGluZShldV9wZXJjZW50cmV0dXJucykKYGBgCk5vdGUgdGhhdCB0aGUgdmFzdCBtYWpvcml0eSBvZiByZXR1cm5zIGFyZSBuZWFyIHplcm8sIGJ1dCBzb21lIGRhaWx5IHJldHVybnMgYXJlIGdyZWF0ZXIgdGhhbiA1IHBlcmNlbnRhZ2UgcG9pbnRzIGluIG1hZ25pdHVkZS4gU2ltaWxhcmx5LCBub3RlIHRoZSBjbGVhciBkZXBhcnR1cmUgZnJvbSBub3JtYWxpdHksIGVzcGVjaWFsbHkgaW4gdGhlIHRhaWxzIG9mIHRoZSBkaXN0cmlidXRpb25zLCBhcyBldmlkZW50IGluIHRoZSBub3JtYWwgcXVhbnRpbGUgcGxvdHMuCgojIyMgUGxvdHRpbmcgcGFpcnMgb2YgZGF0YQoKVGltZSBzZXJpZXMgZGF0YSBpcyBvZnRlbiBwcmVzZW50ZWQgaW4gYSB0aW1lIHNlcmllcyBwbG90LiBGb3IgZXhhbXBsZSwgdGhlIGluZGV4IHZhbHVlcyBmcm9tIHRoZSBldV9zdG9ja3MgZGF0YXNldCBhcmUgc2hvd24gaW4gdGhlIGFkam9pbmluZyBmaWd1cmUuCmBgYHtyfQpwbG90KGV1X3N0b2NrcykKYGBgClJlY2FsbCwgZXVfc3RvY2tzIGNvbnRhaW5zIGRhaWx5IGNsb3NpbmcgcHJpY2VzIGZyb20gMTk5MS0xOTk4IGZvciB0aGUgbWFqb3Igc3RvY2sgaW5kaWNlcyBpbiBHZXJtYW55IChEQVgpLCBTd2l0emVybGFuZCAoU01JKSwgRnJhbmNlIChDQUMpLCBhbmQgdGhlIFVLIChGVFNFKS4KCkl0IGlzIGFsc28gdXNlZnVsIHRvIGV4YW1pbmUgdGhlIGJpdmFyaWF0ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYWlycyBvZiB0aW1lIHNlcmllcy4gSW4gdGhpcyBleGVyY2lzZSB3ZSB3aWxsIGNvbnNpZGVyIHRoZSBjb250ZW1wb3JhbmVvdXMgcmVsYXRpb25zaGlwLCB0aGF0IGlzIG1hdGNoaW5nIG9ic2VydmF0aW9ucyB0aGF0IG9jY3VyIGF0IHRoZSBzYW1lIHRpbWUsIGJldHdlZW4gcGFpcnMgb2YgaW5kZXggdmFsdWVzIGFzIHdlbGwgYXMgdGhlaXIgbG9nIHJldHVybnMuIFRoZSBwbG90KGEsIGIpIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBhIHNjYXR0ZXJwbG90IHdoZW4gdHdvIHRpbWUgc2VyaWVzIG5hbWVzIGEgYW5kIGIgYXJlIGdpdmVuIGFzIGlucHV0LgoKVG8gc2ltdWx0YW5lb3VzbHkgbWFrZSBzY2F0dGVycGxvdHMgZm9yIGFsbCBwYWlycyBvZiBzZXZlcmFsIGFzc2V0cyB0aGUgcGFpcnMoKSBmdW5jdGlvbiBjYW4gYmUgYXBwbGllZCB0byBwcm9kdWNlIGEgc2NhdHRlcnBsb3QgbWF0cml4LiBXaGVuIHNoYXJlZCB0aW1lIHRyZW5kcyBhcmUgcHJlc2VudCBpbiBwcmljZXMgb3IgaW5kZXggdmFsdWVzIGl0IGlzIGNvbW1vbiB0byBpbnN0ZWFkIGNvbXBhcmUgdGhlaXIgcmV0dXJucyBvciBsb2cgcmV0dXJucy4KCkluIHRoaXMgZXhlcmNpc2UsIHlvdSdsbCBwcmFjdGljZSB0aGVzZSBza2lsbHMgb24gdGhlIGV1X3N0b2NrcyBkYXRhLiBCZWNhdXNlIHRoZSBEQVggYW5kIEZUU0UgcmV0dXJucyBoYXZlIHNpbWlsYXIgdGltZSBjb3ZlcmFnZSwgeW91IGNhbiBlYXNpbHkgbWFrZSBhIHNjYXR0ZXJwbG90IG9mIHRoZXNlIGluZGljZXMuIE5vdGUgdGhhdCB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbiBoYXMgZWxsaXB0aWNhbCBjb250b3VycyBvZiBlcXVhbCBwcm9iYWJpbGl0eSwgYW5kIHBhaXJzIG9mIGRhdGEgZHJhd24gZnJvbSB0aGUgbXVsdGl2YXJpYXRlIG5vcm1hbCBkaXN0cmlidXRpb24gZm9ybSBhIHJvdWdobHkgZWxsaXB0aWNhbGx5IHNoYXBlZCBwb2ludCBjbG91ZC4gRG8gYW55IG9mIHRoZSBwYWlycyBpbiB0aGUgc2NhdHRlcnBsb3QgbWF0cmljZXMgZXhoaWJpdCB0aGlzIHBhdHRlcm4sIGJlZm9yZSBvciBhZnRlciBsb2cgdHJhbnNmb3JtYXRpb24/CgpgYGB7cn0KIyBNYWtlIGEgc2NhdHRlcnBsb3Qgb2YgREFYIGFuZCBGVFNFCnBsb3QoZXVfc3RvY2tzWywiREFYIl0sIGV1X3N0b2Nrc1ssIkZUU0UiXSkKCiMgTWFrZSBhIHNjYXR0ZXJwbG90IG1hdHJpeCBvZiBldV9zdG9ja3MKcGFpcnMoZXVfc3RvY2tzKQoKIyBDb252ZXJ0IGV1X3N0b2NrcyB0byBsb2cgcmV0dXJucwpsb2dyZXR1cm5zIDwtIGRpZmYobG9nKGV1X3N0b2NrcykpCgojIFBsb3QgbG9ncmV0dXJucwpwbG90KGxvZ3JldHVybnMpCgojIE1ha2UgYSBzY2F0dGVycGxvdCBtYXRyaXggb2YgbG9ncmV0dXJucwpwYWlycyhsb2dyZXR1cm5zKQpgYGAKIEFzIHlvdSBjYW4gc2VlLCB0aGUgcGFpcnMoKSBjb21tYW5kIGlzIGEgdXNlZnVsIHdheSB0byBxdWlja2x5IGNoZWNrIGZvciByZWxhdGlvbnNoaXBzIGJldHdlZW4geW91ciBpbmRpY2VzLgogCiMjIENvdmFyaWFuY2UgYW5kIGNvcnJlbGF0aW9uCgojIyMgQ2FsY3VsYXRpbmcgc2FtcGxlIGNvdmFyaWFuY2VzIGFuZCBjb3JyZWxhdGlvbnMKClNhbXBsZSBjb3ZhcmlhbmNlcyBtZWFzdXJlIHRoZSBzdHJlbmd0aCBvZiB0aGUgbGluZWFyIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1hdGNoZWQgcGFpcnMgb2YgdmFyaWFibGVzLiBUaGUgY292KCkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGNvdmFyaWFuY2VzIGZvciBhIHBhaXIgb2YgdmFyaWFibGVzLCBvciBhIGNvdmFyaWFuY2UgbWF0cml4IHdoZW4gYSBtYXRyaXggY29udGFpbmluZyBzZXZlcmFsIHZhcmlhYmxlcyBpcyBnaXZlbiBhcyBpbnB1dC4gRm9yIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIG1hdHJpeCBpcyBzeW1tZXRyaWMgd2l0aCBjb3ZhcmlhbmNlcyBiZXR3ZWVuIHZhcmlhYmxlcyBvbiB0aGUgb2ZmLWRpYWdvbmFsIGFuZCB2YXJpYW5jZXMgb2YgdGhlIHZhcmlhYmxlcyBhbG9uZyB0aGUgZGlhZ29uYWwuIAoKQ292YXJpYW5jZXMgYXJlIHZlcnkgaW1wb3J0YW50IHRocm91Z2hvdXQgZmluYW5jZSwgYnV0IHRoZXkgYXJlIG5vdCBzY2FsZSBmcmVlIGFuZCB0aGV5IGNhbiBiZSBkaWZmaWN1bHQgdG8gZGlyZWN0bHkgaW50ZXJwcmV0LiBDb3JyZWxhdGlvbiBpcyB0aGUgc3RhbmRhcmRpemVkIHZlcnNpb24gb2YgY292YXJpYW5jZSB0aGF0IHJhbmdlcyBpbiB2YWx1ZSBmcm9tIC0xIHRvIDEsIHdoZXJlIHZhbHVlcyBjbG9zZSB0byAxIGluIG1hZ25pdHVkZSBpbmRpY2F0ZSBhIHN0cm9uZyBsaW5lYXIgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFpcnMgb2YgdmFyaWFibGVzLiBUaGUgY29yKCkgZnVuY3Rpb24gY2FuIGJlIGFwcGxpZWQgdG8gYm90aCBwYWlycyBvZiB2YXJpYWJsZXMgYXMgd2VsbCBhcyBhIG1hdHJpeCBjb250YWluaW5nIHNldmVyYWwgdmFyaWFibGVzLCBhbmQgdGhlIG91dHB1dCBpcyBpbnRlcnByZXRlZCBhbmFsb2dvdXNseS4KYGBge3J9CkRBWF9sb2dyZXR1cm5zIDwtIGRpZmYobG9nKGV1X3N0b2Nrc1ssICJEQVgiXSkpCkZUU0VfbG9ncmV0dXJucyA8LSBkaWZmKGxvZyhldV9zdG9ja3NbLCAiRlRTRSJdKSkKYGBgCgpgYGB7cn0KIyBVc2UgY292KCkgd2l0aCBEQVhfbG9ncmV0dXJucyBhbmQgRlRTRV9sb2dyZXR1cm5zCmNvdihEQVhfbG9ncmV0dXJucywgRlRTRV9sb2dyZXR1cm5zKQoKIyBVc2UgY292KCkgd2l0aCBsb2dyZXR1cm5zCmNvdihsb2dyZXR1cm5zKQoKIyBVc2UgY29yKCkgd2l0aCBEQVhfbG9ncmV0dXJucyBhbmQgRlRTRV9sb2dyZXR1cm5zCmNvcihEQVhfbG9ncmV0dXJucywgRlRTRV9sb2dyZXR1cm5zKQoKIyBVc2UgY29yKCkgd2l0aCBsb2dyZXR1cm5zCmNvcihsb2dyZXR1cm5zKQpgYGAKVGhlIGNvdigpIGFuZCBjb3IoKSBjb21tYW5kcyBwcm92aWRlIGEgc2ltcGxlIGFuZCBpbnR1aXRpdmUgb3V0cHV0IGZvciBjb21wYXJpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB5b3VyIGluZGljZXMsIGVzcGVjaWFsbHkgd2hlbiBhIHNjYXR0ZXJwbG90IG1hdHJpeCBpcyBkaWZmaWN1bHQgdG8gaW50ZXJwcmV0LgoKIyMgQXV0b2NvcnJlbGF0aW9uCgojIyMgQ2FsY3VsYXRpbmcgYXV0b2NvcnJlbGF0aW9ucwoKQXV0b2NvcnJlbGF0aW9ucyBvciBsYWdnZWQgY29ycmVsYXRpb25zIGFyZSB1c2VkIHRvIGFzc2VzcyB3aGV0aGVyIGEgdGltZSBzZXJpZXMgaXMgZGVwZW5kZW50IG9uIGl0cyBwYXN0LiBGb3IgYSB0aW1lIHNlcmllcyB4IG9mIGxlbmd0aCBuIHdlIGNvbnNpZGVyIHRoZSBuLTEgcGFpcnMgb2Ygb2JzZXJ2YXRpb25zIG9uZSB0aW1lIHVuaXQgYXBhcnQuIFRoZSBmaXJzdCBzdWNoIHBhaXIgaXMgKHhbMl0seFsxXSksIGFuZCB0aGUgbmV4dCBpcyAoeFszXSx4WzJdKS4gRWFjaCBzdWNoIHBhaXIgaXMgb2YgdGhlIGZvcm0gKHhbdF0seFt0LTFdKSB3aGVyZSB0IGlzIHRoZSBvYnNlcnZhdGlvbiBpbmRleCwgd2hpY2ggd2UgdmFyeSBmcm9tIDIgdG8gbiBpbiB0aGlzIGNhc2UuIFRoZSBsYWctMSBhdXRvY29ycmVsYXRpb24gb2YgeCBjYW4gYmUgZXN0aW1hdGVkIGFzIHRoZSBzYW1wbGUgY29ycmVsYXRpb24gb2YgdGhlc2UgKHhbdF0sIHhbdC0xXSkgcGFpcnMuCgpJbiBnZW5lcmFsLCB3ZSBjYW4gbWFudWFsbHkgY3JlYXRlIHRoZXNlIHBhaXJzIG9mIG9ic2VydmF0aW9ucy4gRmlyc3QsIGNyZWF0ZSB0d28gdmVjdG9ycywgeF90MCBhbmQgeF90MSwgZWFjaCB3aXRoIGxlbmd0aCBuLTEsIHN1Y2ggdGhhdCB0aGUgcm93cyBjb3JyZXNwb25kIHRvICh4W3RdLCB4W3QtMV0pIHBhaXJzLiBUaGVuIGFwcGx5IHRoZSBjb3IoKSBmdW5jdGlvbiB0byBlc3RpbWF0ZSB0aGUgbGFnLTEgYXV0b2NvcnJlbGF0aW9uLgoKTHVja2lseSwgdGhlIGFjZigpIGNvbW1hbmQgcHJvdmlkZXMgYSBzaG9ydGN1dC4gQXBwbHlpbmcgYWNmKC4uLiwgbGFnLm1heCA9IDEsIHBsb3QgPSBGQUxTRSkgdG8gYSBzZXJpZXMgeCBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZXMgdGhlIGxhZy0xIGF1dG9jb3JyZWxhdGlvbi4KCkZpbmFsbHksIG5vdGUgdGhhdCB0aGUgdHdvIGVzdGltYXRlcyBkaWZmZXIgc2xpZ2h0bHkgYXMgdGhleSB1c2Ugc2xpZ2h0bHkgZGlmZmVyZW50IHNjYWxpbmdzIGluIHRoZWlyIGNhbGN1bGF0aW9uIG9mIHNhbXBsZSBjb3ZhcmlhbmNlLCAxLyhuLTEpIHZlcnN1cyAxL24uIEFsdGhvdWdoIHRoZSBsYXR0ZXIgd291bGQgcHJvdmlkZSBhIGJpYXNlZCBlc3RpbWF0ZSwgaXQgaXMgcHJlZmVycmVkIGluIHRpbWUgc2VyaWVzIGFuYWx5c2lzLCBhbmQgdGhlIHJlc3VsdGluZyBhdXRvY29ycmVsYXRpb24gZXN0aW1hdGVzIG9ubHkgZGlmZmVyIGJ5IGEgZmFjdG9yIG9mIChuLTEpL24uCmBgYHtyfQpuID0gMTAwCiMgRGVmaW5lIHhfdDAgYXMgeFstMV0KeF90MCA8LSB4Wy0xXQoKIyBEZWZpbmUgeF90MSBhcyB4Wy1uXQp4X3QxIDwtIHhbLW5dCgojIENvbmZpcm0gdGhhdCB4X3QwIGFuZCB4X3QxIGFyZSAoeFt0XSwgeFt0LTFdKSBwYWlycyAgCmhlYWQoY2JpbmQoeF90MCwgeF90MSkpCiAgCiMgUGxvdCB4X3QwIGFuZCB4X3QxCnBsb3QoeF90MCwgeF90MSkKCiMgVmlldyB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiB4X3QwIGFuZCB4X3QxCmNvcih4X3QwLCB4X3QxKQoKIyBVc2UgYWNmIHdpdGggeAphY2YoeCwgbGFnLm1heCA9IDEsIHBsb3QgPSBGQUxTRSkKCiMgQ29uZmlybSB0aGF0IGRpZmZlcmVuY2UgZmFjdG9yIGlzIChuLTEpL24KY29yKHhfdDEsIHhfdDApICogKG4tMSkvbgpgYGAKQXMgeW91IGNhbiBzZWUsIHRoZSBhY2YoKSBjb21tYW5kIGlzIGEgaGVscGZ1bCBzaG9ydGN1dCBmb3IgY2FsY3VsYXRpbmcgYXV0b2NvcnJlbGF0aW9uLgoKIyMjIFRoZSBhdXRvY29ycmVsYXRpb24gZnVuY3Rpb24KCkF1dG9jb3JyZWxhdGlvbnMgY2FuIGJlIGVzdGltYXRlZCBhdCBtYW55IGxhZ3MgdG8gYmV0dGVyIGFzc2VzcyBob3cgYSB0aW1lIHNlcmllcyByZWxhdGVzIHRvIGl0cyBwYXN0LiBXZSBhcmUgdHlwaWNhbGx5IG1vc3QgaW50ZXJlc3RlZCBpbiBob3cgYSBzZXJpZXMgcmVsYXRlcyB0byBpdHMgbW9zdCByZWNlbnQgcGFzdC4KClRoZSBhY2YoLi4uLCBsYWcubWF4ID0gLi4uLCBwbG90ID0gRkFMU0UpIGZ1bmN0aW9uIHdpbGwgZXN0aW1hdGUgYWxsIGF1dG9jb3JyZWxhdGlvbnMgZnJvbSAwLCAxLCAyLC4uLiwgdXAgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgYXJndW1lbnQgbGFnLm1heC4gSW4gdGhlIHByZXZpb3VzIGV4ZXJjaXNlLCB5b3UgZm9jdXNlZCBvbiB0aGUgbGFnLTEgYXV0b2NvcnJlbGF0aW9uIGJ5IHNldHRpbmcgdGhlIGxhZy5tYXggYXJndW1lbnQgdG8gMS4KCkluIHRoaXMgZXhlcmNpc2UsIHlvdSdsbCBleHBsb3JlIHNvbWUgZnVydGhlciBhcHBsaWNhdGlvbnMgb2YgdGhlIGFjZigpIGNvbW1hbmQuIApgYGB7cn0KeCA8LSBhcmltYS5zaW0obW9kZWwgPSBsaXN0KG9yZGVyID0gYygwLCAxLCAwKSksIG4gPSAxMDApCmBgYAoKYGBge3J9CiMgR2VuZXJhdGUgQUNGIGVzdGltYXRlcyBmb3IgeCB1cCB0byBsYWctMTAKYWNmKHgsIGxhZy5tYXggPSAxMCwgcGxvdCA9IEZBTFNFKQoKIyBUeXBlIHRoZSBBQ0YgZXN0aW1hdGUgYXQgbGFnLTEwIAowLjYwNAoKIyBUeXBlIHRoZSBBQ0YgZXN0aW1hdGUgYXQgbGFnLTUKMC4yMDkKYGBgClNpbmNlIGF1dG9jb3JyZWxhdGlvbnMgbWF5IHZhcnkgYnkgbGFnLCB3ZSBvZnRlbiBjb25zaWRlciBhdXRvY29ycmVsYXRpb25zIGFzIGEgZnVuY3Rpb24gb2YgdGhlIHRpbWUgbGFnLiBUYWtpbmcgdGhpcyB2aWV3LCB3ZSBoYXZlIG5vdyBlc3RpbWF0ZWQgdGhlIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbiAoQUNGKSBvZiB4IGZyb20gbGFncyAwIHRvIDEwLgoKIyMjIFZpc3VhbGl6aW5nIHRoZSBhdXRvY29ycmVsYXRpb24gZnVuY3Rpb24KCkVzdGltYXRpbmcgdGhlIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbiAoQUNGKSBhdCBtYW55IGxhZ3MgYWxsb3dzIHVzIHRvIGFzc2VzcyBob3cgYSB0aW1lIHNlcmllcyB4IHJlbGF0ZXMgdG8gaXRzIHBhc3QuIFRoZSBudW1lcmljIGVzdGltYXRlcyBhcmUgaW1wb3J0YW50IGZvciBkZXRhaWxlZCBjYWxjdWxhdGlvbnMsIGJ1dCBpdCBpcyBhbHNvIHVzZWZ1bCB0byB2aXN1YWxpemUgdGhlIEFDRiBhcyBhIGZ1bmN0aW9uIG9mIHRoZSBsYWcuCgpJbiBmYWN0LCB0aGUgYWNmKCkgY29tbWFuZCBwcm9kdWNlcyBhIGZpZ3VyZSBieSBkZWZhdWx0LiBJdCBhbHNvIG1ha2VzIGEgZGVmYXVsdCBjaG9pY2UgZm9yIGxhZy5tYXgsIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsYWdzIHRvIGJlIGRpc3BsYXllZC4KYGBge3IgaW5jbHVkZT1GQUxTRX0KeCA8LSB0cyhjKC0wLjAzNzE5NDUwMTM5MTI4NTIsIC0wLjY3NzQzMzY4MDk3MTY1OSwgLTAuNzM0NjI3MzkyNDEwNDM1LCAKLTEuNTMwNzUzMjY3OTc2MzEsIC0yLjI3MDQ3NDYwNzkyODM5LCAtMS45NjY0Mzc3OTk4NjkwOSwgLTAuOTY0MjE3MTY0MzEyOTY3LCAKLTAuNTI1NDY3NjAwMjQxOTcyLCAtMC44OTQzODkzNzU0Mzk0ODEsIC0wLjU4ODU3NzI2ODI2NzM3NCwgMS4xNzM5OTA3MzAzMTEyOSwgCjAuMjM3MjE0MzIxNTE5NTM5LCAwLjQ5NTMzOTQwMTI2MTg5NiwgMC40NTEwNjk5MDE0NDczNTksIC0wLjA3NDkzMjM2MDA0NjExNzMsIAowLjM5NDQ0NzUwMjc3NzExMSwgMS42OTM3NDc1NTM2MTM2OCwgMC4xMjg5MTQyMjgxODU0MDcsIC0wLjM3NzgzNzg2OTg1Mjc1NiwgCjAuNjgzNDA1NDYzNzkxNDI2LCAxLjcyNTQzOTAxNTA2MjY2LCAxLjQ0MTA1MzA2MDg3MjA5LCAwLjYwMTE2OTA3NTAzMTIzMSwgCjAuMDU2OTk0NzMwMTM0MzQwOSwgMC4wNjU4MjI4ODYwMDM3MTkxLCAtMS4xMTUzMzc3NTI1MTExOCwgLTAuNjM3NzE4NzYzMjQ0MTU1LCAKLTIuMTA4NTQ0NzExNTAyMjcsIC0xLjYzNDQxNTMyNTE5MDcxLCAtMC45NzM4NzkxODIyMjE2MTMsIC0zLjM2NjMyMzU0ODY5OTkxLCAKLTMuMDA4NTMxMTE5Mzk4ODQsIC00LjQ2ODIwNDI4NjU1MDg3LCAtNC4xMzMxNTA3MDE2MzkxNSwgLTUuNjM3OTkwMTM3NTk2NjksIAotNS4wMDQ0NTA5MDM3NjQxLCAtMy4yMjgzMzYyMDI3ODM1MSwgLTIuOTAxNjUwMjY3NTI0NDksIC0yLjY1MjI0MzYwNjQzMDQ0LCAKLTIuMjk0NjQxMDU4NTQyNTcsIC0zLjQwNTU0NjU1ODI5MTIsIC0yLjE5NTg4NTIyODQxMDAzLCAtMC4wMjAyMjM4NzA2NDkzMjUsIAowLjAwODEwOTk3MDE0OTE4MzYxLCAtMS4wNjczMTk0NDQ1ODgyMywgLTAuNTg2MjY2MDc1NjcwNzMsIDAuMzYxNzc2MDY2MDM1OTgsIAotMC43OTE0ODc3OTcwOTExNywgLTAuNzI0MzA0MzAyMzY4NTcxLCAtMC4yMzc1NjAxNTE3MDUxMzMsIC0wLjAwNjI0ODMzNDAzMzg5Mzk0LCAKLTAuODg3MTc2OTQ2OTMzNjg3LCAtMS4zNTQzMjIyMzA2MTk0LCAtMi42MTI4MDU4OTE0Nzg2MywgLTEuNzAzODkwNjg1MjcwMTUsIAotMC45NjcyOTg2OTU3Njk4NDcsIDAuNDA3MjM4MTQ3NzcxNjY1LCAxLjIxNjQyMjI4NTU1MDc0LCAyLjU4NDc1ODcwMDgwNzksIAo0LjA5NDY1NzM3NTA1Mzc1LCAxLjMyMjkwMDM1NDMwNjA1LCAyLjMwMTAzOTk5OTgwODIxLCAxLjA1MTE5NzUzNzg4NTA5LCAKMS4wMzQ1NDIzNTI5Mzk3MywgMC4zMjgxOTI5MDc5NDkxNzUsIC0wLjI1NDQwNzM4OTUyNzg5OCwgMC4xMTUzNjU5MTk1MDQyNzUsIAotMC4wOTU1MDEwNzAzNzQxNTg5LCAtMS4yOTExNTk5NDU2OSwgLTIuNDM1MjY5ODI1MTA0MTcsIC0wLjM0MDIyMTg2MzM3MTczMSwgCi0wLjE2MTI0NjExNTY3MjA5MSwgLTAuMTkzODU2MjA2NjI2MjAyLCAwLjAxMzAyODUwNDgyOTAxNzgsIDAuNjY5OTg4MTM4NDUxMTc2LCAKMC4yNTgzMzc1ODUyODM0NzQsIDAuNDA4MDk3NTI0MTExODcsIDAuNjM0NjUyNTAwMTAxMjYyLCAwLjc4NzIxNzg4NTcwMzM2MiwgCjAuMjEwODYyMzc4ODg3MjQxLCAwLjU3MTIyMzY5MjA3MDI0NSwgMS40NTE4MTg1Nzk2ODQyLCAxLjE0OTQxNjUzMDAyNjA2LCAKMy40MDk5NTA3OTkyMTA3MSwgMC4zMjk0OTUzNDIzODczNDUsIDAuNDk0MjQxMDQ0NDM2OTAxLCAtMC43ODIzMDk2OTQyMTYxNDQsIAotMS4yNTA3MTM0MTA1MDA3OCwgLTIuMTc0NTU0OTY2NzYzMDYsIC0xLjMzMjExMjUyODk3NTYyLCAtMC4yNTc5ODA3MTUyMzk5MiwgCjAuNjk2MTc2OTczODYyMDMxLCAxLjgwMjc3NDY3ODUyNjI2LCAxLjEzMzY1MDIzNDMxMDY2LCAwLjM0MDg5OTM2NjY3MDI4OSwgCjEuMjA1NTAyMjk4NzkwMjcsIDIuNTE3NzI4NDQzMTc5MzksIDEuNDU5MTE4Nzg1ODY0MzQsIC0wLjA3NjY0MDYzMzA1NzA3OSwgCi0xLjA0ODM5ODI4NTk5NzY3LCAwLjQ1OTE5NDQ1NDY5Mzk2NSwgLTAuMTE5MjE2MTg0NDE2MzMxLCAwLjAxOTAyNTk3MjQzMzY3ODksIAowLjQ4MTQ1NjkyMDA0MzAyMSwgMC41Mjk4MjU1NDQ5MTI3NiwgMy4xODM2Njg5NjgzMjUyNCwgMi41NDQ2MTg3MzU5NzQ4NywgCjMuMjYzNjkxMTg5NTQzMjYsIDEuODg4ODE1MTczMDM0MzMsIDEuODEzMDM2OTI5NTIyNzYsIDAuMTUxNTA1MjQwNTY5NTgxLCAKLTAuNTg4Nzg4NzMyNjcyODE5LCAwLjY4OTkzMTQ4MjM3OTcxNSwgLTAuNzIwNDMwNzg2MzMyODI5LCAtMC44NTc4NDEwMjk1NDI4MzgsIAotMS4yODcxNjg4MDE4MDI2OCwgLTEuNTI4MjY2NTY4MzgzMTQsIC0xLjIwNjU0OTU5MDg5NDY1LCAtMi4zMzI2NzU5NzUyOTA3NCwgCi0yLjc2NzQ5NjkwMDU4NDIxLCAtMy4wNzkzNzc2NzM5NDE1NiwgLTEuODg5MzI3MDQ0ODUwMzIsIC0xLjgwNDkwMjU2ODUzMTg0LCAKLTEuNzI0NzQ0Mjc0ODc0MjIsIC0yLjAyMDI0ODg4ODEzMzkzLCAtMS44ODQ1MDA1ODgxMzQ5LCAtMS44NTY5MTcwMzQ2MTU2NiwgCi0wLjU2OTI0NjA3ODYwNTc0NiwgMC40NTA0MjI2MTM4NTk2NzksIC0wLjY4NDk3MzAyMzYwMTg0NSwgMC4xNDQxMjc4ODYyMTE3MjMsIAotMC40NTg1MzQxMjgyMTkxNjIsIC0wLjcxNjM4OTU3MDQ2OTQ3NywgMC4wMDkyMzY4NDY5MTg2NTc0NSwgCi0wLjI2OTIyMTc1NDc3NTYzOSwgMC40MDc1NTExNjg5Nzc5MTYsIDEuNTE1MTI5MzUxODM1NTEsIDEuOTE3OTQ4NTI5Mzk5NjUsIAoyLjMxNjM4NDE5MTM0MzIxLCAwLjg2MzY1OTYwNjA0MzI2MywgMC44Njc3MzU4MjA5OTM1MjksIC0wLjI0NDQxMjQ0NjczMTQ3MywgCi0xLjYzNzgwNTEwMzQ3ODYsIC0yLjM0NjE4MDI2NDU0NTAyLCAtMC45MzM2NjI1NjA1MDA2NzQsIC0wLjcwMjg0MzEwNDkzNTAwMSwgCi0xLjY1MTM3NDE3NjcxMTI5LCAtMS40NTU2MTMyMjc5NDc3NSwgLTAuMTY1NzQ1NTMzNDA0OTUzLCAtMC4zMjk1MjAyMTU0MTQwNTQKKSkKeSA8LSB0cyhjKC0xLjM2MzEyMDYwNzI4MTI2LCAtMi4wMDcwNjM2NDIzODM4MiwgMS40NTg2MjIxMTAxMTA0NywgCjUuNzM1OTYxMjA3NDY2NDUsIC0wLjYwMzgyMzI2NzA3MjAxNywgLTEuMjk0NTc0NTY0MjI1MjksIDEuMjYwNzMwMjgzOTg3MDksIAo1LjQzODMzODU0NjIzMzI1LCAtMS4xNTg1NjQzMTY0ODczLCAtMi4wOTIzNzY1NzIwODU1OSwgMS4wMzA0MTYyNjcxMzgyNywgCjUuNzkxOTk2ODkxMDkwNTksIC0wLjUyODU3MTk2NjQ1NDk1NCwgMC40OTk0NTQ2NDUxNjMzNjYsIDAuOTM2OTgxMDA3Mzc4MTksIAo0LjcxMjE4NzgyOTk3MjM1LCAyLjU1NzMwNTc1NDY1NjU5LCAxLjMxODcyNDQxOTg4NDc0LCAyLjAzMzE5NTQ4Nzc3NDQsIAo0LjQ2NDcyMDAwNzM0MzM4LCAxLjk5NTM5ODQwOTkwMzA0LCAxLjUzOTkzNjEzMDA0NDYzLCAtMC40MTA1MDk5OTQ4OTcyMzIsIAo0Ljg5MTI0MjQzMTQ5MzM4LCAwLjQ4MTcxMDA4NDk2NDY0OCwgMi41ODI0NzI1MzEwMTQzMSwgLTAuNzYzMjcyMDczMjA1OTI3LCAKNS4xNzY1NTIwNjcyMjEwMSwgMC41NjkyNzUwOTk0Mzk1MTMsIDMuOTk3Nzg3NDM0MjY2NTMsIDAuNDc5MzIxODYwNjQ1MjIsIAozLjQ2MTkzMzMzMzkxNTIzLCAtMC43NDI0MTE2Njk0OTU3ODMsIDMuNTgxNjk1ODY2NDQ4NTksIC0xLjgzNDMxODgxMzk1OTUzLCAKMy4zMDcyODc4OTY2ODQ3MSwgMC44OTM2OTk4NDQwODQ0LCA0LjM5MzI1OTUzNjUyMjU4LCAtMC41MzQ3NDUxNzIwNjc0NjksIAozLjIxNTQwNzY5NTI5OTkzLCAwLjYwNDk1NzgzMjU2MzkyOSwgNC43NTQyMTU1NTE2MTUwMSwgMC4zNjM5ODgwODA2MDIxMzEsIAoyLjA5OTQ4MzI3MzEyMTExLCAyLjEyMTM4NDc2MzkwNTg2LCA0LjE3NzI3MzQ5MjYyODM0LCAxLjA1MjcwNzQwMTI5MTE4LCAKMi40ODEzMDE3NTM4MDExNCwgMy44NzgwMjMzMDA1MzgxNywgNC4zNDMyMzQzNzYzNjc1OCwgMi42NjI2ODE1MTEzNjQzOCwgCjEuNzQzNTg3NDM1MjA0MiwgNi4wODMwNTE0MTQ5MTAwOCwgNC43NjIxOTA4NjA1NzM4NiwgMS43NDM1NTA1OTY3MzU4MSwgCjIuMDE3MTUwNTM2ODM5NTgsIDYuNTEyOTI4MzA2NTAyOTgsIDUuMzQ1MjIzMTYyNTQ3MiwgMC42MzI2NzI4NDk4MDQ3NjUsIAozLjA0MzMzMDEwODA2MDg1LCA1Ljg3MjMwNjkyNDk3OTU3LCA0LjEwNjE3MTkzODUyNTEzLCAwLjE0MzE3NjI3MTQ4MDcxNiwgCjIuODE2NDEwNDI5NzAxMzUsIDUuMjk2MTQ0Mjc5MzY4ODcsIDMuNzE3NjgxMjAzMDQ4NDIsIDEuNzAzMTAxOTU4NjA5NzYsIAoyLjI1MTgzMTg3NzcwODIyLCA0LjA4ODIzMTk1NjUwMzExLCAzLjU3NjIzNzc4NjE3NTg2LCAxLjA4MzczMzUyNzgzODg1LCAKMC41OTI0NjYxODk1MzE1MzYsIDIuODMwMDI1MzE5NjcwMzYsIDMuMDM0MTM5OTg3MTE1ODQsIDEuODQ0OTczNzgwNzExMzksIAowLjI1NDgyMzg0NTE4Nzc5MSwgMy4xOTQ3ODc1MzU1Njk1OCwgMS44NjcwNzE5MjE1MTU3OCwgMC42MDgwMzQxODY0NjQ0MzYsIAoyLjYyNDQ1NzI0NjkxNDU4LCAzLjEwNDExMDQ2NjE2MzIxLCAyLjE3MDE1OTIwNDY4OTYzLCAtMC4wODcxNDQwMzI5NDkzNDc0LCAKMy4wNTg4OTk1MDIyMjIyOSwgMy43NTEwMjUzNDc1OTU2LCAxLjgzMjE2MzUyMzY5MTQ5LCAwLjkzMjkxMjE0MTIyMjc4LCAKNC43MjI4MjE5MDQ5OTkyMywgMi44MjA4Mzc2MTcxMjM0NSwgMS4zMzE5ODYwMjU5MzA2OSwgMC4yMzk2MjQwMzU2MTQyNywgCjQuNDMzMTE4MTA4NjkyOTYsIDMuMzc0NDIyMjE5NzUyOTQsIDAuOTI4MDAxNjQ5MzI4NzA4LCAyLjEwMTQ1MDA4MDEwOTk2LCAKNC45NDI1ODI2Nzk3NDI2MywgMy41MTcyMDg4MzM5NzE3LCAxLjg0MTg0NzcyOTgxOTMzLCAwLjU4MjIyNjczNDE3NDg2OSwgCjQuMjYyMTQzNjgyNDQyOTEsIDIuMzQ3MjMzNDgzMDc3NywgMC4xMjI1MjgyNjg5MzM2MDQsIDAuMDM0Nzk4MDQ1MjMzNDc3NSwgCjUuNjI1NTIyNjgwMjY3MzcsIDQuMjI1MjAxODM5MDI0MTYsIDAuNjk0ODkzMjczMDAzNzgxLCAwLjg0NjExNjgzNTc1ODMyNiwgCjYuNTIzNDE4MTMyODA4NjYsIDIuOTI2MTU1MDE4OTkxODMsIDAuNzY2NDMxMjM5Njk4NjMsIDAuMjQxNjQ1NTk2NjczNDg1LCAKNS4wNzIxMjQ1MzQxODg3MSwgMi4xNTYwMjk2MzUxOTA3LCAwLjU2OTA3OTcyNzczMjM0OCwgLTEuMDUxODc1NjI4NjA5MTQsIAo0Ljg1MDIzNTA3ODc4NTUxLCAxLjIwNDQwODY2MTg4ODM5LCAyLjcyOTE2MTk0MDkwMTQyLCAwLjgyODQ0MzI4MjY4ODA1MSwgCjEuNDgxMzY2NjE5MTk5ODYsIC0xLjgwMzE3NTg2NjE4OTQ5LCAyLjIyMjU4ODMzMTI2MjY1LCAwLjgxNjM3NjY4NjI4NjE4OSwgCjEuNTcyMDA1MTMyMTYyMjQsIC0xLjYwMTIwNDg5NDczODM0LCAwLjA5ODcxNjA0MTg1NTcwOTQsIDEuNjkzNzM0MDIyMzYyOTcsIAoxLjYxNTE3NDU1NDYzODY3LCAtMi4xNTgzNjIwNjg0OTE0OSwgMC4yNzIzNjM0NjU1MzI5MjksIDEuNjM2MjA0Mjg3Njg0MDUsIAoxLjQ3NzA0MzYxODI1LCAtMi4xODMwNTEzNzQxNTIwMiwgMC43MjE2NDY4MjU2NDM1NDgsIDEuODUwNjI5NjQ0NjIwNjQsIAowLjgxNDM5NjU0Mjk5NDkyNiwgLTEuMjQ4MDI4Mjc5ODk3MDgsIDAuNDk2MTk0NzczNDEzMzY0LCAyLjk4MjQ2Njk2NjIzMzQzLCAKMS40NTIxMTYxNDA5NTM5NiwgLTEuNjcyODMzNzcwODE5NzIsIDAuMjI5MzY0NzY5MjQ3NDQ2LCAyLjgyODA1MDY0MDAwMjg0LCAKMi40MDczMDkxODE2Nzk2MSwgLTAuMDQ1OTgxNDg4OTAyMjI5MiwgMS42MjYyMjE1MjM4NTAwMywgNS42MTAyNDY3MjUzNTI0NCwgCjIuOTQ0ODkzNTIzNDczMjIsIC0wLjc3MDY4MTE1MTExNTY3LCAwLjQ0Mzc4Nzg2NDM1MzI1NSkpCnogPC0gdHMoYygwLjMxNTczNzk4MTUyMjI1MSwgMS43MzU0MzU3OTQzOTU4NSwgLTAuMDA5MjY0NjAwNzY4ODM2ODIsIAowLjgxMzYyODgyNDgxMjc3NSwgLTAuOTI4NTYwMTIzODIxNjA3LCAtMS4xNTMxMTA0ODk0MTUsIDAuODYyODAzNjg5NDM2MjUyLCAKMC41MzEyODY3MTM4MzcwNzksIC0xLjE2NTc0Njk1MzIyNDE0LCAtMS44MTI3OTUwODg4MjA3MywgMS42MTIzNjUxMTkyMjgyMSwgCjAuMDI3MTk3NTYwODk4MTQ2NiwgLTAuNDQxNDQ4MTI5MzY3NzA4LCAwLjUyMTUxNTc0NzY4MjQ5LCAwLjY2OTU5NDE4ODM2MTA3MywgCjAuNjYwNTQyNDU4MjQ1ODU4LCAtMC42MDI3Njg2NTcyNzQ2MzUsIDAuMzEwNjUyMDkwMTM1NDc3LCAtMC40OTQ2Nzg4ODY4MDg3NDQsIAotMS4xMDY1NTk3MzQ5NDc4MiwgMC41NzA5ODY0MzIxNDUzNjIsIC0xLjAwMTkzMTA1Mzc2MTQ4LCAwLjI1NzE2NTE5NjM5Mzg1MSwgCjAuMzI5MDU3MDI5MjMzMzYzLCAtMS45Mzg5MDExMjM2MzM0MywgLTAuODU2NjM1MDg5Mjk2NjE5LCAtMS4zNjMxOTg4MDQ4Nzk4MywgCi0wLjU3MTYwOTk5MDk4MTkyMSwgMC44MDUzMDI3NzkwMDY3MTUsIC0wLjQ5NjI0NDQyNzM4MDQ3NSwgMC4xNzM2MjkzMzYwNzk4NzYsIAotMC41MDQwMTU2NjI3MDEzNzMsIDAuMTMxMTEwMTU4MTY3NDI3LCAwLjQyMDg5MTk3NDU0NjM4NSwgLTAuMjI5Mjg2OTAwNDgyNzIyLCAKLTAuNTc4NDQ3NjM0MzE1NiwgLTAuNDY5MzQ1MjAzNDY3NTEzLCAwLjM2NDAwNDIxMDgxNzE1NSwgLTAuODY1ODUxMDE0MDU3Nzc2LCAKMC40MjI2NzgxMjQ3NTg0NDQsIDAuNDYzODMzMjQ0MDYzNDU1LCAtMC43OTIyODE3NTY0NDM4NzUsIC0wLjc2NDI3MDEwMTc4MjM4OSwgCi0wLjU1MDQxODIwMTUwOTcyMiwgMC41NjY0Mjc0NjAwNTYxMzksIDAuMTQ1Mzk5NTMwMjM5MDc3LCAwLjQ4MjcyOTUwMTczMTQ4NSwgCjAuNDc0ODg0ODMzNDI5NjI2LCAtMC4xNjk5MDkyNzAxNjk3NzQsIDEuMjA1MzUxMDY1MTY5MjMsIDAuNzc1NTU3ODkzNjQ3MzY3LCAKLTAuMDMzNDY5NzkzMzE2ODgwNCwgMC4xMTc4OTI1OTA1MTkwNDYsIDAuMjMzNjA1NjIxNDE1NDIsIDAuMTI3Mzc5NjQ3OTk2MjM1LCAKMC45NDk1NjI5Nzc5ODYwNDgsIDAuNDQ3OTIyNjc2ODExMzUyLCAtMC45NTg5Nzc4MjgzNTk3NjUsIDEuNDI1Mjc0NTU0MjgwOTMsIAowLjUwMTk1MDIwOTYyNjU2NSwgLTIuMzk2MTIyNjIwMDMxNTQsIDAuMDQ2NjgzNzQ4NDExODUwMiwgLTAuMTY3Njg4ODMzMDcwODQ2LCAKMC42NjM0ODIwNTM0ODc4MjcsIDAuMTgxMzI3MzM5MTkxODg4LCAwLjIyMDAwNjg0Njg5OTU0OCwgLTEuOTkwMzEwNzc4NzAyNTIsIAoxLjA3OTIzNjkzMDU5MDM5LCAtMC44Njc3MDI2MjQ0MDU5OTQsIDAuNjg2MDc1NjA0Nzk3NzQ1LCAwLjQ4MTU1MTM1MDc5ODE5LCAKLTIuMTEyNTIwMTE3MDQzODksIDEuMzY3OTMzNzcwNTE5NTIsIDEuNDY0MTU2MDI0ODI3MDYsIDAuMDcxNTc5MTM1MjA2NDQwNCwgCjAuMzAyMzkzNjU2NjQ5NjM4LCAtMS4xMDA5NjgxOTYwMDIxMywgMC4xMTYwNTM1ODc0NDY4MjcsIC0wLjA0MjU1MDIwMzM1NzQzNzEsIAowLjEzNzI3ODMwMjk5MTc2NCwgMC4zNjE1Njk2ODIyODY5NTcsIC0wLjE5MjQ4NzgwNjc1MDYyMiwgLTAuMzA1MTEyNDc4OTc0NDY4LCAKMy4xMjk0OTc5NDgwMTcxOSwgLTAuMzc4MjAwMDkyMTk1MTgxLCAwLjcxNjcyMzI2NjU0NzUsIC0wLjcxMTEzODA1OTYxNDcxMywgCjAuMTgxMDc4MjA4OTA2NTE4LCAwLjY4ODk1ODgxMzk1ODMyNSwgMC44MTU2MjcxMDYzNTE3NTQsIC0wLjc5OTI1MzEwMzg1OTg4NSwgCjAuMDQ0NDYyMzg0MDQyMjEzMSwgMC41NDA0MzI3NDIzMTk1MDIsIC0wLjYyMTY2NzI2NTgzNjk2NCwgMC41NDQ2MDg0NzIyNzIyNzMsIAotMC4zNjUyODM2MDc3MzIyMTQsIC0wLjc1OTE5NzY0Nzc4NzgwMiwgLTEuNDkyMDc0MzMyMjYzMTgsIC0xLjE3MDQ4OTQyNTg5MTM5LCAKLTEuNTY3MzAyNjcwOTI1NjIsIC0xLjYxMjk3MjQ2NDA5NjE1LCAxLjI1NDcxMTAxODI0MTQ1LCAtMC4zMjIzNjY5MTc1MDU0MjksIAoxLjQzMDk0ODI2NzAxNTEyLCAtMC4zMTU2MTM3NzcwNTAxNzgsIDAuMTY2MDI5MDY4ODQ2NDIsIDAuMTk0NDkwODIyMzc0ODY2LCAKLTAuNzk5NDUyNjE4ODc4OTU0LCAtMS4yNTE1MDUyOTg0NzE0NCwgLTIuNDMwNDIxNzI0OTcyMzYsIDAuMTc5ODA2NjM0ODMwNzAxLCAKLTAuMzA3NTM5MzQ0MTM3ODcsIDAuNTA0MzQ5NjQ1MTUwNDc4LCAtMC40NDIxMzc1OTQyMzU3NjksIC0wLjM2Mzc1MzgxMDAyMjAzMSwgCi0yLjE4OTAxNDk2ODQ5MTIyLCAwLjUyNTg0MTk0MzE0NDU0NiwgLTAuNDg0ODU1NjQ0MDcxNDE1LCAwLjIxMTIxMTU0MjYyOTU5MSwgCi0wLjA5NzEzNTEwNjA5NTI3MjksIC0wLjk2NTU0OTEwMzE0MjE1MiwgMC4wMTYwMDY4MTQ3ODA3MTAzLCAKLTAuMDU5OTg2NDA4OTc4NTgsIC0wLjE1NTQ2OTE0Mzk0MjM1NywgMC4xMDA4OTUyODM3NzY3MjEsIDAuMDYxOTMyODQ4NTIyNTk4MSwgCi0wLjczNDU1ODc3NTcyNzc2LCAtMC4zMTgzMzUxMDQyOTE0NjUsIDEuMDM4NDg2NDYyMjkwMjcsIDEuMDg1NDEzMzI3NzQ3MDcsIAowLjY5MDUwMTY0NDkzOTQzLCAwLjg1OTYxNjc2MDI4NzMwMSwgMC40MzI0NTI5MDQzNDk0NDEsIDEuMzQ2MzMzNTUxNzQ0NjcsIAoxLjkyODExNzM4ODgwMjA1LCAwLjAxNDc4MjUzMjY1Mjg0MTEsIDAuOTcxMjMxMTYwMjQwMTYxLCAwLjMwNDkzNzYxMTA5NzcyOSwgCi0wLjc3MTU5MzU0OTcxNjA5OSwgLTEuNTM4Mzk2OTAyNjM0NywgLTEuMzA0MDE1MzU5MjU2NzYsIC0wLjY0MDEyNTU2MjY3MTE5NiwgCjEuMTMzOTAzNDgzMDkyNDMsIDAuMDI5NzM2NjIyNzczMjY1NSwgMC43Mzg3OTY4Mjc2ODI5OTcsIDEuOTI1MzM5Nzc3MDA3NzcsIAowLjk4ODI4OTc1MzI0NTcxNCwgMS4wMDk3ODQ0MjM5MzMxMSwgLTAuMjEzNTAzMjYxNzQ0NDI5LCAxLjQ3Nzc0MTYzNTA3MDg3CikpCmBgYApUaGUgdGltZSBzZXJpZXMgeCBzaG93cyBzdHJvbmcgcGVyc2lzdGVuY2UsIG1lYW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgaXMgY2xvc2VseSByZWxhdGl2ZWx5IHRvIHRob3NlIHRoYXQgcHJvY2VlZCBpdC4gVGhlIHRpbWUgc2VyaWVzIHkgc2hvd3MgYSBwZXJpb2RpYyBwYXR0ZXJuIHdpdGggYSBjeWNsZSBsZW5ndGggb2YgYXBwcm94aW1hdGVseSBmb3VyIG9ic2VydmF0aW9ucywgbWVhbmluZyB0aGUgY3VycmVudCB2YWx1ZSBpcyByZWxhdGl2ZWx5IGNsb3NlIHRvIHRoZSBvYnNlcnZhdGlvbiBmb3VyIGJlZm9yZSBpdC4gVGhlIHRpbWUgc2VyaWVzIHogZG9lcyBub3QgZXhoaWJpdCBhbnkgY2xlYXIgcGF0dGVybi4KYGBge3J9CnBsb3QudHMoY2JpbmQoeCwgeSwgeikpCmBgYApJbiB0aGlzIGV4ZXJjaXNlLCB5b3UnbGwgcGxvdCBhbiBlc3RpbWF0ZWQgYXV0b2NvcnJlbGF0aW9uIGZ1bmN0aW9uIGZvciBlYWNoIHRpbWUgc2VyaWVzLiBJbiB0aGUgcGxvdHMgcHJvZHVjZWQgYnkgYWNmKCksIHRoZSBsYWcgZm9yIGVhY2ggYXV0b2NvcnJlbGF0aW9uIGVzdGltYXRlIGlzIGRlbm90ZWQgb24gdGhlIGhvcml6b250YWwgYXhpcyBhbmQgZWFjaCBhdXRvY29ycmVsYXRpb24gZXN0aW1hdGUgaXMgaW5kaWNhdGVkIGJ5IHRoZSBoZWlnaHQgb2YgdGhlIHZlcnRpY2FsIGJhcnMuIFJlY2FsbCB0aGF0IHRoZSBBQ0YgYXQgbGFnLTAgaXMgYWx3YXlzIDEuCgpGaW5hbGx5LCBlYWNoIEFDRiBmaWd1cmUgaW5jbHVkZXMgYSBwYWlyIG9mIGJsdWUsIGhvcml6b250YWwsIGRhc2hlZCBsaW5lcyByZXByZXNlbnRpbmcgbGFnLXdpc2UgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGNlbnRlcmVkIGF0IHplcm8uIFRoZXNlIGFyZSB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9mIGFuIGluZGl2aWR1YWwgYXV0b2NvcnJlbGF0aW9uIGVzdGltYXRlIGF0IGEgZ2l2ZW4gbGFnIHZlcnN1cyBhIG51bGwgdmFsdWUgb2YgemVybywgaS5lLiwgbm8gYXV0b2NvcnJlbGF0aW9uIGF0IHRoYXQgbGFnLgpgYGB7cn0KIyBWaWV3IHRoZSBBQ0Ygb2YgeAphY2YoeCkKCiMgVmlldyB0aGUgQUNGIG9mIHkKYWNmKHkpCgojIFZpZXcgdGhlIEFDRiBvZiB6CmFjZih6KQpgYGAKUGxvdHRpbmcgdGhlIGVzdGltYXRlZCBBQ0Ygb2YgeCBzaG93cyBsYXJnZSBwb3NpdGl2ZSBjb3JyZWxhdGlvbnMgZm9yIHNldmVyYWwgbGFncyB3aGljaCBxdWlja2x5IGRlY2F5IHRvd2FyZHMgemVyby4gUGxvdHRpbmcgdGhlIGVzdGltYXRlZCBBQ0Ygb2YgeSBzaG93cyBsYXJnZSBwb3NpdGl2ZSBjb3JyZWxhdGlvbnMgYXQgbGFncyB3aGljaCBhcmUgbXVsdGlwbGVzIG9mIGZvdXIsIGFsdGhvdWdoIHRoZXNlIGFsc28gZGVjYXkgdG93YXJkcyB6ZXJvIGFzIHRoZSBsYWcgbXVsdGlwbGUgaW5jcmVhc2VzLiBGaW5hbGx5LCB0aGUgZXN0aW1hdGVkIEFDRiBvZiB6IGlzIG5lYXIgemVybyBhdCBhbGwgbGFncy4gSXQgYXBwZWFycyB0aGUgc2VyaWVzIHogaXMgbm90IGxpbmVhcmx5IHJlbGF0ZWQgdG8gaXRzIHBhc3QsIGF0IGxlYXN0IHRocm91Z2ggbGFnIDIwLgoKIyBBdXRvcmVncmVzc2lvbgoKIyMgVGhlIGF1dG9yZWdyZXNzaXZlIG1vZGVsCgojIyMgU2ltdWxhdGUgdGhlIGF1dG9yZWdyZXNzaXZlIG1vZGVsCgpUaGUgYXV0b3JlZ3Jlc3NpdmUgKEFSKSBtb2RlbCBpcyBhcmd1YWJseSB0aGUgbW9zdCB3aWRlbHkgdXNlZCB0aW1lIHNlcmllcyBtb2RlbC4gSXQgc2hhcmVzIHRoZSB2ZXJ5IGZhbWlsaWFyIGludGVycHJldGF0aW9uIG9mIGEgc2ltcGxlIGxpbmVhciByZWdyZXNzaW9uLCBidXQgaGVyZSBlYWNoIG9ic2VydmF0aW9uIGlzIHJlZ3Jlc3NlZCBvbiB0aGUgcHJldmlvdXMgb2JzZXJ2YXRpb24uIFRoZSBBUiBtb2RlbCBhbHNvIGluY2x1ZGVzIHRoZSB3aGl0ZSBub2lzZSAoV04pIGFuZCByYW5kb20gd2FsayAoUlcpIG1vZGVscyBleGFtaW5lZCBpbiBlYXJsaWVyIGNoYXB0ZXJzIGFzIHNwZWNpYWwgY2FzZXMuCgpUaGUgdmVyc2F0aWxlIGFyaW1hLnNpbSgpIGZ1bmN0aW9uIHVzZWQgaW4gcHJldmlvdXMgY2hhcHRlcnMgY2FuIGFsc28gYmUgdXNlZCB0byBzaW11bGF0ZSBkYXRhIGZyb20gYW4gQVIgbW9kZWwgYnkgc2V0dGluZyB0aGUgbW9kZWwgYXJndW1lbnQgZXF1YWwgdG8gbGlzdChhciA9IHBoaSkgLCBpbiB3aGljaCBwaGkgaXMgYSBzbG9wZSBwYXJhbWV0ZXIgZnJvbSB0aGUgaW50ZXJ2YWwgKC0xLCAxKS4gV2UgYWxzbyBuZWVkIHRvIHNwZWNpZnkgYSBzZXJpZXMgbGVuZ3RoIG4uCgpgYGB7cn0KIyBTaW11bGF0ZSBhbiBBUiBtb2RlbCB3aXRoIDAuNSBzbG9wZQp4IDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3QoYXIgPSAwLjUpLCBuID0gMTAwKQoKIyBTaW11bGF0ZSBhbiBBUiBtb2RlbCB3aXRoIDAuOSBzbG9wZQp5IDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3QoYXIgPSAwLjkpLCBuID0gMTAwKQoKIyBTaW11bGF0ZSBhbiBBUiBtb2RlbCB3aXRoIC0wLjc1IHNsb3BlCnogPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChhciA9IC0uNzUpLCBuID0gMTAwKQoKIyBQbG90IHlvdXIgc2ltdWxhdGVkIGRhdGEKcGxvdC50cyhjYmluZCh4LCB5LCB6KSkKYGBgCkFzIHlvdSBjYW4gc2VlLCB5b3VyIHggZGF0YSBzaG93cyBhIGp1c3QgYSBtb2RlcmF0ZSBhbW91bnQgb2YgYXV0b2NvcnJlbGF0aW9uIHdoaWxlIHlvdXIgeSBkYXRhIHNob3dzIGEgbGFyZ2UgYW1vdW50IG9mIGF1dG9jb3JyZWxhdGlvbi4gQWx0ZXJuYXRpdmVseSwgeW91ciB6IGRhdGEgdGVuZHMgdG8gb3NjaWxsYXRlIGNvbnNpZGVyYWJseSBmcm9tIG9uZSBvYnNlcnZhdGlvbiB0byB0aGUgbmV4dC4KCiMjIyBFc3RpbWF0ZSB0aGUgYXV0b2NvcnJlbGF0aW9uIGZ1bmN0aW9uIChBQ0YpIGZvciBhbiBhdXRvcmVncmVzc2lvbgoKV2hhdCBpZiB5b3UgbmVlZCB0byBlc3RpbWF0ZSB0aGUgYXV0b2NvcnJlbGF0aW9uIGZ1bmN0aW9uIGZyb20geW91ciBkYXRhPyBUbyBkbyBzbywgeW91J2xsIG5lZWQgdGhlIGFjZigpIGNvbW1hbmQsIHdoaWNoIGVzdGltYXRlcyBhdXRvY29ycmVsYXRpb24gYnkgZXhwbG9yaW5nIGxhZ3MgaW4geW91ciBkYXRhLiBCeSBkZWZhdWx0LCB0aGlzIGNvbW1hbmQgZ2VuZXJhdGVzIGEgcGxvdCBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGN1cnJlbnQgb2JzZXJ2YXRpb24gYW5kIGxhZ3MgZXh0ZW5kaW5nIGJhY2t3YXJkcy4KCkluIHRoaXMgZXhlcmNpc2UsIHlvdSdsbCB1c2UgdGhlIGFjZigpIGNvbW1hbmQgdG8gZXN0aW1hdGUgdGhlIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbiBmb3IgdGhyZWUgbmV3IHNpbXVsYXRlZCBBUiBzZXJpZXMgKHgsIHksIGFuZCB6KS4gVGhlc2Ugb2JqZWN0cyBoYXZlIHNsb3BlIHBhcmFtZXRlcnMgMC41LCAwLjksIGFuZCAtMC43NS4KCmBgYHtyfQojIENhbGN1bGF0ZSB0aGUgQUNGIGZvciB4CmFjZih4KQoKIyBDYWxjdWxhdGUgdGhlIEFDRiBmb3IgeQphY2YoeSkKCiMgQ2FsY3VsYXRlIHRoZSBBQ0YgZm9yIHoKYWNmKHopCmBgYApUaGUgcGxvdHMgZ2VuZXJhdGVkIGJ5IHRoZSBhY2YoKSBjb21tYW5kIHByb3ZpZGUgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggbGFnIG9mIHlvdXIgdGltZSBzZXJpZXMuIFRoZSBmaXJzdCBzZXJpZXMgeCBoYXMgcG9zaXRpdmUgYXV0b2NvcnJlbGF0aW9uIGZvciB0aGUgZmlyc3QgY291cGxlIGxhZ3MsIGJ1dCB0aGV5IHF1aWNrbHkgYXBwcm9hY2ggemVyby4gVGhlIHNlY29uZCBzZXJpZXMgeSBoYXMgcG9zaXRpdmUgYXV0b2NvcnJlbGF0aW9uIGZvciBtYW55IGxhZ3MsIGJ1dCB0aGV5IGFsc28gZGVjYXkgdG8gemVyby4gVGhlIGxhc3Qgc2VyaWVzIHogaGFzIGFuIGFsdGVybmF0aW5nIHBhdHRlcm4sIGFzIGRvZXMgaXRzIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbiAoQUNGKSwgYnV0IGl0cyBBQ0Ygc3RpbGwgcXVpY2tseSBkZWNheXMgdG8gemVybyBpbiBtYWduaXR1ZGUuCgojIyMgUGVyc2lzdGVuY2UgYW5kIGFudGktcGVyc2lzdGVuY2UKCkF1dG9yZWdyZXNzaXZlIHByb2Nlc3NlcyBjYW4gZXhoaWJpdCB2YXJ5aW5nIGxldmVscyBvZiBwZXJzaXN0ZW5jZSBhcyB3ZWxsIGFzIGFudGktcGVyc2lzdGVuY2Ugb3Igb3NjaWxsYXRvcnkgYmVoYXZpb3IuIFBlcnNpc3RlbmNlIGlzIGRlZmluZWQgYnkgYSBoaWdoIGNvcnJlbGF0aW9uIGJldHdlZW4gYW4gb2JzZXJ2YXRpb24gYW5kIGl0cyBsYWcsIHdoaWxlIGFudGktcGVyc2lzdGVuY2UgaXMgZGVmaW5lZCBieSBhIGxhcmdlIGFtb3VudCBvZiB2YXJpYXRpb24gYmV0d2VlbiBhbiBvYnNlcnZhdGlvbiBhbmQgaXRzIGxhZy4KCiMjIyBDb21wYXJlIHRoZSByYW5kb20gd2FsayAoUlcpIGFuZCBhdXRvcmVncmVzc2l2ZSAoQVIpIG1vZGVscwoKVGhlIHJhbmRvbSB3YWxrIChSVykgbW9kZWwgaXMgYSBzcGVjaWFsIGNhc2Ugb2YgdGhlIGF1dG9yZWdyZXNzaXZlIChBUikgbW9kZWwsIGluIHdoaWNoIHRoZSBzbG9wZSBwYXJhbWV0ZXIgaXMgZXF1YWwgdG8gMS4gUmVjYWxsIGZyb20gcHJldmlvdXMgY2hhcHRlcnMgdGhhdCB0aGUgUlcgbW9kZWwgaXMgbm90IHN0YXRpb25hcnkgYW5kIGV4aGliaXRzIHZlcnkgc3Ryb25nIHBlcnNpc3RlbmNlLiBJdHMgc2FtcGxlIGF1dG9jb3ZhcmlhbmNlIGZ1bmN0aW9uIChBQ0YpIGFsc28gZGVjYXlzIHRvIHplcm8gdmVyeSBzbG93bHksIG1lYW5pbmcgcGFzdCB2YWx1ZXMgaGF2ZSBhIGxvbmcgbGFzdGluZyBpbXBhY3Qgb24gY3VycmVudCB2YWx1ZXMuCgpUaGUgc3RhdGlvbmFyeSBBUiBtb2RlbCBoYXMgYSBzbG9wZSBwYXJhbWV0ZXIgYmV0d2VlbiAtMSBhbmQgMS4gVGhlIEFSIG1vZGVsIGV4aGliaXRzIGhpZ2hlciBwZXJzaXN0ZW5jZSB3aGVuIGl0cyBzbG9wZSBwYXJhbWV0ZXIgaXMgY2xvc2VyIHRvIDEsIGJ1dCB0aGUgcHJvY2VzcyByZXZlcnRzIHRvIGl0cyBtZWFuIGZhaXJseSBxdWlja2x5LiBJdHMgc2FtcGxlIEFDRiBhbHNvIGRlY2F5cyB0byB6ZXJvIGF0IGEgcXVpY2sgKGdlb21ldHJpYykgcmF0ZSwgaW5kaWNhdGluZyB0aGF0IHZhbHVlcyBmYXIgaW4gdGhlIHBhc3QgaGF2ZSBsaXR0bGUgaW1wYWN0IG9uIGZ1dHVyZSB2YWx1ZXMgb2YgdGhlIHByb2Nlc3MuCmBgYHtyfQojIFNpbXVsYXRlIGFuZCBwbG90IEFSIG1vZGVsIHdpdGggc2xvcGUgMC45IAp4IDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3QoYXIgPSAwLjkpLCBuID0gMjAwKQp0cy5wbG90KHgpCmFjZih4KQoKIyBTaW11bGF0ZSBhbmQgcGxvdCBBUiBtb2RlbCB3aXRoIHNsb3BlIDAuOTgKeSA8LSBhcmltYS5zaW0obW9kZWwgPSBsaXN0KGFyID0gMC45OCksIG4gPSAyMDApCnRzLnBsb3QoeSkKYWNmKHkpCgojIFNpbXVsYXRlIGFuZCBwbG90IFJXIG1vZGVsCnogPC1hcmltYS5zaW0obW9kZWwgPSBsaXN0KG9yZGVyID0gYygwLCAxLCAwKSksIG4gPSAyMDApCnRzLnBsb3QoeikKYWNmKHopCmBgYApBcyB5b3UgY2FuIHNlZSwgdGhlIEFSIG1vZGVsIHJlcHJlc2VudGVkIGJ5IHNlcmllcyB5IGV4aGliaXRzIGdyZWF0ZXIgcGVyc2lzdGVuY2UgdGhhbiBzZXJpZXMgeCwgYnV0IHRoZSBBQ0YgY29udGludWVzIHRvIGRlY2F5IHRvIDAuIEJ5IGNvbnRyYXN0LCB0aGUgUlcgbW9kZWwgcmVwcmVzZW50ZWQgYnkgc2VyaWVzIHogc2hvd3MgY29uc2lkZXJhYmxlIHBlcnNpc3RlbmNlIGFuZCByZWxhdGl2ZWx5IGxpdHRsZSBkZWNheSBpbiB0aGUgQUNGLgoKIyMgQVIgbW9kZWwgZXN0aW1hdGlvbiBhbmQgZm9yZWNhc3RpbmcKCiMjIyBFc3RpbWF0ZSB0aGUgYXV0b3JlZ3Jlc3NpdmUgKEFSKSBtb2RlbAoKRm9yIGEgZ2l2ZW4gdGltZSBzZXJpZXMgeCB3ZSBjYW4gZml0IHRoZSBhdXRvcmVncmVzc2l2ZSAoQVIpIG1vZGVsIHVzaW5nIHRoZSBhcmltYSgpIGNvbW1hbmQgYW5kIHNldHRpbmcgb3JkZXIgZXF1YWwgdG8gYygxLCAwLCAwKS4gTm90ZSBmb3IgcmVmZXJlbmNlIHRoYXQgYW4gQVIgbW9kZWwgaXMgYW4gQVJJTUEoMSwgMCwgMCkgbW9kZWwuCgpJbiB0aGlzIGV4ZXJjaXNlLCB5b3UnbGwgZXhwbG9yZSBhZGRpdGlvbmFsIHF1YWxpdGllcyBvZiB0aGUgQVIgbW9kZWwgYnkgcHJhY3RpY2luZyB0aGUgYXJpbWEoKSBjb21tYW5kIG9uIGEgc2ltdWxhdGVkIHRpbWUgc2VyaWVzIHggYXMgd2VsbCBhcyB0aGUgQWlyUGFzc2VuZ2VycyBkYXRhLiBUaGlzIGNvbW1hbmQgYWxsb3dzIHlvdSB0byBpZGVudGlmeSB0aGUgZXN0aW1hdGVkIHNsb3BlIChhcjEpLCBtZWFuIChpbnRlcmNlcHQpLCBhbmQgaW5ub3ZhdGlvbiB2YXJpYW5jZSAoc2lnbWFeMikgb2YgdGhlIG1vZGVsLgoKYGBge3J9CiMgRml0IHRoZSBBUiBtb2RlbCB0byB4CmFyaW1hKHgsIG9yZGVyID0gYygxLCAwLCAwKSkKCiMgQ29weSBhbmQgcGFzdGUgdGhlIHNsb3BlIChhcjEpIGVzdGltYXRlCjAuODk1NAoKIyBDb3B5IGFuZCBwYXN0ZSB0aGUgc2xvcGUgbWVhbiAoaW50ZXJjZXB0KSBlc3RpbWF0ZQotMC4yMDI1CgojIENvcHkgYW5kIHBhc3RlIHRoZSBpbm5vdmF0aW9uIHZhcmlhbmNlIChzaWdtYV4yKSBlc3RpbWF0ZQoxLjA0NgoKIyBGaXQgdGhlIEFSIG1vZGVsIHRvIEFpclBhc3NlbmdlcnMKQVIgPC0gYXJpbWEoQWlyUGFzc2VuZ2Vycywgb3JkZXIgPSBjKDEsIDAsIDApKQpwcmludChBUikKCiMgUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gcGxvdCB0aGUgc2VyaWVzIGFuZCBmaXR0ZWQgdmFsdWVzCnRzLnBsb3QoQWlyUGFzc2VuZ2VycykKQVJfZml0dGVkIDwtIEFpclBhc3NlbmdlcnMgLSByZXNpZHVhbHMoQVIpCnBvaW50cyhBUl9maXR0ZWQsIHR5cGUgPSAibCIsIGNvbCA9IDIsIGx0eSA9IDIpCmBgYApCeSBmaXR0aW5nIGFuIEFSIG1vZGVsIHRvIHRoZSBBaXJQYXNzZW5nZXJzIGRhdGEsIHlvdSd2ZSBzdWNjZXNmdWxseSBtb2RlbGVkIHRoZSBkYXRhIGluIGEgcmVwcm9kdWNpYmxlIGZhc2hpb24uIFRoaXMgYWxsb3dzIHlvdSB0byBwcmVkaWN0IGZ1dHVyZSBvYnNlcnZhdGlvbnMgYmFzZWQgb24geW91ciBBUl9maXR0ZWQgZGF0YS4KCiMjIyBTaW1wbGUgZm9yZWNhc3RzIGZyb20gYW4gZXN0aW1hdGVkIEFSIG1vZGUKCk5vdyB0aGF0IHlvdSd2ZSBtb2RlbGVkIHlvdXIgZGF0YSB1c2luZyB0aGUgYXJpbWEoKSBjb21tYW5kLCB5b3UgYXJlIHJlYWR5IHRvIG1ha2Ugc2ltcGxlIGZvcmVjYXN0cyBiYXNlZCBvbiB5b3VyIG1vZGVsLiBUaGUgcHJlZGljdCgpIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIG1ha2UgZm9yZWNhc3RzIGZyb20gYW4gZXN0aW1hdGVkIEFSIG1vZGVsLiBJbiB0aGUgb2JqZWN0IGdlbmVyYXRlZCBieSB5b3VyIHByZWRpY3QoKSBjb21tYW5kLCB0aGUgXCRwcmVkIHZhbHVlIGlzIHRoZSBmb3JlY2FzdCwgYW5kIHRoZSBcJHNlIHZhbHVlIGlzIHRoZSBzdGFuZGFyZCBlcnJvciBmb3IgdGhlIGZvcmVjYXN0LgoKVG8gbWFrZSBwcmVkaWN0aW9ucyBmb3Igc2V2ZXJhbCBwZXJpb2RzIGJleW9uZCB0aGUgbGFzdCBvYnNlcnZhdGlvbnMsIHlvdSBjYW4gdXNlIHRoZSBuLmFoZWFkIGFyZ3VtZW50IGluIHlvdXIgcHJlZGljdCgpIGNvbW1hbmQuIFRoaXMgYXJndW1lbnQgZXN0YWJsaXNoZXMgdGhlIGZvcmVjYXN0IGhvcml6b24gKGgpLCBvciB0aGUgbnVtYmVyIG9mIHBlcmlvZHMgYmVpbmcgZm9yZWNhc3QuIFRoZSBmb3JlY2FzdHMgYXJlIG1hZGUgcmVjdXJzaXZlbHkgZnJvbSAxIHRvIGgtc3RlcHMgYWhlYWQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvYnNlcnZlZCB0aW1lIHNlcmllcy4KCkluIHRoaXMgZXhlcmNpc2UsIHlvdSdsbCBtYWtlIHNpbXBsZSBmb3JlY2FzdHMgdXNpbmcgYW4gQVIgbW9kZWwgYXBwbGllZCB0byB0aGUgTmlsZSBkYXRhLCB3aGljaCByZWNvcmRzIGFubnVhbCBvYnNlcnZhdGlvbnMgb2YgdGhlIGZsb3cgb2YgdGhlIFJpdmVyIE5pbGUgZnJvbSAxODcxIHRvIDE5NzAuCgpgYGB7cn0KIyBGaXQgYW4gQVIgbW9kZWwgdG8gTmlsZQpBUl9maXQgPC0gYXJpbWEoTmlsZSwgb3JkZXIgID0gYygxLCAwLCAwKSkKcHJpbnQoQVJfZml0KQoKIyBVc2UgcHJlZGljdCgpIHRvIG1ha2UgYSAxLXN0ZXAgZm9yZWNhc3QKcHJlZGljdF9BUiA8LSBwcmVkaWN0KEFSX2ZpdCkKCiMgT2J0YWluIHRoZSAxLXN0ZXAgZm9yZWNhc3QgdXNpbmcgJHByZWRbMV0KcHJlZGljdF9BUiRwcmVkWzFdCgojIFVzZSBwcmVkaWN0IHRvIG1ha2UgMS1zdGVwIHRocm91Z2ggMTAtc3RlcCBmb3JlY2FzdHMKcHJlZGljdChBUl9maXQsIG4uYWhlYWQgPSAxMCkKCiMgUnVuIHRvIHBsb3QgdGhlIE5pbGUgc2VyaWVzIHBsdXMgdGhlIGZvcmVjYXN0IGFuZCA5NSUgcHJlZGljdGlvbiBpbnRlcnZhbHMKdHMucGxvdChOaWxlLCB4bGltID0gYygxODcxLCAxOTgwKSkKQVJfZm9yZWNhc3QgPC0gcHJlZGljdChBUl9maXQsIG4uYWhlYWQgPSAxMCkkcHJlZApBUl9mb3JlY2FzdF9zZSA8LSBwcmVkaWN0KEFSX2ZpdCwgbi5haGVhZCA9IDEwKSRzZQpwb2ludHMoQVJfZm9yZWNhc3QsIHR5cGUgPSAibCIsIGNvbCA9IDIpCnBvaW50cyhBUl9mb3JlY2FzdCAtIDIqQVJfZm9yZWNhc3Rfc2UsIHR5cGUgPSAibCIsIGNvbCA9IDIsIGx0eSA9IDIpCnBvaW50cyhBUl9mb3JlY2FzdCArIDIqQVJfZm9yZWNhc3Rfc2UsIHR5cGUgPSAibCIsIGNvbCA9IDIsIGx0eSA9IDIpCmBgYApZb3VyIHByZWRpY3Rpb25zIG9mIFJpdmVyIE5pbGUgZmxvdyBmcm9tIDE5NzEgdG8gMTk4MCBtYWtlIHNlbnNlIGJhc2VkIG9uIHRoZSBkYXRhIHlvdSBoYXZlLiBUaGUgcmVsYXRpdmVseSB3aWRlIGJhbmQgb2YgY29uZmlkZW5jZSAocmVwcmVzZW50ZWQgYnkgdGhlIGRvdHRlZCBsaW5lcykgaXMgYSByZXN1bHQgb2YgdGhlIGxvdyBwZXJzaXN0ZW5jZSBpbiB5b3VyIE5pbGUgZGF0YS4KCiMjIFRoZSBzaW1wbGUgbW92aW5nIGF2ZXJhZ2UgbW9kZWwKCiMjIyBTaW11bGF0ZSB0aGUgc2ltcGxlIG1vdmluZyBhdmVyYWdlIG1vZGVsCgpUaGUgc2ltcGxlIG1vdmluZyBhdmVyYWdlIChNQSkgbW9kZWwgaXMgYSBwYXJzaW1vbmlvdXMgdGltZSBzZXJpZXMgbW9kZWwgdXNlZCB0byBhY2NvdW50IGZvciB2ZXJ5IHNob3J0LXJ1biBhdXRvY29ycmVsYXRpb24uIEl0IGRvZXMgaGF2ZSBhIHJlZ3Jlc3Npb24gbGlrZSBmb3JtLCBidXQgaGVyZSBlYWNoIG9ic2VydmF0aW9uIGlzIHJlZ3Jlc3NlZCBvbiB0aGUgcHJldmlvdXMgaW5ub3ZhdGlvbiwgd2hpY2ggaXMgbm90IGFjdHVhbGx5IG9ic2VydmVkLiBMaWtlIHRoZSBhdXRvcmVncmVzc2l2ZSAoQVIpIG1vZGVsLCB0aGUgTUEgbW9kZWwgaW5jbHVkZXMgdGhlIHdoaXRlIG5vaXNlIChXTikgbW9kZWwgYXMgc3BlY2lhbCBjYXNlLgoKQXMgd2l0aCBwcmV2aW91cyBtb2RlbHMsIHRoZSBNQSBtb2RlbCBjYW4gYmUgc2ltdWxhdGVkIHVzaW5nIHRoZSBhcmltYS5zaW0oKSBjb21tYW5kIGJ5IHNldHRpbmcgdGhlIG1vZGVsIGFyZ3VtZW50IHRvIGxpc3QobWEgPSB0aGV0YSksIHdoZXJlIHRoZXRhIGlzIGEgc2xvcGUgcGFyYW1ldGVyIGZyb20gdGhlIGludGVydmFsICgtMSwgMSkuIE9uY2UgYWdhaW4sIHlvdSBhbHNvIG5lZWQgdG8gc3BlY2lmY3kgdGhlIHNlcmllcyBsZW5ndGggdXNpbmcgdGhlIG4gYXJndW1lbnQuCmBgYHtyfQojIEdlbmVyYXRlIE1BIG1vZGVsIHdpdGggc2xvcGUgMC41CnggPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChtYSA9IDAuNSksIG4gPSAxMDApCgojIEdlbmVyYXRlIE1BIG1vZGVsIHdpdGggc2xvcGUgMC45CnkgPC0gYXJpbWEuc2ltKG1vZGVsID0gbGlzdChtYSA9IDAuOSksIG4gPSAxMDApCgojIEdlbmVyYXRlIE1BIG1vZGVsIHdpdGggc2xvcGUgLTAuNQp6IDwtIGFyaW1hLnNpbShtb2RlbCA9IGxpc3QobWEgPSAtMC41KSwgbiA9IDEwMCkKCiMgUGxvdCBhbGwgdGhyZWUgbW9kZWxzIHRvZ2V0aGVyCnBsb3QudHMoY2JpbmQoeCwgeSwgeikpCmBgYAogTm90ZSB0aGF0IHRoZXJlIGlzIHNvbWUgdmVyeSBzaG9ydC1ydW4gcGVyc2lzdGVuY2UgZm9yIHRoZSBwb3NpdGl2ZSBzbG9wZSB2YWx1ZXMgKHggYW5kIHkpLCBhbmQgdGhlIHNlcmllcyBoYXMgYSB0ZW5kZW5jeSB0byBhbHRlcm5hdGUgd2hlbiB0aGUgc2xvcGUgdmFsdWUgaXMgbmVnYXRpdmUgKHopLgoKIyMjIEVzdGltYXRlIHRoZSBhdXRvY29ycmVsYXRpb24gZnVuY3Rpb24gKEFDRikgZm9yIGEgbW92aW5nIGF2ZXJhZ2UKCk5vdyB0aGF0IHlvdSd2ZSBzaW11bGF0ZWQgc29tZSBNQSBkYXRhIHVzaW5nIHRoZSBhcmltYS5zaW0oKSBjb21tYW5kLCB5b3UgbWF5IHdhbnQgdG8gZXN0aW1hdGUgdGhlIGF1dG9jb3JyZWxhdGlvbiBmdW5jdGlvbnMgKEFDRikgZm9yIHlvdXIgZGF0YS4gQXMgaW4gdGhlIHByZXZpb3VzIGNoYXB0ZXIsIHlvdSBjYW4gdXNlIHRoZSBhY2YoKSBjb21tYW5kIHRvIGdlbmVyYXRlIHBsb3RzIG9mIHRoZSBhdXRvY29ycmVsYXRpb24gaW4geW91ciBNQSBkYXRhLgoKSW4gdGhpcyBleGVyY2lzZSwgeW91J2xsIHVzZSBhY2YoKSB0byBlc3RpbWF0ZSB0aGUgQUNGIGZvciB0aHJlZSBzaW11bGF0ZWQgTUEgc2VyaWVzLCB4LCB5LCBhbmQgei4gVGhlc2Ugc2VyaWVzIGhhdmUgc2xvcGUgcGFyYW1ldGVycyBvZiAwLjQsIDAuOSwgYW5kIC0wLjc1LCByZXNwZWN0aXZlbHksIGFuZCBhcmUgc2hvd24gaW4gdGhlIGZpZ3VyZSBvbiB0aGUgcmlnaHQuCgpgYGB7cn0KIyBDYWxjdWxhdGUgQUNGIGZvciB4CmFjZih4KQoKIyBDYWxjdWxhdGUgQUNGIGZvciB5CmFjZih5KQoKIyBDYWxjdWxhdGUgQUNGIGZvciB6CmFjZih6KQpgYGAKQXMgeW91IGNhbiBzZWUgZnJvbSB5b3VyIEFDRiBwbG90cywgdGhlIHNlcmllcyB4IGhhcyBwb3NpdGl2ZSBzYW1wbGUgYXV0b2NvcnJlbGF0aW9uIGF0IHRoZSBmaXJzdCBsYWcsIGJ1dCBpdCBpcyBhcHByb3hpbWF0ZWx5IHplcm8gYXQgb3RoZXIgbGFncy4gVGhlIHNlcmllcyB5IGhhcyBhIGxhcmdlciBzYW1wbGUgYXV0b2NvcnJlbGF0aW9uIGF0IGl0cyBmaXJzdCBsYWcsIGJ1dCBpdCBpcyBhbHNvIGFwcHJveGltYXRlbHkgemVybyBmb3IgdGhlIG90aGVycy4gVGhlIHNlcmllcyB6IGhhcyBhbiBhbHRlcm5hdGluZyBwYXR0ZXJuLCBhbmQgaXRzIHNhbXBsZSBhdXRvY29ycmVsYXRpb24gaXMgbmVnYXRpdmUgYXQgdGhlIGZpcnN0IGxhZy4gSG93ZXZlciwgc2ltaWxhciB0byB0aGUgb3RoZXJzLCBpdCBpcyBhcHByb3hpbWF0ZWx5IHplcm8gZm9yIGFsbCBoaWdoZXIgbGFncy4KCiMjIE1BIG1vZGVsIGVzdGltYXRpb24gYW5kIGZvcmVjYXN0aW5nCgojIyMgRXN0aW1hdGUgdGhlIHNpbXBsZSBtb3ZpbmcgYXZlcmFnZSBtb2RlbAoKTm93IHRoYXQgeW91J3ZlIHNpbXVsYXRlZCBzb21lIE1BIG1vZGVscyBhbmQgY2FsY3VsYXRlZCB0aGUgQUNGIGZyb20gdGhlc2UgbW9kZWxzLCB5b3VyIG5leHQgc3RlcCBpcyB0byBmaXQgdGhlIHNpbXBsZSBtb3ZpbmcgYXZlcmFnZSAoTUEpIG1vZGVsIHRvIHNvbWUgZGF0YSB1c2luZyB0aGUgYXJpbWEoKSBjb21tYW5kLiBGb3IgYSBnaXZlbiB0aW1lIHNlcmllcyB4IHdlIGNhbiBmaXQgdGhlIHNpbXBsZSBtb3ZpbmcgYXZlcmFnZSAoTUEpIG1vZGVsIHVzaW5nIGFyaW1hKC4uLiwgb3JkZXIgPSBjKDAsIDAsIDEpKS4gTm90ZSBmb3IgcmVmZXJlbmNlIHRoYXQgYW4gTUEgbW9kZWwgaXMgYW4gQVJJTUEoMCwgMCwgMSkgbW9kZS4KYGBge3J9CiMgRml0IHRoZSBNQSBtb2RlbCB0byB4CmFyaW1hKHgsIG9yZGVyID0gYygwLCAwLCAxKSkKCiMgUGFzdGUgdGhlIHNsb3BlIChtYTEpIGVzdGltYXRlIGJlbG93CjAuNzkyOAoKIyBQYXN0ZSB0aGUgc2xvcGUgbWVhbiAoaW50ZXJjZXB0KSBlc3RpbWF0ZSBiZWxvdwowLjE1ODkKCiMgUGFzdGUgdGhlIGlubm92YXRpb24gdmFyaWFuY2UgKHNpZ21hXjIpIGVzdGltYXRlIGJlbG93CjAuOTU3NgoKIyBGaXQgdGhlIE1BIG1vZGVsIHRvIE5pbGUKTUEgPC0gYXJpbWEoTmlsZSwgb3JkZXIgPSBjKDAsIDAsIDEpKQpwcmludChNQSkKCiMgUGxvdCBOaWxlIGFuZCBNQV9maXQgCnRzLnBsb3QoTmlsZSkKTUFfZml0IDwtIE5pbGUgLSByZXNpZChNQSkKcG9pbnRzKE1BX2ZpdCwgdHlwZSA9ICJsIiwgY29sID0gMiwgbHR5ID0gMikKYGBgCkJ5IGZpdHRpbmcgYW4gTUEgbW9kZWwgdG8geW91ciBOaWxlIGRhdGEsIHlvdSdyZSBhYmxlIHRvIGNhcHR1cmUgdmFyaWF0aW9uIGluIHRoZSBkYXRhIGZvciBmdXR1cmUgcHJlZGljdGlvbi4gQmFzZWQgb24gdGhlIHBsb3QgeW91J3ZlIGdlbmVyYXRlZCwgZG9lcyB0aGUgTUEgbW9kZWwgYXBwZWFyIHRvIGJlIGEgc3Ryb25nIGZpdCBmb3IgdGhlIE5pbGUgZGF0YT8KCiMjIyBTaW1wbGUgZm9yZWNhc3RzIGZyb20gYW4gZXN0aW1hdGVkIE1BIG1vZGVsCgpOb3cgdGhhdCB5b3UndmUgZXN0aW1hdGVkIGEgTUEgbW9kZWwgd2l0aCB5b3VyIE5pbGUgZGF0YSwgdGhlIG5leHQgc3RlcCBpcyB0byBkbyBzb21lIHNpbXBsZSBmb3JlY2FzdGluZyB3aXRoIHlvdXIgbW9kZWwuIEFzIHdpdGggb3RoZXIgdHlwZXMgb2YgbW9kZWxzLCB5b3UgY2FuIHVzZSB0aGUgcHJlZGljdCgpIGZ1bmN0aW9uIHRvIG1ha2Ugc2ltcGxlIGZvcmVjYXN0cyBmcm9tIHlvdXIgZXN0aW1hdGVkIE1BIG1vZGVsLiBSZWNhbGwgdGhhdCB0aGUgXCRwcmVkIHZhbHVlIGlzIHRoZSBmb3JlY2FzdCwgd2hpbGUgdGhlIFwkc2UgdmFsdWUgaXMgYSBzdGFuZGFyZCBlcnJvciBmb3IgdGhhdCBmb3JlY2FzdCwgZWFjaCBvZiB3aGljaCBpcyBiYXNlZCBvbiB0aGUgZml0dGVkIE1BIG1vZGVsLgoKT25jZSBhZ2FpbiwgdG8gbWFrZSBwcmVkaWN0aW9ucyBmb3Igc2V2ZXJhbCBwZXJpb2RzIGJleW9uZCB0aGUgbGFzdCBvYnNlcnZhdGlvbiB5b3UgY2FuIHVzZSB0aGUgbi5haGVhZCA9IGggYXJndW1lbnQgaW4geW91ciBjYWxsIHRvIHByZWRpY3QoKS4gVGhlIGZvcmVjYXN0cyBhcmUgbWFkZSByZWN1cnNpdmVseSBmcm9tIDEgdG8gaC1zdGVwcyBhaGVhZCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9ic2VydmVkIHRpbWUgc2VyaWVzLiBIb3dldmVyLCBub3RlIHRoYXQgZXhjZXB0IGZvciB0aGUgMS1zdGVwIGZvcmVjYXN0LCBhbGwgZm9yZWNhc3RzIGZyb20gdGhlIE1BIG1vZGVsIGFyZSBlcXVhbCB0byB0aGUgZXN0aW1hdGVkIG1lYW4gKGludGVyY2VwdCkuCgpgYGB7cn0KIyBNYWtlIGEgMS1zdGVwIGZvcmVjYXN0IGJhc2VkIG9uIE1BCnByZWRpY3RfTUEgPC0gcHJlZGljdChNQSkKCiMgT2J0YWluIHRoZSAxLXN0ZXAgZm9yZWNhc3QgdXNpbmcgJHByZWRbMV0KcHJlZGljdF9NQSRwcmVkWzFdCgojIE1ha2UgYSAxLXN0ZXAgdGhyb3VnaCAxMC1zdGVwIGZvcmVjYXN0IGJhc2VkIG9uIE1BCnByZWRpY3QoTUEsIG4uYWhlYWQgPSAxMCkKCiMgUGxvdCB0aGUgTmlsZSBzZXJpZXMgcGx1cyB0aGUgZm9yZWNhc3QgYW5kIDk1JSBwcmVkaWN0aW9uIGludGVydmFscwp0cy5wbG90KE5pbGUsIHhsaW0gPSBjKDE4NzEsIDE5ODApKQpNQV9mb3JlY2FzdHMgPC0gcHJlZGljdChNQSwgbi5haGVhZCA9IDEwKSRwcmVkCk1BX2ZvcmVjYXN0X3NlIDwtIHByZWRpY3QoTUEsIG4uYWhlYWQgPSAxMCkkc2UKcG9pbnRzKE1BX2ZvcmVjYXN0cywgdHlwZSA9ICJsIiwgY29sID0gMikKcG9pbnRzKE1BX2ZvcmVjYXN0cyAtIDIqTUFfZm9yZWNhc3Rfc2UsIHR5cGUgPSAibCIsIGNvbCA9IDIsIGx0eSA9IDIpCnBvaW50cyhNQV9mb3JlY2FzdHMgKyAyKk1BX2ZvcmVjYXN0X3NlLCB0eXBlID0gImwiLCBjb2wgPSAyLCBsdHkgPSAyKQpgYGAKTm90ZSB0aGF0IHRoZSBNQSBtb2RlbCBjYW4gb25seSBwcm9kdWNlIGEgMS1zdGVwIGZvcmVjYXN0LiBGb3IgYWRkaXRpb25hbCBmb3JlY2FzdGluZyBwZXJpb2RzLCB0aGUgcHJlZGljdCgpIGNvbW1hbmQgc2ltcGx5IGV4dGVuZHMgdGhlIG9yaWdpbmFsIDEtc3RlcCBmb3JlY2FzdC4gVGhpcyBleHBsYWlucyB0aGUgdW5leHBlY3RlZCBob3Jpem9udGFsIGxpbmVzIGFmdGVyIDE5NzEuCgojIyBDb21wYXJlIEFSIGFuZCBNQSBtb2RlbHMKCiMjIyBBUiB2cyBNQSBtb2RlbHMKCkFzIHlvdSd2ZSBzZWVuLCBhdXRvcmVncmVzc2l2ZSAoQVIpIGFuZCBzaW1wbGUgbW92aW5nIGF2ZXJhZ2UgKE1BKSBhcmUgdHdvIHVzZWZ1bCBhcHByb2FjaGVzIHRvIG1vZGVsaW5nIHRpbWUgc2VyaWVzLiBCdXQgaG93IGNhbiB5b3UgZGV0ZXJtaW5lIHdoZXRoZXIgYW4gQVIgb3IgTUEgbW9kZWwgaXMgbW9yZSBhcHByb3ByaWF0ZSBpbiBwcmFjdGljZT8KClRvIGRldGVybWluZSBtb2RlbCBmaXQsIHlvdSBjYW4gbWVhc3VyZSB0aGUgQWthaWtlIGluZm9ybWF0aW9uIGNyaXRlcmlvbiAoQUlDKSBhbmQgQmF5ZXNpYW4gaW5mb3JtYXRpb24gY3JpdGVyaW9uIChCSUMpIGZvciBlYWNoIG1vZGVsLiBXaGlsZSB0aGUgbWF0aCB1bmRlcmx5aW5nIHRoZSBBSUMgYW5kIEJJQyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgY291cnNlLCBmb3IgeW91ciBwdXJwb3NlcyB0aGUgbWFpbiBpZGVhIGlzIHRoZXNlIHRoZXNlIGluZGljYXRvcnMgcGVuYWxpemUgbW9kZWxzIHdpdGggbW9yZSBlc3RpbWF0ZWQgcGFyYW1ldGVycywgdG8gYXZvaWQgb3ZlcmZpdHRpbmcsIGFuZCBzbWFsbGVyIHZhbHVlcyBhcmUgcHJlZmVycmVkLiBBbGwgZmFjdG9ycyBiZWluZyBlcXVhbCwgYSBtb2RlbCB0aGF0IHByb2R1Y2VzIGEgbG93ZXIgQUlDIG9yIEJJQyB0aGFuIGFub3RoZXIgbW9kZWwgaXMgY29uc2lkZXJlZCBhIGJldHRlciBmaXQuCgpUbyBlc3RpbWF0ZSB0aGVzZSBpbmRpY2F0b3JzLCB5b3UgY2FuIHVzZSB0aGUgQUlDKCkgYW5kIEJJQygpIGNvbW1hbmRzLCBib3RoIG9mIHdoaWNoIHJlcXVpcmUgYSBzaW5nbGUgYXJndW1lbnQgdG8gc3BlY2lmeSB0aGUgbW9kZWwgaW4gcXVlc3Rpb24uCgpJbiB0aGlzIGV4ZXJjaXNlLCB5b3UnbGwgcmV0dXJuIHRvIHRoZSBOaWxlIGRhdGEgYW5kIHRoZSBBUiBhbmQgTUEgbW9kZWxzIHlvdSBmaXR0ZWQgdG8gdGhpcyBkYXRhLiBUaGVzZSBtb2RlbHMgYW5kIHRoZWlyIHByZWRpY3Rpb25zIGZvciB0aGUgMTk3MHMgKEFSX2ZpdCkgYW5kIChNQV9maXQpIGFyZSBkZXBpY3RlZCBpbiB0aGUgcGxvdCBvbiB0aGUgcmlnaHQuCmBgYHtyfQpBUiA8LSBhcmltYShOaWxlLCBvcmRlciA9IGMoMSwgMCwgMCkpCk1BIDwtIGFyaW1hKE5pbGUsIG9yZGVyID0gYygwLCAwLCAxKSkKCgpBUl9maXQgPC0gTmlsZSAtIHJlc2lkKEFSKQpNQV9maXQgPC0gTmlsZSAtIHJlc2lkKE1BKQojIEZpbmQgY29ycmVsYXRpb24gYmV0d2VlbiBBUl9maXQgYW5kIE1BX2ZpdApjb3IoQVJfZml0LCBNQV9maXQpCgojIEZpbmQgQUlDIG9mIEFSCkFJQyhBUikKCiMgRmluZCBBSUMgb2YgTUEKQUlDKE1BKQoKIyBGaW5kIEJJQyBvZiBBUgpCSUMoQVIpCgojIEZpbmQgQklDIG9mIE1BCkJJQyhNQSkKYGBgCkFsdGhvdWdoIHRoZSBwcmVkaWN0aW9ucyBmcm9tIGJvdGggbW9kZWxzIGFyZSB2ZXJ5IHNpbWlsYXIgKGluZGVlZCwgdGhleSBoYXZlIGEgY29ycmVsYXRpb24gY29lZmZpaWNlbnQgb2YgMC45NCksIGJvdGggdGhlIEFJQyBhbmQgQklDIGluZGljYXRlIHRoYXQgdGhlIEFSIG1vZGVsIGlzIGEgc2xpZ2h0bHkgYmV0dGVyIGZpdCBmb3IgeW91ciBOaWxlIGRhdGEuCg==