Importar librerias

library(readr)
## Warning: package 'readr' was built under R version 4.3.1
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.1
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(cluster)

Importar Dataset

df <- read.csv("C:\\Users\\naila\\OneDrive\\Documentos\\1 TEC\\5 QUINTO SEMESTRE\\Minería de datos\\Datos bienes y raices CDMXF 1.csv")
#print(df)

Data preprocessing

# Convert categorical variables to numeric
df <- df %>%
  mutate_at(vars(Cocina_equip, Gimnasio, Amueblado, Alberca, Terraza, Elevador), ~ifelse(. == "Si", 1, 0))

# Convert to numeric
df$Estacionamiento <- as.numeric(df$Estacionamiento)
## Warning: NAs introducidos por coerción
df$Alcaldia_numeric <- as.numeric(factor(df$Alcaldia))
df$Colonia_numeric <- as.numeric(factor(df$Colonia))

# Check for missing values and handle if necessary
print(colSums(is.na(df)))
##         Alcaldia          Colonia               X1               X2 
##                0                0                0                0 
##               X3               X4               X5               X6 
##                0                0                0                0 
##               X7               X8               X9              X10 
##                0                0                0                0 
##     Cocina_equip         Gimnasio        Amueblado          Alberca 
##                0                0                0                0 
##          Terraza         Elevador    m2_construido            Banos 
##                0                0                0                0 
##        Recamaras  Estacionamiento           Precio Alcaldia_numeric 
##                0                1                0                0 
##  Colonia_numeric 
##                0
# Handle missing values if needed
df <- na.omit(df)

# Check again for NA's
print(colSums(is.na(df)))
##         Alcaldia          Colonia               X1               X2 
##                0                0                0                0 
##               X3               X4               X5               X6 
##                0                0                0                0 
##               X7               X8               X9              X10 
##                0                0                0                0 
##     Cocina_equip         Gimnasio        Amueblado          Alberca 
##                0                0                0                0 
##          Terraza         Elevador    m2_construido            Banos 
##                0                0                0                0 
##        Recamaras  Estacionamiento           Precio Alcaldia_numeric 
##                0                0                0                0 
##  Colonia_numeric 
##                0
# Example: Create a new variable representing the total number of amenities
df$Total_Amenities <- rowSums(df[, c("Cocina_equip", "Gimnasio", "Amueblado", "Alberca", "Terraza", "Elevador")])

# Standardize numeric variables
numeric_columns <- df %>% select_if(is.numeric)
df_scaled <- scale(numeric_columns)

Clustering

# Perform k-means clustering
set.seed(123)
k <- 4  # choose the number of clusters based on your analysis
kmeans_result <- kmeans(df_scaled, centers = k)
df$Cluster <- as.factor(kmeans_result$cluster)
numeric_columns$Cluster <- as.numeric(kmeans_result$cluster)

# Analyze the characteristics of each cluster
cluster_summary_numeric <- numeric_columns %>% group_by(Cluster) %>% summarise_all(mean)
print(cluster_summary_numeric) # cluster with only numeric variables
## # A tibble: 4 × 25
##   Cluster    X1    X2    X3    X4    X5    X6    X7     X8    X9   X10
##     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1       1 1.53   5.20  44.8  19.6  28.2  3.94 0.577 0.0998  9.34  47.5
## 2       2 0.765  5.81  36.4  11.6  22.4  1.50 0.152 0.0315  5.54  26.3
## 3       3 1.30   5.61  42.1  17.1  24.0  3.17 0.480 0.0434  6.70  35.7
## 4       4 1.99   4.70  45.7  20.3  30.5  5.61 5.48  0.151   8.69  48.3
## # ℹ 14 more variables: Cocina_equip <dbl>, Gimnasio <dbl>, Amueblado <dbl>,
## #   Alberca <dbl>, Terraza <dbl>, Elevador <dbl>, m2_construido <dbl>,
## #   Banos <dbl>, Recamaras <dbl>, Estacionamiento <dbl>, Precio <dbl>,
## #   Alcaldia_numeric <dbl>, Colonia_numeric <dbl>, Total_Amenities <dbl>
cluster_summary_numeric$Alcaldia_numeric <-  round(cluster_summary_numeric$Alcaldia_numeric)
cluster_summary_numeric$Colonia_numeric <- round(cluster_summary_numeric$Colonia_numeric)
cluster_summary_numeric$Total_Amenities <- round(cluster_summary_numeric$Total_Amenities)
print(cluster_summary_numeric)
## # A tibble: 4 × 25
##   Cluster    X1    X2    X3    X4    X5    X6    X7     X8    X9   X10
##     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1       1 1.53   5.20  44.8  19.6  28.2  3.94 0.577 0.0998  9.34  47.5
## 2       2 0.765  5.81  36.4  11.6  22.4  1.50 0.152 0.0315  5.54  26.3
## 3       3 1.30   5.61  42.1  17.1  24.0  3.17 0.480 0.0434  6.70  35.7
## 4       4 1.99   4.70  45.7  20.3  30.5  5.61 5.48  0.151   8.69  48.3
## # ℹ 14 more variables: Cocina_equip <dbl>, Gimnasio <dbl>, Amueblado <dbl>,
## #   Alberca <dbl>, Terraza <dbl>, Elevador <dbl>, m2_construido <dbl>,
## #   Banos <dbl>, Recamaras <dbl>, Estacionamiento <dbl>, Precio <dbl>,
## #   Alcaldia_numeric <dbl>, Colonia_numeric <dbl>, Total_Amenities <dbl>
cluster_summary <- df %>% group_by(Cluster) %>% summarise_all(mean)
## Warning: There were 8 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `Alcaldia = (function (x, ...) ...`.
## ℹ In group 1: `Cluster = 1`.
## Caused by warning in `mean.default()`:
## ! argument is not numeric or logical: returning NA
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 7 remaining warnings.
print(cluster_summary) # cluster with categorical variables
## # A tibble: 4 × 27
##   Cluster Alcaldia Colonia    X1    X2    X3    X4    X5    X6    X7     X8
##   <fct>      <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 1             NA      NA 1.53   5.20  44.8  19.6  28.2  3.94 0.577 0.0998
## 2 2             NA      NA 0.765  5.81  36.4  11.6  22.4  1.50 0.152 0.0315
## 3 3             NA      NA 1.30   5.61  42.1  17.1  24.0  3.17 0.480 0.0434
## 4 4             NA      NA 1.99   4.70  45.7  20.3  30.5  5.61 5.48  0.151 
## # ℹ 16 more variables: X9 <dbl>, X10 <dbl>, Cocina_equip <dbl>, Gimnasio <dbl>,
## #   Amueblado <dbl>, Alberca <dbl>, Terraza <dbl>, Elevador <dbl>,
## #   m2_construido <dbl>, Banos <dbl>, Recamaras <dbl>, Estacionamiento <dbl>,
## #   Precio <dbl>, Alcaldia_numeric <dbl>, Colonia_numeric <dbl>,
## #   Total_Amenities <dbl>
cluster_summary$Alcaldia_numeric <-  round(cluster_summary$Alcaldia_numeric)
cluster_summary$Colonia_numeric <- round(cluster_summary$Colonia_numeric)
cluster_summary$Total_Amenities <- round(cluster_summary$Total_Amenities)
print(cluster_summary)
## # A tibble: 4 × 27
##   Cluster Alcaldia Colonia    X1    X2    X3    X4    X5    X6    X7     X8
##   <fct>      <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 1             NA      NA 1.53   5.20  44.8  19.6  28.2  3.94 0.577 0.0998
## 2 2             NA      NA 0.765  5.81  36.4  11.6  22.4  1.50 0.152 0.0315
## 3 3             NA      NA 1.30   5.61  42.1  17.1  24.0  3.17 0.480 0.0434
## 4 4             NA      NA 1.99   4.70  45.7  20.3  30.5  5.61 5.48  0.151 
## # ℹ 16 more variables: X9 <dbl>, X10 <dbl>, Cocina_equip <dbl>, Gimnasio <dbl>,
## #   Amueblado <dbl>, Alberca <dbl>, Terraza <dbl>, Elevador <dbl>,
## #   m2_construido <dbl>, Banos <dbl>, Recamaras <dbl>, Estacionamiento <dbl>,
## #   Precio <dbl>, Alcaldia_numeric <dbl>, Colonia_numeric <dbl>,
## #   Total_Amenities <dbl>

Sets de Entrenamiento y de Evaluacion

# Split data into training and testing sets
set.seed(123)
train_indices <- sample(1:nrow(numeric_columns), 0.8 * nrow(numeric_columns))
train_data <- numeric_columns[train_indices, ]
test_data <- numeric_columns[-train_indices, ]

# Fit a linear regression model
model <- lm(Precio ~ ., data = train_data)

Predicciones

# Make predictions on the test set
predictions <- predict(model, numeric_columns = test_data)

# Evaluate the model
rmse <- sqrt(mean((predictions - test_data$Precio)^2))
## Warning in predictions - test_data$Precio: longitud de objeto mayor no es
## múltiplo de la longitud de uno menor
print(paste("Root Mean Squared Error:", rmse))
## [1] "Root Mean Squared Error: 6322.4724217328"
# Example: Predict property values for a new data point
new_property <- data.frame(
  Alcaldia_numeric = 2,
  Colonia_numeric = 5,
  Total_Amenities = 2,
  Cocina_equip = 1,
  Gimnasio = 0,
  Amueblado = 1,
  Alberca = 1,
  Terraza = 0,
  Elevador = 1,
  m2_construido = 200,
  Banos = 2,
  Recamaras = 3,
  Estacionamiento = 2,
  Cluster = 3  # Assign the cluster based on your analysis
)

predicted_value <- predict(model, numeric_columns = new_property)
print(paste("Predicted Property Value:", predicted_value))
##   [1] "Predicted Property Value: 915.726864103557" 
##   [2] "Predicted Property Value: 8237.83012776578" 
##   [3] "Predicted Property Value: 11726.1259916677" 
##   [4] "Predicted Property Value: 8545.18119537925" 
##   [5] "Predicted Property Value: 1830.47065863579" 
##   [6] "Predicted Property Value: 6889.00586422357" 
##   [7] "Predicted Property Value: 1653.76194505858" 
##   [8] "Predicted Property Value: 1905.5719573471"  
##   [9] "Predicted Property Value: 714.166315376613" 
##  [10] "Predicted Property Value: 2534.30832561676" 
##  [11] "Predicted Property Value: 3442.0000255412"  
##  [12] "Predicted Property Value: 10084.3634949554" 
##  [13] "Predicted Property Value: 7789.79205448643" 
##  [14] "Predicted Property Value: 7527.26088766479" 
##  [15] "Predicted Property Value: 1894.15300091525" 
##  [16] "Predicted Property Value: 679.331346562553" 
##  [17] "Predicted Property Value: 2850.89470806453" 
##  [18] "Predicted Property Value: 10282.3520994381" 
##  [19] "Predicted Property Value: 1053.18613782468" 
##  [20] "Predicted Property Value: 20830.2215140373" 
##  [21] "Predicted Property Value: 1653.76194505858" 
##  [22] "Predicted Property Value: 5152.43441621755" 
##  [23] "Predicted Property Value: 2690.35450823296" 
##  [24] "Predicted Property Value: 7902.38359095179" 
##  [25] "Predicted Property Value: 3750.7132932445"  
##  [26] "Predicted Property Value: 2192.68441905403" 
##  [27] "Predicted Property Value: 2132.858191833"   
##  [28] "Predicted Property Value: 9737.6218444336"  
##  [29] "Predicted Property Value: 1516.90888877372" 
##  [30] "Predicted Property Value: 2078.71788256145" 
##  [31] "Predicted Property Value: 12957.8387010561" 
##  [32] "Predicted Property Value: 2357.15205495679" 
##  [33] "Predicted Property Value: 2981.2277735245"  
##  [34] "Predicted Property Value: 500.659148699201" 
##  [35] "Predicted Property Value: 484.44202501118"  
##  [36] "Predicted Property Value: 12308.6899368178" 
##  [37] "Predicted Property Value: 3340.3563799142"  
##  [38] "Predicted Property Value: 1935.72581046192" 
##  [39] "Predicted Property Value: 1583.71861236848" 
##  [40] "Predicted Property Value: 955.590141966899" 
##  [41] "Predicted Property Value: 750.796733727854" 
##  [42] "Predicted Property Value: 4052.38555194867" 
##  [43] "Predicted Property Value: 3002.2291635068"  
##  [44] "Predicted Property Value: 874.659910004837" 
##  [45] "Predicted Property Value: 14794.4075376791" 
##  [46] "Predicted Property Value: 11598.9550312776" 
##  [47] "Predicted Property Value: 10609.3608402734" 
##  [48] "Predicted Property Value: 1436.78533725623" 
##  [49] "Predicted Property Value: 374.002952363267" 
##  [50] "Predicted Property Value: 2478.12366601734" 
##  [51] "Predicted Property Value: 355.299751463155" 
##  [52] "Predicted Property Value: 1029.86983699961" 
##  [53] "Predicted Property Value: 8841.04866365159" 
##  [54] "Predicted Property Value: -863.715818239138"
##  [55] "Predicted Property Value: 1114.01923392254" 
##  [56] "Predicted Property Value: 936.278968854873" 
##  [57] "Predicted Property Value: 4943.60245372797" 
##  [58] "Predicted Property Value: 3633.5722688589"  
##  [59] "Predicted Property Value: 12964.821916393"  
##  [60] "Predicted Property Value: 1029.59700606434" 
##  [61] "Predicted Property Value: 1372.93815873053" 
##  [62] "Predicted Property Value: 4687.05788962999" 
##  [63] "Predicted Property Value: 1455.33839778191" 
##  [64] "Predicted Property Value: 724.938900118585" 
##  [65] "Predicted Property Value: 6507.31482479903" 
##  [66] "Predicted Property Value: 1165.06856340784" 
##  [67] "Predicted Property Value: 1406.19488773836" 
##  [68] "Predicted Property Value: 4625.0501757077"  
##  [69] "Predicted Property Value: 883.898525849403" 
##  [70] "Predicted Property Value: 3148.07734359977" 
##  [71] "Predicted Property Value: 368.811718689188" 
##  [72] "Predicted Property Value: 1939.54841201025" 
##  [73] "Predicted Property Value: 10229.4649223634" 
##  [74] "Predicted Property Value: 1235.28872787416" 
##  [75] "Predicted Property Value: 472.366078653475" 
##  [76] "Predicted Property Value: 4450.05111045247" 
##  [77] "Predicted Property Value: 3285.04651903094" 
##  [78] "Predicted Property Value: -79.6335975190596"
##  [79] "Predicted Property Value: 3525.27744357339" 
##  [80] "Predicted Property Value: -1066.52152195679"
##  [81] "Predicted Property Value: 135.293476418139" 
##  [82] "Predicted Property Value: 8493.99737313873" 
##  [83] "Predicted Property Value: 708.805410511028" 
##  [84] "Predicted Property Value: 768.432225688792" 
##  [85] "Predicted Property Value: 11848.4278537137" 
##  [86] "Predicted Property Value: 14673.7004742708" 
##  [87] "Predicted Property Value: 688.320957612744" 
##  [88] "Predicted Property Value: 6746.76474397881" 
##  [89] "Predicted Property Value: 503.19418508776"  
##  [90] "Predicted Property Value: 572.968344573466" 
##  [91] "Predicted Property Value: 3881.6792872375"  
##  [92] "Predicted Property Value: 5019.48560540896" 
##  [93] "Predicted Property Value: 816.820277255607" 
##  [94] "Predicted Property Value: 1220.58576939927" 
##  [95] "Predicted Property Value: 9105.8153558039"  
##  [96] "Predicted Property Value: 594.171633387632" 
##  [97] "Predicted Property Value: 13273.2465953509" 
##  [98] "Predicted Property Value: 503.19418508776"  
##  [99] "Predicted Property Value: 1425.80660143284" 
## [100] "Predicted Property Value: 1725.02972664969" 
## [101] "Predicted Property Value: 1114.84026049807" 
## [102] "Predicted Property Value: 2201.61184188324" 
## [103] "Predicted Property Value: 9123.75604832622" 
## [104] "Predicted Property Value: 423.967987518871" 
## [105] "Predicted Property Value: 1022.54133975631" 
## [106] "Predicted Property Value: 6734.59857832145" 
## [107] "Predicted Property Value: 1544.49301613665" 
## [108] "Predicted Property Value: 1810.98799226509" 
## [109] "Predicted Property Value: 1761.79874613559" 
## [110] "Predicted Property Value: 13688.2199088136" 
## [111] "Predicted Property Value: 1366.61663628939" 
## [112] "Predicted Property Value: -831.069435094075"
## [113] "Predicted Property Value: 2950.72924905987" 
## [114] "Predicted Property Value: 1423.54287493772" 
## [115] "Predicted Property Value: 5911.52145514856" 
## [116] "Predicted Property Value: 2824.95680026333" 
## [117] "Predicted Property Value: 16532.834317885"  
## [118] "Predicted Property Value: 895.560748379968" 
## [119] "Predicted Property Value: 2620.15424215311" 
## [120] "Predicted Property Value: 1735.05264530005" 
## [121] "Predicted Property Value: 13175.7889353586" 
## [122] "Predicted Property Value: 9812.66237284463" 
## [123] "Predicted Property Value: 2340.78318784818" 
## [124] "Predicted Property Value: 719.534113228171" 
## [125] "Predicted Property Value: 825.974762882067" 
## [126] "Predicted Property Value: 4146.31170129259" 
## [127] "Predicted Property Value: 18113.5152486682" 
## [128] "Predicted Property Value: 1944.1253802675"  
## [129] "Predicted Property Value: 651.684847142795" 
## [130] "Predicted Property Value: -119.606290318404"
## [131] "Predicted Property Value: 1440.40762955443" 
## [132] "Predicted Property Value: 544.96790968964"  
## [133] "Predicted Property Value: 3085.10690819049" 
## [134] "Predicted Property Value: 8841.04866365159" 
## [135] "Predicted Property Value: 1094.85347501172" 
## [136] "Predicted Property Value: 2314.54278408855" 
## [137] "Predicted Property Value: 930.886519708754" 
## [138] "Predicted Property Value: 7535.76978953665" 
## [139] "Predicted Property Value: 6021.32724276701" 
## [140] "Predicted Property Value: 9645.11397924182" 
## [141] "Predicted Property Value: 2879.31077342077" 
## [142] "Predicted Property Value: 847.487523028884" 
## [143] "Predicted Property Value: 4421.67871117763" 
## [144] "Predicted Property Value: 13374.5081013028" 
## [145] "Predicted Property Value: 529.884984527346" 
## [146] "Predicted Property Value: 7600.89863906812" 
## [147] "Predicted Property Value: 216.212688342286" 
## [148] "Predicted Property Value: 10155.2592427512" 
## [149] "Predicted Property Value: 1210.90975754749" 
## [150] "Predicted Property Value: 17947.4718728926" 
## [151] "Predicted Property Value: 237.785290460699" 
## [152] "Predicted Property Value: 3041.38106776296" 
## [153] "Predicted Property Value: 10534.9771565102" 
## [154] "Predicted Property Value: 48.8718301608133" 
## [155] "Predicted Property Value: 16009.3043489561" 
## [156] "Predicted Property Value: 5383.58671166268" 
## [157] "Predicted Property Value: 3451.0816790833"  
## [158] "Predicted Property Value: 18129.6814423286" 
## [159] "Predicted Property Value: 2484.72222905102" 
## [160] "Predicted Property Value: 3421.96275636959" 
## [161] "Predicted Property Value: 8909.46237561297" 
## [162] "Predicted Property Value: 1496.76904972503" 
## [163] "Predicted Property Value: 12894.3743425097" 
## [164] "Predicted Property Value: 590.427010721783" 
## [165] "Predicted Property Value: 3510.32397221059" 
## [166] "Predicted Property Value: 915.322007010093" 
## [167] "Predicted Property Value: 2374.75487827508" 
## [168] "Predicted Property Value: 1422.84772632749" 
## [169] "Predicted Property Value: 5022.53977391908" 
## [170] "Predicted Property Value: 3221.37057070199" 
## [171] "Predicted Property Value: 4530.35587962796" 
## [172] "Predicted Property Value: 5188.54505249211" 
## [173] "Predicted Property Value: 686.519233850265" 
## [174] "Predicted Property Value: 2850.63327952199" 
## [175] "Predicted Property Value: 262.744895034151" 
## [176] "Predicted Property Value: 179.966911703881" 
## [177] "Predicted Property Value: 2076.25023320643" 
## [178] "Predicted Property Value: 5251.09032660692" 
## [179] "Predicted Property Value: 806.533760384191" 
## [180] "Predicted Property Value: 1348.87890763455" 
## [181] "Predicted Property Value: 11462.4831152374" 
## [182] "Predicted Property Value: 13021.4288995434" 
## [183] "Predicted Property Value: 13018.4347759717" 
## [184] "Predicted Property Value: 93.6509693476783" 
## [185] "Predicted Property Value: 9387.70130200566" 
## [186] "Predicted Property Value: 16007.1480698663" 
## [187] "Predicted Property Value: 1433.14360051478" 
## [188] "Predicted Property Value: 16274.8926195602" 
## [189] "Predicted Property Value: 83.4248190569052" 
## [190] "Predicted Property Value: 1496.76904972503" 
## [191] "Predicted Property Value: 2556.91904056026" 
## [192] "Predicted Property Value: 473.176787287061" 
## [193] "Predicted Property Value: 1429.11592226434" 
## [194] "Predicted Property Value: 2249.90528031033" 
## [195] "Predicted Property Value: 798.179810938421" 
## [196] "Predicted Property Value: 1933.20367466269" 
## [197] "Predicted Property Value: 1303.92023463224" 
## [198] "Predicted Property Value: 10432.7029521775" 
## [199] "Predicted Property Value: 1033.55107452171" 
## [200] "Predicted Property Value: 409.240454565787" 
## [201] "Predicted Property Value: 210.727910141928" 
## [202] "Predicted Property Value: 268.234407878679" 
## [203] "Predicted Property Value: 4668.69173234466" 
## [204] "Predicted Property Value: 3287.68687910859" 
## [205] "Predicted Property Value: -128.76334770211" 
## [206] "Predicted Property Value: 5729.91446024631" 
## [207] "Predicted Property Value: 1540.98230665668" 
## [208] "Predicted Property Value: 10668.8587967056" 
## [209] "Predicted Property Value: 146.584637735333" 
## [210] "Predicted Property Value: 4038.46093617153" 
## [211] "Predicted Property Value: 260.845411736681" 
## [212] "Predicted Property Value: 3412.06778145044" 
## [213] "Predicted Property Value: 10123.3357808307" 
## [214] "Predicted Property Value: 1735.40499101286" 
## [215] "Predicted Property Value: 11294.8502819121" 
## [216] "Predicted Property Value: 900.720669384167" 
## [217] "Predicted Property Value: 898.875063596861" 
## [218] "Predicted Property Value: 2309.03042435149" 
## [219] "Predicted Property Value: 1964.6689114281"  
## [220] "Predicted Property Value: -95.7863928124767"
## [221] "Predicted Property Value: 1521.18224015519" 
## [222] "Predicted Property Value: 2897.10281002873" 
## [223] "Predicted Property Value: 2778.99682242794" 
## [224] "Predicted Property Value: 6131.77163561528" 
## [225] "Predicted Property Value: 7668.05491859638" 
## [226] "Predicted Property Value: 10658.7513092278" 
## [227] "Predicted Property Value: 2081.8773792581"  
## [228] "Predicted Property Value: 961.781272153827" 
## [229] "Predicted Property Value: 8396.7112091113"  
## [230] "Predicted Property Value: 20241.3361141969" 
## [231] "Predicted Property Value: 677.095758549547" 
## [232] "Predicted Property Value: 708.7615284862"   
## [233] "Predicted Property Value: 13898.0424231059" 
## [234] "Predicted Property Value: 15821.3287984959" 
## [235] "Predicted Property Value: 17402.6780776732" 
## [236] "Predicted Property Value: -218.567598464769"
## [237] "Predicted Property Value: 1254.33675338796" 
## [238] "Predicted Property Value: -604.072486425449"
## [239] "Predicted Property Value: 2767.55668994141" 
## [240] "Predicted Property Value: 46.0724276172703" 
## [241] "Predicted Property Value: 16261.5146331351" 
## [242] "Predicted Property Value: 2886.37363275574" 
## [243] "Predicted Property Value: 10470.2926889984" 
## [244] "Predicted Property Value: 12040.3463194675" 
## [245] "Predicted Property Value: 1719.56082068553" 
## [246] "Predicted Property Value: 3992.95567199631" 
## [247] "Predicted Property Value: 13095.3702155036" 
## [248] "Predicted Property Value: 14525.5111023307" 
## [249] "Predicted Property Value: 961.781272153827" 
## [250] "Predicted Property Value: 129.740237003837" 
## [251] "Predicted Property Value: 591.187260024457" 
## [252] "Predicted Property Value: 9954.96811547689" 
## [253] "Predicted Property Value: -347.474539986584"
## [254] "Predicted Property Value: 16596.2661137309" 
## [255] "Predicted Property Value: 1449.72328534623" 
## [256] "Predicted Property Value: 2120.92681624306" 
## [257] "Predicted Property Value: 1894.49416807157" 
## [258] "Predicted Property Value: 561.266400578984" 
## [259] "Predicted Property Value: 3677.94199949115" 
## [260] "Predicted Property Value: 17396.0994798523" 
## [261] "Predicted Property Value: 1002.80383743849" 
## [262] "Predicted Property Value: 250.449089271179" 
## [263] "Predicted Property Value: 253.38807937364"  
## [264] "Predicted Property Value: 4344.0054141261"  
## [265] "Predicted Property Value: 13970.5502583035" 
## [266] "Predicted Property Value: 4340.39038660078" 
## [267] "Predicted Property Value: 824.487935163912" 
## [268] "Predicted Property Value: 5995.67678776003" 
## [269] "Predicted Property Value: 12359.4362431941" 
## [270] "Predicted Property Value: 2547.63106858418" 
## [271] "Predicted Property Value: 21275.9007853321" 
## [272] "Predicted Property Value: 4136.795963922"   
## [273] "Predicted Property Value: 1256.91295150601" 
## [274] "Predicted Property Value: 9033.84308644372" 
## [275] "Predicted Property Value: 3570.46332189889" 
## [276] "Predicted Property Value: 7406.58134956729" 
## [277] "Predicted Property Value: 4584.42746881403" 
## [278] "Predicted Property Value: 759.583351299704" 
## [279] "Predicted Property Value: 10505.8168558717" 
## [280] "Predicted Property Value: 6384.66327149314" 
## [281] "Predicted Property Value: 10792.9348334913" 
## [282] "Predicted Property Value: 790.843648094382" 
## [283] "Predicted Property Value: 1480.05760524815" 
## [284] "Predicted Property Value: 1501.2181807479"  
## [285] "Predicted Property Value: 11023.8085414232" 
## [286] "Predicted Property Value: 1904.39106412515" 
## [287] "Predicted Property Value: 596.853179309962" 
## [288] "Predicted Property Value: 253.38807937364"  
## [289] "Predicted Property Value: 11507.6001855826" 
## [290] "Predicted Property Value: 337.972984808629" 
## [291] "Predicted Property Value: 6590.71496867397" 
## [292] "Predicted Property Value: 7062.51698116224" 
## [293] "Predicted Property Value: 5280.06216435266" 
## [294] "Predicted Property Value: 10191.0167444404" 
## [295] "Predicted Property Value: 416.717594841151" 
## [296] "Predicted Property Value: 3830.98811219912" 
## [297] "Predicted Property Value: 1797.55990098353" 
## [298] "Predicted Property Value: 890.350618030656" 
## [299] "Predicted Property Value: 9220.92271981301" 
## [300] "Predicted Property Value: 453.736380525195" 
## [301] "Predicted Property Value: 14734.1678861272" 
## [302] "Predicted Property Value: 2751.11218946994" 
## [303] "Predicted Property Value: 1951.43308099475" 
## [304] "Predicted Property Value: 5885.66987749768" 
## [305] "Predicted Property Value: 2242.73663614158" 
## [306] "Predicted Property Value: 1689.6349503977"  
## [307] "Predicted Property Value: 15825.6567215834" 
## [308] "Predicted Property Value: 6375.9027861657"  
## [309] "Predicted Property Value: 7727.61694830414" 
## [310] "Predicted Property Value: 3267.10614760046" 
## [311] "Predicted Property Value: 4331.75546731408" 
## [312] "Predicted Property Value: 1960.57279256307" 
## [313] "Predicted Property Value: 949.92439308216"  
## [314] "Predicted Property Value: 24256.2631396089" 
## [315] "Predicted Property Value: 866.456498957545" 
## [316] "Predicted Property Value: 1117.27892958075" 
## [317] "Predicted Property Value: 573.883528953325" 
## [318] "Predicted Property Value: 455.197667615685" 
## [319] "Predicted Property Value: 799.077023757159" 
## [320] "Predicted Property Value: 2652.09130473914" 
## [321] "Predicted Property Value: 832.590039429334" 
## [322] "Predicted Property Value: 864.432195494462" 
## [323] "Predicted Property Value: 861.468669654164" 
## [324] "Predicted Property Value: 673.128398010916" 
## [325] "Predicted Property Value: -254.87544939905" 
## [326] "Predicted Property Value: 712.794965058752" 
## [327] "Predicted Property Value: 513.439858029889" 
## [328] "Predicted Property Value: 6312.78499434575" 
## [329] "Predicted Property Value: 7951.4451857792"  
## [330] "Predicted Property Value: 13909.8735018087" 
## [331] "Predicted Property Value: -653.193055246812"
## [332] "Predicted Property Value: 10770.0208547962" 
## [333] "Predicted Property Value: 4111.49697151639" 
## [334] "Predicted Property Value: 926.422650694346" 
## [335] "Predicted Property Value: -152.986342149818"
## [336] "Predicted Property Value: 7566.81530215869" 
## [337] "Predicted Property Value: 3076.94286461112" 
## [338] "Predicted Property Value: 13717.5253183215" 
## [339] "Predicted Property Value: 1117.52037663763" 
## [340] "Predicted Property Value: 717.380256410905" 
## [341] "Predicted Property Value: 8726.46665987368" 
## [342] "Predicted Property Value: 15798.2321628912" 
## [343] "Predicted Property Value: 19311.3745596776" 
## [344] "Predicted Property Value: 1063.9115813874"  
## [345] "Predicted Property Value: 5099.18374716258" 
## [346] "Predicted Property Value: 1388.07676373163" 
## [347] "Predicted Property Value: 10628.9313046623" 
## [348] "Predicted Property Value: 1047.95225116306" 
## [349] "Predicted Property Value: 260.845411736681" 
## [350] "Predicted Property Value: 494.424748642442" 
## [351] "Predicted Property Value: 875.600827880842" 
## [352] "Predicted Property Value: 262.632620802029" 
## [353] "Predicted Property Value: 1187.69743148547" 
## [354] "Predicted Property Value: 916.478647151909" 
## [355] "Predicted Property Value: 778.964511825985" 
## [356] "Predicted Property Value: 2446.21859732028" 
## [357] "Predicted Property Value: 365.895772027647" 
## [358] "Predicted Property Value: 1805.03652261344" 
## [359] "Predicted Property Value: 4698.4276736034"  
## [360] "Predicted Property Value: 45.9065027422839" 
## [361] "Predicted Property Value: 555.180889276915" 
## [362] "Predicted Property Value: 3111.95236110639" 
## [363] "Predicted Property Value: 4187.72970573664" 
## [364] "Predicted Property Value: -136.794757320757"
## [365] "Predicted Property Value: 945.369061782724" 
## [366] "Predicted Property Value: 4686.7230997321"  
## [367] "Predicted Property Value: 1380.45657551045" 
## [368] "Predicted Property Value: 11168.3269342252" 
## [369] "Predicted Property Value: 1653.76194505858" 
## [370] "Predicted Property Value: 732.981758148421" 
## [371] "Predicted Property Value: 1052.83398114407" 
## [372] "Predicted Property Value: 5018.66418936021" 
## [373] "Predicted Property Value: 1839.7552313953"  
## [374] "Predicted Property Value: 2741.50276109174" 
## [375] "Predicted Property Value: 2587.77642628652" 
## [376] "Predicted Property Value: 2219.25992253632" 
## [377] "Predicted Property Value: 937.720693141294" 
## [378] "Predicted Property Value: 6699.20265335396" 
## [379] "Predicted Property Value: 6803.52380772798" 
## [380] "Predicted Property Value: 1242.26447270083" 
## [381] "Predicted Property Value: 1227.38460177969" 
## [382] "Predicted Property Value: 6119.68326936374" 
## [383] "Predicted Property Value: 351.893598022899" 
## [384] "Predicted Property Value: 1497.33886998143" 
## [385] "Predicted Property Value: 312.562073401877" 
## [386] "Predicted Property Value: 10251.7077418042" 
## [387] "Predicted Property Value: 366.109325243981" 
## [388] "Predicted Property Value: 1496.91856686726" 
## [389] "Predicted Property Value: 3879.17998080114" 
## [390] "Predicted Property Value: 822.642329376605" 
## [391] "Predicted Property Value: 1459.98694928491" 
## [392] "Predicted Property Value: 1864.94020133923" 
## [393] "Predicted Property Value: 8405.89855863952" 
## [394] "Predicted Property Value: 100.922610933128" 
## [395] "Predicted Property Value: 198.250840069616" 
## [396] "Predicted Property Value: 606.515176065865" 
## [397] "Predicted Property Value: 13503.0915511638" 
## [398] "Predicted Property Value: 13579.2506014854" 
## [399] "Predicted Property Value: 8881.68410415866" 
## [400] "Predicted Property Value: 6058.58213669866" 
## [401] "Predicted Property Value: -64.9197644412886"
## [402] "Predicted Property Value: 1902.29181253142" 
## [403] "Predicted Property Value: 621.219548442655" 
## [404] "Predicted Property Value: 8638.71111967302" 
## [405] "Predicted Property Value: 21537.9499815424" 
## [406] "Predicted Property Value: 6414.20310808633" 
## [407] "Predicted Property Value: 9631.36891062835" 
## [408] "Predicted Property Value: 11864.2055019466" 
## [409] "Predicted Property Value: 4399.45178075245" 
## [410] "Predicted Property Value: 721.226190421392" 
## [411] "Predicted Property Value: 457.44401415219"  
## [412] "Predicted Property Value: 9460.39813584393" 
## [413] "Predicted Property Value: 1249.30716661908" 
## [414] "Predicted Property Value: 1126.73216786666" 
## [415] "Predicted Property Value: 781.398561446827" 
## [416] "Predicted Property Value: 250.249952395891" 
## [417] "Predicted Property Value: 618.789320368116" 
## [418] "Predicted Property Value: 411.790256578945" 
## [419] "Predicted Property Value: 933.022599663478" 
## [420] "Predicted Property Value: 15159.9147858491" 
## [421] "Predicted Property Value: 351.294434401721" 
## [422] "Predicted Property Value: 8570.23010735899" 
## [423] "Predicted Property Value: 96.6913246607132" 
## [424] "Predicted Property Value: 433.662686678375" 
## [425] "Predicted Property Value: 645.124727598492" 
## [426] "Predicted Property Value: 4127.77976110501" 
## [427] "Predicted Property Value: 8440.51522198908" 
## [428] "Predicted Property Value: 137.52929789626"  
## [429] "Predicted Property Value: 1179.95332936594" 
## [430] "Predicted Property Value: 11507.4188731284" 
## [431] "Predicted Property Value: 49.9713572638685" 
## [432] "Predicted Property Value: 12818.1416082894" 
## [433] "Predicted Property Value: 1109.74588254108" 
## [434] "Predicted Property Value: 4.33214888209585" 
## [435] "Predicted Property Value: 5249.30038655295" 
## [436] "Predicted Property Value: 233.126328674388" 
## [437] "Predicted Property Value: 604.837830714768" 
## [438] "Predicted Property Value: 3115.46086155231" 
## [439] "Predicted Property Value: 2284.48166597295" 
## [440] "Predicted Property Value: 5564.35940370319" 
## [441] "Predicted Property Value: 1155.269305879"   
## [442] "Predicted Property Value: 3062.91645889254" 
## [443] "Predicted Property Value: 581.359295106015" 
## [444] "Predicted Property Value: 477.770865543888" 
## [445] "Predicted Property Value: 573.22716987874"  
## [446] "Predicted Property Value: 318.637369881215" 
## [447] "Predicted Property Value: 9209.86037412736" 
## [448] "Predicted Property Value: 1978.7465964086"  
## [449] "Predicted Property Value: 14585.3808142147" 
## [450] "Predicted Property Value: 4461.22483328875" 
## [451] "Predicted Property Value: 1145.53786356605" 
## [452] "Predicted Property Value: 4043.12710762807" 
## [453] "Predicted Property Value: 2193.84901112957" 
## [454] "Predicted Property Value: 1528.72572068342" 
## [455] "Predicted Property Value: 518.509097256037" 
## [456] "Predicted Property Value: 7232.56490854739" 
## [457] "Predicted Property Value: 4438.22003174968" 
## [458] "Predicted Property Value: 4799.26013985371" 
## [459] "Predicted Property Value: 11147.2970285746" 
## [460] "Predicted Property Value: 1769.61287561108" 
## [461] "Predicted Property Value: 15798.2321628912" 
## [462] "Predicted Property Value: 10782.6105412565" 
## [463] "Predicted Property Value: 933.667967301868" 
## [464] "Predicted Property Value: 15796.60659827"   
## [465] "Predicted Property Value: 2947.94576256376" 
## [466] "Predicted Property Value: 3256.23437551291" 
## [467] "Predicted Property Value: 1452.46774390049" 
## [468] "Predicted Property Value: 12556.5555670057" 
## [469] "Predicted Property Value: 16434.6463418214" 
## [470] "Predicted Property Value: 2240.3133523435"  
## [471] "Predicted Property Value: 1063.99063553531" 
## [472] "Predicted Property Value: 2374.75487827508" 
## [473] "Predicted Property Value: 1418.02388082701" 
## [474] "Predicted Property Value: 10237.3591760831" 
## [475] "Predicted Property Value: 5537.05667730802" 
## [476] "Predicted Property Value: 6308.43053727288" 
## [477] "Predicted Property Value: 8353.60151837974" 
## [478] "Predicted Property Value: 1821.7907873134"  
## [479] "Predicted Property Value: 7325.69743604227" 
## [480] "Predicted Property Value: 15016.122525003"  
## [481] "Predicted Property Value: 11401.4061426421" 
## [482] "Predicted Property Value: 1082.82325943365" 
## [483] "Predicted Property Value: 10602.8699185117" 
## [484] "Predicted Property Value: 1411.03350810089" 
## [485] "Predicted Property Value: 11749.6969084932" 
## [486] "Predicted Property Value: 336.925679517789" 
## [487] "Predicted Property Value: 352.949522556088" 
## [488] "Predicted Property Value: 14585.3808142147" 
## [489] "Predicted Property Value: 1218.13486322881" 
## [490] "Predicted Property Value: 2337.45009642818" 
## [491] "Predicted Property Value: 14998.3568097945" 
## [492] "Predicted Property Value: 268.234407878679" 
## [493] "Predicted Property Value: 1637.51135362623" 
## [494] "Predicted Property Value: 4423.48166415769" 
## [495] "Predicted Property Value: 4424.92021788306" 
## [496] "Predicted Property Value: 326.40717564039"  
## [497] "Predicted Property Value: 9322.08049214775" 
## [498] "Predicted Property Value: 544.986814222399" 
## [499] "Predicted Property Value: 202.81124743925"  
## [500] "Predicted Property Value: 10979.2434724126" 
## [501] "Predicted Property Value: 8606.94602779249" 
## [502] "Predicted Property Value: 1369.36617091384" 
## [503] "Predicted Property Value: 12566.7991135277" 
## [504] "Predicted Property Value: 907.730399273722" 
## [505] "Predicted Property Value: 4427.62261132827" 
## [506] "Predicted Property Value: 452.859025880822" 
## [507] "Predicted Property Value: 13383.8895584652" 
## [508] "Predicted Property Value: 2217.93669247124" 
## [509] "Predicted Property Value: 7214.78819809492" 
## [510] "Predicted Property Value: 1257.99724583571" 
## [511] "Predicted Property Value: 6275.6314365543"  
## [512] "Predicted Property Value: 1299.58045280464" 
## [513] "Predicted Property Value: -678.603966653563"
## [514] "Predicted Property Value: 1180.68021728575" 
## [515] "Predicted Property Value: 12491.5621072403" 
## [516] "Predicted Property Value: 572.683757223336" 
## [517] "Predicted Property Value: 11101.7390633649" 
## [518] "Predicted Property Value: -247.686143498515"
## [519] "Predicted Property Value: 515.325712010473" 
## [520] "Predicted Property Value: 500.200721739127" 
## [521] "Predicted Property Value: 16266.4055434752" 
## [522] "Predicted Property Value: 768.506191346208" 
## [523] "Predicted Property Value: 6514.48223445372" 
## [524] "Predicted Property Value: 5251.09032660692" 
## [525] "Predicted Property Value: 1092.63266910288"
LS0tDQp0aXRsZTogIkV2aWRlbmNpYSAxIg0KYXV0aG9yOiAiRXF1aXBvIDMiDQpkYXRlOiAiMTYtMTEtMjAyMyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCiMjIEltcG9ydGFyIGxpYnJlcmlhcw0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoY2x1c3RlcikNCmBgYA0KDQojIyBJbXBvcnRhciBEYXRhc2V0DQpgYGB7cn0NCmRmIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXG5haWxhXFxPbmVEcml2ZVxcRG9jdW1lbnRvc1xcMSBURUNcXDUgUVVJTlRPIFNFTUVTVFJFXFxNaW5lcsOtYSBkZSBkYXRvc1xcRGF0b3MgYmllbmVzIHkgcmFpY2VzIENETVhGIDEuY3N2IikNCiNwcmludChkZikNCmBgYA0KDQojIyBEYXRhIHByZXByb2Nlc3NpbmcNCmBgYHtyfQ0KIyBDb252ZXJ0IGNhdGVnb3JpY2FsIHZhcmlhYmxlcyB0byBudW1lcmljDQpkZiA8LSBkZiAlPiUNCiAgbXV0YXRlX2F0KHZhcnMoQ29jaW5hX2VxdWlwLCBHaW1uYXNpbywgQW11ZWJsYWRvLCBBbGJlcmNhLCBUZXJyYXphLCBFbGV2YWRvciksIH5pZmVsc2UoLiA9PSAiU2kiLCAxLCAwKSkNCg0KIyBDb252ZXJ0IHRvIG51bWVyaWMNCmRmJEVzdGFjaW9uYW1pZW50byA8LSBhcy5udW1lcmljKGRmJEVzdGFjaW9uYW1pZW50bykNCmRmJEFsY2FsZGlhX251bWVyaWMgPC0gYXMubnVtZXJpYyhmYWN0b3IoZGYkQWxjYWxkaWEpKQ0KZGYkQ29sb25pYV9udW1lcmljIDwtIGFzLm51bWVyaWMoZmFjdG9yKGRmJENvbG9uaWEpKQ0KDQojIENoZWNrIGZvciBtaXNzaW5nIHZhbHVlcyBhbmQgaGFuZGxlIGlmIG5lY2Vzc2FyeQ0KcHJpbnQoY29sU3Vtcyhpcy5uYShkZikpKQ0KDQojIEhhbmRsZSBtaXNzaW5nIHZhbHVlcyBpZiBuZWVkZWQNCmRmIDwtIG5hLm9taXQoZGYpDQoNCiMgQ2hlY2sgYWdhaW4gZm9yIE5BJ3MNCnByaW50KGNvbFN1bXMoaXMubmEoZGYpKSkNCg0KIyBFeGFtcGxlOiBDcmVhdGUgYSBuZXcgdmFyaWFibGUgcmVwcmVzZW50aW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgYW1lbml0aWVzDQpkZiRUb3RhbF9BbWVuaXRpZXMgPC0gcm93U3VtcyhkZlssIGMoIkNvY2luYV9lcXVpcCIsICJHaW1uYXNpbyIsICJBbXVlYmxhZG8iLCAiQWxiZXJjYSIsICJUZXJyYXphIiwgIkVsZXZhZG9yIildKQ0KDQojIFN0YW5kYXJkaXplIG51bWVyaWMgdmFyaWFibGVzDQpudW1lcmljX2NvbHVtbnMgPC0gZGYgJT4lIHNlbGVjdF9pZihpcy5udW1lcmljKQ0KZGZfc2NhbGVkIDwtIHNjYWxlKG51bWVyaWNfY29sdW1ucykNCmBgYA0KDQojIyBDbHVzdGVyaW5nDQpgYGB7cn0NCiMgUGVyZm9ybSBrLW1lYW5zIGNsdXN0ZXJpbmcNCnNldC5zZWVkKDEyMykNCmsgPC0gNCAgIyBjaG9vc2UgdGhlIG51bWJlciBvZiBjbHVzdGVycyBiYXNlZCBvbiB5b3VyIGFuYWx5c2lzDQprbWVhbnNfcmVzdWx0IDwtIGttZWFucyhkZl9zY2FsZWQsIGNlbnRlcnMgPSBrKQ0KZGYkQ2x1c3RlciA8LSBhcy5mYWN0b3Ioa21lYW5zX3Jlc3VsdCRjbHVzdGVyKQ0KbnVtZXJpY19jb2x1bW5zJENsdXN0ZXIgPC0gYXMubnVtZXJpYyhrbWVhbnNfcmVzdWx0JGNsdXN0ZXIpDQoNCiMgQW5hbHl6ZSB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGVhY2ggY2x1c3Rlcg0KY2x1c3Rlcl9zdW1tYXJ5X251bWVyaWMgPC0gbnVtZXJpY19jb2x1bW5zICU+JSBncm91cF9ieShDbHVzdGVyKSAlPiUgc3VtbWFyaXNlX2FsbChtZWFuKQ0KcHJpbnQoY2x1c3Rlcl9zdW1tYXJ5X251bWVyaWMpICMgY2x1c3RlciB3aXRoIG9ubHkgbnVtZXJpYyB2YXJpYWJsZXMNCmNsdXN0ZXJfc3VtbWFyeV9udW1lcmljJEFsY2FsZGlhX251bWVyaWMgPC0gIHJvdW5kKGNsdXN0ZXJfc3VtbWFyeV9udW1lcmljJEFsY2FsZGlhX251bWVyaWMpDQpjbHVzdGVyX3N1bW1hcnlfbnVtZXJpYyRDb2xvbmlhX251bWVyaWMgPC0gcm91bmQoY2x1c3Rlcl9zdW1tYXJ5X251bWVyaWMkQ29sb25pYV9udW1lcmljKQ0KY2x1c3Rlcl9zdW1tYXJ5X251bWVyaWMkVG90YWxfQW1lbml0aWVzIDwtIHJvdW5kKGNsdXN0ZXJfc3VtbWFyeV9udW1lcmljJFRvdGFsX0FtZW5pdGllcykNCnByaW50KGNsdXN0ZXJfc3VtbWFyeV9udW1lcmljKQ0KDQpjbHVzdGVyX3N1bW1hcnkgPC0gZGYgJT4lIGdyb3VwX2J5KENsdXN0ZXIpICU+JSBzdW1tYXJpc2VfYWxsKG1lYW4pDQpwcmludChjbHVzdGVyX3N1bW1hcnkpICMgY2x1c3RlciB3aXRoIGNhdGVnb3JpY2FsIHZhcmlhYmxlcw0KY2x1c3Rlcl9zdW1tYXJ5JEFsY2FsZGlhX251bWVyaWMgPC0gIHJvdW5kKGNsdXN0ZXJfc3VtbWFyeSRBbGNhbGRpYV9udW1lcmljKQ0KY2x1c3Rlcl9zdW1tYXJ5JENvbG9uaWFfbnVtZXJpYyA8LSByb3VuZChjbHVzdGVyX3N1bW1hcnkkQ29sb25pYV9udW1lcmljKQ0KY2x1c3Rlcl9zdW1tYXJ5JFRvdGFsX0FtZW5pdGllcyA8LSByb3VuZChjbHVzdGVyX3N1bW1hcnkkVG90YWxfQW1lbml0aWVzKQ0KcHJpbnQoY2x1c3Rlcl9zdW1tYXJ5KQ0KYGBgDQoNCiMjIFNldHMgZGUgRW50cmVuYW1pZW50byB5IGRlIEV2YWx1YWNpb24NCmBgYHtyfQ0KIyBTcGxpdCBkYXRhIGludG8gdHJhaW5pbmcgYW5kIHRlc3Rpbmcgc2V0cw0Kc2V0LnNlZWQoMTIzKQ0KdHJhaW5faW5kaWNlcyA8LSBzYW1wbGUoMTpucm93KG51bWVyaWNfY29sdW1ucyksIDAuOCAqIG5yb3cobnVtZXJpY19jb2x1bW5zKSkNCnRyYWluX2RhdGEgPC0gbnVtZXJpY19jb2x1bW5zW3RyYWluX2luZGljZXMsIF0NCnRlc3RfZGF0YSA8LSBudW1lcmljX2NvbHVtbnNbLXRyYWluX2luZGljZXMsIF0NCg0KIyBGaXQgYSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbA0KbW9kZWwgPC0gbG0oUHJlY2lvIH4gLiwgZGF0YSA9IHRyYWluX2RhdGEpDQpgYGANCg0KIyMgUHJlZGljY2lvbmVzDQpgYGB7cn0NCiMgTWFrZSBwcmVkaWN0aW9ucyBvbiB0aGUgdGVzdCBzZXQNCnByZWRpY3Rpb25zIDwtIHByZWRpY3QobW9kZWwsIG51bWVyaWNfY29sdW1ucyA9IHRlc3RfZGF0YSkNCg0KIyBFdmFsdWF0ZSB0aGUgbW9kZWwNCnJtc2UgPC0gc3FydChtZWFuKChwcmVkaWN0aW9ucyAtIHRlc3RfZGF0YSRQcmVjaW8pXjIpKQ0KcHJpbnQocGFzdGUoIlJvb3QgTWVhbiBTcXVhcmVkIEVycm9yOiIsIHJtc2UpKQ0KDQojIEV4YW1wbGU6IFByZWRpY3QgcHJvcGVydHkgdmFsdWVzIGZvciBhIG5ldyBkYXRhIHBvaW50DQpuZXdfcHJvcGVydHkgPC0gZGF0YS5mcmFtZSgNCiAgQWxjYWxkaWFfbnVtZXJpYyA9IDIsDQogIENvbG9uaWFfbnVtZXJpYyA9IDUsDQogIFRvdGFsX0FtZW5pdGllcyA9IDIsDQogIENvY2luYV9lcXVpcCA9IDEsDQogIEdpbW5hc2lvID0gMCwNCiAgQW11ZWJsYWRvID0gMSwNCiAgQWxiZXJjYSA9IDEsDQogIFRlcnJhemEgPSAwLA0KICBFbGV2YWRvciA9IDEsDQogIG0yX2NvbnN0cnVpZG8gPSAyMDAsDQogIEJhbm9zID0gMiwNCiAgUmVjYW1hcmFzID0gMywNCiAgRXN0YWNpb25hbWllbnRvID0gMiwNCiAgQ2x1c3RlciA9IDMgICMgQXNzaWduIHRoZSBjbHVzdGVyIGJhc2VkIG9uIHlvdXIgYW5hbHlzaXMNCikNCg0KcHJlZGljdGVkX3ZhbHVlIDwtIHByZWRpY3QobW9kZWwsIG51bWVyaWNfY29sdW1ucyA9IG5ld19wcm9wZXJ0eSkNCnByaW50KHBhc3RlKCJQcmVkaWN0ZWQgUHJvcGVydHkgVmFsdWU6IiwgcHJlZGljdGVkX3ZhbHVlKSkNCmBgYA0K