# Načítanie balíčkov a dát

library(readr)
library(dplyr)
library(ggplot2)
library(lmtest)
library(sandwich)
library(car)
library(tseries)

firmy <- read_csv("dataEKONOMETRIA.csv")

glimpse(firmy)
Rows: 53
Columns: 9
$ Nazov       <chr> "Accenture, s.r.o.", "Beiersdorf Slovakia, s.r.o.", "Be…
$ Kategoria   <dbl> 3, 1, 4, 5, 3, 4, 4, 3, 4, 4, 2, 4, 3, 4, 4, 3, 3, 3, 3…
$ Forma       <chr> "sro", "sro", "sro", "sro", "as", "sro", "as", "sro", "…
$ ROE         <dbl> 0.270192860, 0.293773272, 0.664287656, 0.095621306, 0.1…
$ ROA         <dbl> 0.078790333, 0.080062193, 0.055303738, 0.036313948, 0.0…
$ EBIT        <dbl> 1250080, 1072061, 12586000, 19677000, 8126000, 9582736,…
$ EBITDAmarza <dbl> 0.13899269, 0.03386505, 0.05668215, 0.08028712, 0.00000…
$ M           <dbl> 1, 2, 6, 5, 6, 4, 7, 0, 10, 1, 6, 4, 8, 5, 3, 11, 2, 1,…
$ Z           <dbl> 0, 1, 0, 3, 2, 0, 4, 2, 7, 0, 0, 0, 1, 2, 0, 2, 0, 1, 1…
summary(firmy)
    Nazov             Kategoria        Forma                ROE          
 Length:53          Min.   :1.000   Length:53          Min.   :-1.84304  
 Class :character   1st Qu.:2.000   Class :character   1st Qu.: 0.08053  
 Mode  :character   Median :3.000   Mode  :character   Median : 0.12639  
                    Mean   :3.057                      Mean   : 0.20327  
                    3rd Qu.:4.000                      3rd Qu.: 0.31271  
                    Max.   :5.000                      Max.   : 0.99781  
      ROA                EBIT            EBITDAmarza             M     
 Min.   :-0.16527   Min.   :  -790635   Min.   :-0.04082   Min.   : 0  
 1st Qu.: 0.02724   1st Qu.:  2008948   1st Qu.: 0.03528   1st Qu.: 2  
 Median : 0.06000   Median :  6643237   Median : 0.05559   Median : 4  
 Mean   : 0.09227   Mean   : 77168704   Mean   : 0.11727   Mean   : 6  
 3rd Qu.: 0.11555   3rd Qu.: 30844065   3rd Qu.: 0.13260   3rd Qu.: 9  
 Max.   : 0.70448   Max.   :932605000   Max.   : 0.83243   Max.   :23  
       Z        
 Min.   :0.000  
 1st Qu.:0.000  
 Median :1.000  
 Mean   :1.717  
 3rd Qu.:3.000  
 Max.   :7.000  
# Úprava údajov a vytvorenie odvodených premenných

firmy <- firmy %>%
mutate(
EBIT_num = as.numeric(gsub(",", "", EBIT)),
pocet_clenov = M + Z,
podiel_zien = Z / pocet_clenov,
podiel_muzov = M / pocet_clenov,
Kategoria = factor(Kategoria),
Forma = factor(Forma)
)

head(firmy)
NA

Špecifikácia a odhad modelu

# Odhad základného regresného modelu pre ROE

model7_1 <- lm(ROE ~ podiel_zien + ROA + EBITDAmarza, data = firmy)

summary(model7_1)

Call:
lm(formula = ROE ~ podiel_zien + ROA + EBITDAmarza, data = firmy)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.25674 -0.07073 -0.00477  0.05133  0.82942 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.05891    0.08947   0.658   0.5133   
podiel_zien  0.21318    0.28974   0.736   0.4654   
ROA          1.55811    0.50071   3.112   0.0031 **
EBITDAmarza -0.36215    0.41051  -0.882   0.3820   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4214 on 49 degrees of freedom
Multiple R-squared:  0.2117,    Adjusted R-squared:  0.1634 
F-statistic: 4.385 on 3 and 49 DF,  p-value: 0.008219

Rozšírený model

V rozšírenom modeli pridáme do vysvetľujúcich premenných aj kategóriu a právnu formu podnikov.

# Rozšírený model s kategóriou a formou
model7_2 <- lm(ROE ~ podiel_zien + ROA + EBITDAmarza + Kategoria + Forma,
               data = firmy)

summary(model7_2)

Call:
lm(formula = ROE ~ podiel_zien + ROA + EBITDAmarza + Kategoria + 
    Forma, data = firmy)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.15800 -0.10117 -0.03845  0.10002  0.89147 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept) -0.233991   0.275110  -0.851  0.39963   
podiel_zien  0.255261   0.301150   0.848  0.40124   
ROA          1.812357   0.536228   3.380  0.00153 **
EBITDAmarza -0.550542   0.445212  -1.237  0.22280   
Kategoria2   0.158131   0.249659   0.633  0.52976   
Kategoria3   0.299437   0.245102   1.222  0.22833   
Kategoria4   0.397898   0.254715   1.562  0.12542   
Kategoria5   0.226616   0.380624   0.595  0.55464   
Formasro     0.008296   0.142221   0.058  0.95375   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4272 on 44 degrees of freedom
Multiple R-squared:  0.2726,    Adjusted R-squared:  0.1403 
F-statistic: 2.061 on 8 and 44 DF,  p-value: 0.06081

Porovnanie modelov

# Porovnanie modelov pomocou ANOVA a AIC
anova(model7_1, model7_2)
Analysis of Variance Table

Model 1: ROE ~ podiel_zien + ROA + EBITDAmarza
Model 2: ROE ~ podiel_zien + ROA + EBITDAmarza + Kategoria + Forma
  Res.Df    RSS Df Sum of Sq     F Pr(>F)
1     49 8.7017                          
2     44 8.0293  5   0.67244 0.737 0.5998
AIC(model7_1, model7_2)

Multikolinearita vysvetľujúcich premenných

# Posúdenie multikolinearity pomocou VIF
vif(model7_2)
                GVIF Df GVIF^(1/(2*Df))
podiel_zien 1.183996  1        1.088116
ROA         1.432284  1        1.196781
EBITDAmarza 1.322205  1        1.149872
Kategoria   1.399007  4        1.042864
Forma       1.279913  1        1.131332

Hodnoty VIF pre všetky vysvetľujúce premenné sa pohybujú v intervale približne 1.04 až 1.43, čo sú veľmi nízke hodnoty. Bežné hranice pre posúdenie multikolinearity sú 5 (mierna kolinearita) a 10 (vážna kolinearita).

Na základe výsledkov môžeme konštatovať, že v rozšírenom modeli nie je prítomná multikolinearita medzi vysvetľujúcimi premennými. Premenné nie sú vzájomne silne závislé a neovplyvňujú negatívne stabilitu odhadu regresných koeficientov.

Diagnostika modelu

# Diagnostické grafy pre model7_1
par(mfrow = c(2, 2))
plot(model7_1)
par(mfrow = c(1, 1))

# Testy normality rezíduí
shapiro.test(residuals(model7_1))

    Shapiro-Wilk normality test

data:  residuals(model7_1)
W = 0.65623, p-value = 7.067e-10
jarque.bera.test(residuals(model7_1))

    Jarque Bera Test

data:  residuals(model7_1)
X-squared = 661.83, df = 2, p-value < 2.2e-16
# Test heteroskedasticity rezíduí (Breusch–Paganov test)
bptest(model7_1)

    studentized Breusch-Pagan test

data:  model7_1
BP = 4.9401, df = 3, p-value = 0.1762
# Koeficienty s robustnými smerodajnými chybami (Whiteova korekcia)
coeftest(model7_1, vcov = vcovHC(model7_1, type = "HC1"))

t test of coefficients:

             Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.058906   0.079550  0.7405  0.46254  
podiel_zien  0.213180   0.385813  0.5525  0.58308  
ROA          1.558106   0.738731  2.1092  0.04006 *
EBITDAmarza -0.362146   0.227874 -1.5892  0.11844  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Durbin–Watsonov test autokorelácie rezíduí
durbinWatsonTest(model7_1)
 lag Autocorrelation D-W Statistic p-value
   1       0.3252467      1.347163   0.018
 Alternative hypothesis: rho != 0
# Vplyvné a odľahlé pozorovania podľa Cookovej vzdialenosti a páky
influencePlot(model7_1, main = "Vplyvné a odľahlé pozorovania")

cooks <- cooks.distance(model7_1)
vplyvne <- which(cooks > 4 * mean(cooks, na.rm = TRUE))
firmy[vplyvne, ]

Zhrnutie výsledkov

Na základe výsledkov regresnej analýzy možno zhrnúť, že v modeli7_1 s ukazovateľom ROE ako závislou premennou:

Pri porovnaní modelov pomocou informačného kritéria AIC vychádza lepšie jednoduchší model model7_1 (AIC = 64.65) v porovnaní s rozšíreným model7_2 (AIC = 70.39). Zaradenie kategórie a právnej formy podnikov preto neprinieslo zlepšenie kvality modelu.

Výsledky testov diagnostiky ukázali, že:

Celkovo možno konštatovať, že najvhodnejším z analyzovaných modelov je jednoduchší model7_1, pričom kľúčovým vysvetľujúcim faktorom ROE je rentabilita aktív (ROA). Pri interpretácii výsledkov je však potrebné brať do úvahy zistené porušenia niektorých predpokladov lineárneho regresného modelu (najmä normalita a nezávislosť rezíduí). ## Test správnej špecifikácie modelu (RESET test)

resettest(model7_1)

    RESET test

data:  model7_1
RESET = 0.83936, df1 = 2, df2 = 47, p-value = 0.4384

RESET test skúma, či je model správne špecifikovaný. Ak je p-hodnota nízka, model obsahuje nelinearity alebo chýbajúce premenné. Na základe výsledkov môžeme vyhodnotiť, či je model7_1 správne špecifikovaný.

Box–Cox test pre výber vhodnej transformácie závislej premennej

library(MASS)

boxcox(model7_1, lambda = seq(-2, 2, 0.1))
Error in boxcox.default(model7_1, lambda = seq(-2, 2, 0.1)) : 
  response variable must be positive

Box–Cox transformácia

Box–Cox transformáciu nie je možné použiť, pretože závislá premenná ROE obsahuje aj záporné hodnoty. Box–Cox metóda vyžaduje striktne kladné hodnoty závislej premennej, preto výsledok nemožno vypočítať.

Z tohto dôvodu Box–Cox transformáciu v analýze nepoužijeme.

summary(firmy$ROE)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-1.84304  0.08053  0.12639  0.20327  0.31271  0.99781 

Test správnej špecifikácie modelu (RESET test)

resettest(model7_1)

    RESET test

data:  model7_1
RESET = 0.83936, df1 = 2, df2 = 47, p-value = 0.4384

Záverečné zhrnutie

V tomto cvičení sme analyzovali vplyv podielu žien vo vedení, ukazovateľa ROA a EBITDA marže na rentabilitu vlastného kapitálu (ROE) pre vybraný súbor 53 podnikov.

Na základe výsledkov regresného modelu môžeme zhrnúť nasledovné:

  • Premenná ROA má pozitívny a štatisticky významný vplyv na ROE, čo znamená, že rast rentability aktív vedie aj k rastu rentability vlastného kapitálu.
  • Premenné podiel žien vo vedení a EBITDA marža nevykazujú štatisticky významný vplyv na ROE.
  • Model ako celok je štatisticky významný (p = 0.0082) a vysvetľuje približne 16 % variability ROE (Adjusted R² = 0.1634).

Pri porovnaní modelov pomocou AIC bol za vhodnejší označený jednoduchší model model7_1, keďže rozšírený model (s kategóriou a právnou formou podnikov) neviedol k zlepšeniu vysvetľovacej schopnosti.

Diagnostika modelu ukázala, že: - multikolinearita nie je prítomná (VIF < 2), - RESET test nepotvrdil chybnú špecifikáciu modelu, takže model je z hľadiska funkčnej formy nastavený správne, - heteroskedasticita nebola preukázaná, - Box–Cox transformáciu nebolo možné použiť, keďže premenná ROE obsahuje aj záporné hodnoty.

Celkovo možno konštatovať, že najvhodnejším modelom pre dané dáta je jednoduchý model7_1, pričom kľúčovým faktorom ovplyvňujúcim ROE je ukazovateľ ROA. Model je štatisticky prijateľný, aj keď vysvetľuje iba časť variability ROE, čo je typické pri finančných ukazovateľoch ovplyvňovaných širokým spektrom faktorov.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQotLS0KdGl0bGU6ICJFa29ub21ldHJpYSDigJMgQ3ZpxI1lbmllIDciCmF1dGhvcjogIk5hdMOhbGlhIE7DoWRhc2vDoSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2RlcHRoOiAyCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQotLS0KYGBge3J9CiMgTmHEjcOtdGFuaWUgYmFsw63EjWtvdiBhIGTDoXQKCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShsbXRlc3QpCmxpYnJhcnkoc2FuZHdpY2gpCmxpYnJhcnkoY2FyKQpsaWJyYXJ5KHRzZXJpZXMpCgpmaXJteSA8LSByZWFkX2NzdigiZGF0YUVLT05PTUVUUklBLmNzdiIpCgpnbGltcHNlKGZpcm15KQpzdW1tYXJ5KGZpcm15KQoKYGBgCmBgYHtyfQojIMOacHJhdmEgw7pkYWpvdiBhIHZ5dHZvcmVuaWUgb2R2b2RlbsO9Y2ggcHJlbWVubsO9Y2gKCmZpcm15IDwtIGZpcm15ICU+JQptdXRhdGUoCkVCSVRfbnVtID0gYXMubnVtZXJpYyhnc3ViKCIsIiwgIiIsIEVCSVQpKSwKcG9jZXRfY2xlbm92ID0gTSArIFosCnBvZGllbF96aWVuID0gWiAvIHBvY2V0X2NsZW5vdiwKcG9kaWVsX211em92ID0gTSAvIHBvY2V0X2NsZW5vdiwKS2F0ZWdvcmlhID0gZmFjdG9yKEthdGVnb3JpYSksCkZvcm1hID0gZmFjdG9yKEZvcm1hKQopCgpoZWFkKGZpcm15KQoKYGBgCiMgxaBwZWNpZmlrw6FjaWEgYSBvZGhhZCBtb2RlbHUKYGBge3J9CiMgT2RoYWQgesOha2xhZG7DqWhvIHJlZ3Jlc27DqWhvIG1vZGVsdSBwcmUgUk9FCgptb2RlbDdfMSA8LSBsbShST0UgfiBwb2RpZWxfemllbiArIFJPQSArIEVCSVREQW1hcnphLCBkYXRhID0gZmlybXkpCgpzdW1tYXJ5KG1vZGVsN18xKQoKYGBgCiMjIFJvesWhw61yZW7DvSBtb2RlbAoKViByb3rFocOtcmVub20gbW9kZWxpIHByaWTDoW1lIGRvIHZ5c3ZldMS+dWrDumNpY2ggcHJlbWVubsO9Y2ggYWoga2F0ZWfDs3JpdSBhIHByw6F2bnUgZm9ybXUgcG9kbmlrb3YuCmBgYHtyIG1vZGVsN18yfQojIFJvesWhw61yZW7DvSBtb2RlbCBzIGthdGVnw7NyaW91IGEgZm9ybW91Cm1vZGVsN18yIDwtIGxtKFJPRSB+IHBvZGllbF96aWVuICsgUk9BICsgRUJJVERBbWFyemEgKyBLYXRlZ29yaWEgKyBGb3JtYSwKICAgICAgICAgICAgICAgZGF0YSA9IGZpcm15KQoKc3VtbWFyeShtb2RlbDdfMikKYGBgCiMjIFBvcm92bmFuaWUgbW9kZWxvdgpgYGB7ciBwb3Jvdm5hbmllLW1vZGVsb3Z9CiMgUG9yb3ZuYW5pZSBtb2RlbG92IHBvbW9jb3UgQU5PVkEgYSBBSUMKYW5vdmEobW9kZWw3XzEsIG1vZGVsN18yKQoKQUlDKG1vZGVsN18xLCBtb2RlbDdfMikKYGBgCgojIyBNdWx0aWtvbGluZWFyaXRhIHZ5c3ZldMS+dWrDumNpY2ggcHJlbWVubsO9Y2gKYGBge3IgdmlmfQojIFBvc8O6ZGVuaWUgbXVsdGlrb2xpbmVhcml0eSBwb21vY291IFZJRgp2aWYobW9kZWw3XzIpCmBgYAoKSG9kbm90eSBWSUYgcHJlIHbFoWV0a3kgdnlzdmV0xL51asO6Y2UgcHJlbWVubsOpIHNhIHBvaHlidWrDuiB2IGludGVydmFsZSBwcmlibGnFvm5lICoqMS4wNCBhxb4gMS40MyoqLCDEjW8gc8O6IHZlxL5taSBuw616a2UgaG9kbm90eS4gQmXFvm7DqSBocmFuaWNlIHByZSBwb3PDumRlbmllIG11bHRpa29saW5lYXJpdHkgc8O6IDUgKG1pZXJuYSBrb2xpbmVhcml0YSkgYSAxMCAodsOhxb5uYSBrb2xpbmVhcml0YSkuCgpOYSB6w6FrbGFkZSB2w71zbGVka292IG3DtMW+ZW1lIGtvbsWhdGF0b3ZhxaUsIMW+ZSB2IHJvesWhw61yZW5vbSBtb2RlbGkgKipuaWUgamUgcHLDrXRvbW7DoSBtdWx0aWtvbGluZWFyaXRhKiogbWVkemkgdnlzdmV0xL51asO6Y2ltaSBwcmVtZW5uw71taS4gUHJlbWVubsOpIG5pZSBzw7ogdnrDoWpvbW5lIHNpbG5lIHrDoXZpc2zDqSBhIG5lb3ZwbHl2xYh1asO6IG5lZ2F0w612bmUgc3RhYmlsaXR1IG9kaGFkdSByZWdyZXNuw71jaCBrb2VmaWNpZW50b3YuCgojIyBEaWFnbm9zdGlrYSBtb2RlbHUKYGBge3IgZGlhZy1ncmFmeSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9Nn0KIyBEaWFnbm9zdGlja8OpIGdyYWZ5IHByZSBtb2RlbDdfMQpwYXIobWZyb3cgPSBjKDIsIDIpKQpwbG90KG1vZGVsN18xKQpwYXIobWZyb3cgPSBjKDEsIDEpKQpgYGAKYGBge3IgZGlhZy1ub3JtYWxpdGF9CiMgVGVzdHkgbm9ybWFsaXR5IHJlesOtZHXDrQpzaGFwaXJvLnRlc3QocmVzaWR1YWxzKG1vZGVsN18xKSkKamFycXVlLmJlcmEudGVzdChyZXNpZHVhbHMobW9kZWw3XzEpKQpgYGAKCmBgYHtyIGRpYWctaGV0ZXJvc2tlZGFzdGljaXRhfQojIFRlc3QgaGV0ZXJvc2tlZGFzdGljaXR5IHJlesOtZHXDrSAoQnJldXNjaOKAk1BhZ2Fub3YgdGVzdCkKYnB0ZXN0KG1vZGVsN18xKQoKIyBLb2VmaWNpZW50eSBzIHJvYnVzdG7DvW1pIHNtZXJvZGFqbsO9bWkgY2h5YmFtaSAoV2hpdGVvdmEga29yZWtjaWEpCmNvZWZ0ZXN0KG1vZGVsN18xLCB2Y292ID0gdmNvdkhDKG1vZGVsN18xLCB0eXBlID0gIkhDMSIpKQpgYGAKYGBge3IgZGlhZy1hdXRva29yZWxhY2lhfQojIER1cmJpbuKAk1dhdHNvbm92IHRlc3QgYXV0b2tvcmVsw6FjaWUgcmV6w61kdcOtCmR1cmJpbldhdHNvblRlc3QobW9kZWw3XzEpCmBgYApgYGB7ciBkaWFnLXZwbHl2bmUsIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTZ9CiMgVnBseXZuw6kgYSBvZMS+YWhsw6kgcG96b3JvdmFuaWEgcG9kxL5hIENvb2tvdmVqIHZ6ZGlhbGVub3N0aSBhIHDDoWt5CmluZmx1ZW5jZVBsb3QobW9kZWw3XzEsIG1haW4gPSAiVnBseXZuw6kgYSBvZMS+YWhsw6kgcG96b3JvdmFuaWEiKQpgYGAKYGBge3IgZGlhZy12cGx5dm5lLXRhYn0KY29va3MgPC0gY29va3MuZGlzdGFuY2UobW9kZWw3XzEpCnZwbHl2bmUgPC0gd2hpY2goY29va3MgPiA0ICogbWVhbihjb29rcywgbmEucm0gPSBUUlVFKSkKZmlybXlbdnBseXZuZSwgXQpgYGAKIyBaaHJudXRpZSB2w71zbGVka292CgpOYSB6w6FrbGFkZSB2w71zbGVka292IHJlZ3Jlc25laiBhbmFsw716eSBtb8W+bm8gemhybsO6xaUsIMW+ZSB2IG1vZGVsaTdfMSBzIHVrYXpvdmF0ZcS+b20gUk9FIGFrbyB6w6F2aXNsb3UgcHJlbWVubm91OgoKLSBQcmVtZW5uw6EgKipwb2RpZWwgxb5pZW4gdm8gdmVkZW7DrSoqIG3DoSBzw61jZSBwb3ppdMOtdm55IGtvZWZpY2llbnQsIGFsZSBqZWogdnBseXYgbmEgUk9FIG5pZSBqZSDFoXRhdGlzdGlja3kgdsO9em5hbW7DvSAocCA9IDAuNDY1NCkuCi0gUHJlbWVubsOhICoqUk9BKiogbcOhIHBveml0w612bnkgYSDFoXRhdGlzdGlja3kgdsO9em5hbW7DvSB2cGx5diBuYSBST0UgKHAgPSAwLjAwMzEpLiBWecWhxaFpYSByZW50YWJpbGl0YSBha3TDrXYgdmVkaWUgayB2ecWhxaFlaiByZW50YWJpbGl0ZSB2bGFzdG7DqWhvIGthcGl0w6FsdS4KLSBQcmVtZW5uw6EgKipFQklUREEgbWFyxb5hKiogbcOhIG5lZ2F0w612bnksIGFsZSDFoXRhdGlzdGlja3kgbmV2w716bmFtbsO9IHZwbHl2IG5hIFJPRSAocCA9IDAuMzgyMCkuCi0gTW9kZWwgYWtvIGNlbG9rIGplIMWhdGF0aXN0aWNreSB2w716bmFtbsO9IChwLWhvZG5vdGEgRi10ZXN0dSA9IDAuMDA4MikgYSB2eXN2ZXTEvnVqZSBwcmlibGnFvm5lIDE2ICUgdmFyaWFiaWxpdHkgUk9FIChBZGp1c3RlZCBSwrIgPSAwLjE2MzQpLgoKUHJpIHBvcm92bmFuw60gbW9kZWxvdiBwb21vY291IGluZm9ybWHEjW7DqWhvIGtyaXTDqXJpYSBBSUMgdnljaMOhZHphIGxlcMWhaWUgamVkbm9kdWNoxaHDrSBtb2RlbCAqKm1vZGVsN18xKiogKEFJQyA9IDY0LjY1KSB2IHBvcm92bmFuw60gcyByb3rFocOtcmVuw71tICoqbW9kZWw3XzIqKiAoQUlDID0gNzAuMzkpLiBaYXJhZGVuaWUga2F0ZWfDs3JpZSBhIHByw6F2bmVqIGZvcm15IHBvZG5pa292IHByZXRvIG5lcHJpbmllc2xvIHpsZXDFoWVuaWUga3ZhbGl0eSBtb2RlbHUuCgpWw71zbGVka3kgdGVzdG92IGRpYWdub3N0aWt5IHVrw6F6YWxpLCDFvmU6CgotIFBvZMS+YSB0ZXN0b3Ygbm9ybWFsaXR5IChTaGFwaXJv4oCTV2lsayBhIEphcnF1ZeKAk0JlcmEpIHJlesOtZHXDoSBtb2RlbHUgbmllIHPDuiBub3Jtw6FsbmUgcm96ZGVsZW7DqSwgxI1vIHpuYW1lbsOhIG9kY2jDvWxrdSBvZCBwcmVkcG9rbGFkdSBub3JtYWxpdHkuCi0gQnJldXNjaOKAk1BhZ2Fub3YgdGVzdCBuZXByZXVrw6F6YWwgcHLDrXRvbW5vc8WlIGhldGVyb3NrZWRhc3RpY2l0eSwgcHJldG8gcHJlZHBva2xhZCBrb27FoXRhbnRuw6lobyByb3pwdHlsdSByZXrDrWR1w60gbW/Fvm5vIHBvdmHFvm92YcWlIHphIHNwbG5lbsO9LgotIER1cmJpbuKAk1dhdHNvbm92IHRlc3QgbmF6bmHEjXVqZSBwcsOtdG9tbm9zxaUgYXV0b2tvcmVsw6FjaWUgcHJ2w6lobyByw6FkdSBtZWR6aSByZXrDrWR1YW1pLgotIEhvZG5vdHkgVklGIHVrw6F6YWxpLCDFvmUgdiByb3rFocOtcmVub20gbW9kZWxpIG5pZSBqZSBwcsOtdG9tbsOhIG11bHRpa29saW5lYXJpdGEgbWVkemkgdnlzdmV0xL51asO6Y2ltaSBwcmVtZW5uw71taS4KCkNlbGtvdm8gbW/Fvm5vIGtvbsWhdGF0b3ZhxaUsIMW+ZSBuYWp2aG9kbmVqxaHDrW0geiBhbmFseXpvdmFuw71jaCBtb2RlbG92IGplIGplZG5vZHVjaMWhw60gbW9kZWw3XzEsIHByacSNb20ga8S+w7rEjW92w71tIHZ5c3ZldMS+dWrDumNpbSBmYWt0b3JvbSBST0UgamUgcmVudGFiaWxpdGEgYWt0w612IChST0EpLiBQcmkgaW50ZXJwcmV0w6FjaWkgdsO9c2xlZGtvdiBqZSB2xaFhayBwb3RyZWJuw6kgYnJhxaUgZG8gw7p2YWh5IHppc3RlbsOpIHBvcnXFoWVuaWEgbmlla3RvcsO9Y2ggcHJlZHBva2xhZG92IGxpbmXDoXJuZWhvIHJlZ3Jlc27DqWhvIG1vZGVsdSAobmFqbcOkIG5vcm1hbGl0YSBhIG5lesOhdmlzbG9zxaUgcmV6w61kdcOtKS4KIyMgVGVzdCBzcHLDoXZuZWogxaFwZWNpZmlrw6FjaWUgbW9kZWx1IChSRVNFVCB0ZXN0KQpgYGB7ciByZXNldC10ZXN0fQpyZXNldHRlc3QobW9kZWw3XzEpCmBgYApSRVNFVCB0ZXN0IHNrw7ptYSwgxI1pIGplIG1vZGVsIHNwcsOhdm5lIMWhcGVjaWZpa292YW7DvS4gQWsgamUgcC1ob2Rub3RhIG7DrXprYSwgbW9kZWwgb2JzYWh1amUgbmVsaW5lYXJpdHkgYWxlYm8gY2jDvWJhasO6Y2UgcHJlbWVubsOpLiBOYSB6w6FrbGFkZSB2w71zbGVka292IG3DtMW+ZW1lIHZ5aG9kbm90acWlLCDEjWkgamUgbW9kZWw3XzEgc3Byw6F2bmUgxaFwZWNpZmlrb3ZhbsO9LgoKIyMgQm944oCTQ294IHRlc3QgcHJlIHbDvWJlciB2aG9kbmVqIHRyYW5zZm9ybcOhY2llIHrDoXZpc2xlaiBwcmVtZW5uZWoKYGBge3IgYm94Y294fQpsaWJyYXJ5KE1BU1MpCgpib3hjb3gobW9kZWw3XzEsIGxhbWJkYSA9IHNlcSgtMiwgMiwgMC4xKSkKYGBgCiMjIEJveOKAk0NveCB0cmFuc2Zvcm3DoWNpYQoKQm944oCTQ294IHRyYW5zZm9ybcOhY2l1IG5pZSBqZSBtb8W+bsOpIHBvdcW+acWlLCBwcmV0b8W+ZSB6w6F2aXNsw6EgcHJlbWVubsOhIFJPRSBvYnNhaHVqZSBhaiB6w6Fwb3Juw6kgaG9kbm90eS4gQm944oCTQ294IG1ldMOzZGEgdnnFvmFkdWplIHN0cmlrdG5lIGtsYWRuw6kgaG9kbm90eSB6w6F2aXNsZWogcHJlbWVubmVqLCBwcmV0byB2w71zbGVkb2sgbmVtb8W+bm8gdnlwb8SNw610YcWlLgoKWiB0b2h0byBkw7R2b2R1IEJveOKAk0NveCB0cmFuc2Zvcm3DoWNpdSB2IGFuYWzDvXplIG5lcG91xb5pamVtZS4KYGBge3IgYm94Y294LWNoZWNrfQpzdW1tYXJ5KGZpcm15JFJPRSkKYGBgCiMjIFRlc3Qgc3Byw6F2bmVqIMWhcGVjaWZpa8OhY2llIG1vZGVsdSAoUkVTRVQgdGVzdCkKYGBge3J9CnJlc2V0dGVzdChtb2RlbDdfMSkKCmBgYAojIyBaw6F2ZXJlxI1uw6kgemhybnV0aWUKClYgdG9tdG8gY3ZpxI1lbsOtIHNtZSBhbmFseXpvdmFsaSB2cGx5diBwb2RpZWx1IMW+aWVuIHZvIHZlZGVuw60sIHVrYXpvdmF0ZcS+YSBST0EgYSBFQklUREEgbWFyxb5lIG5hIHJlbnRhYmlsaXR1IHZsYXN0bsOpaG8ga2FwaXTDoWx1IChST0UpIHByZSB2eWJyYW7DvSBzw7pib3IgNTMgcG9kbmlrb3YuCgpOYSB6w6FrbGFkZSB2w71zbGVka292IHJlZ3Jlc27DqWhvIG1vZGVsdSBtw7TFvmVtZSB6aHJuw7rFpSBuYXNsZWRvdm7DqToKCi0gUHJlbWVubsOhICoqUk9BKiogbcOhIHBveml0w612bnkgYSDFoXRhdGlzdGlja3kgdsO9em5hbW7DvSB2cGx5diBuYSBST0UsIMSNbyB6bmFtZW7DoSwgxb5lIHJhc3QgcmVudGFiaWxpdHkgYWt0w612IHZlZGllIGFqIGsgcmFzdHUgcmVudGFiaWxpdHkgdmxhc3Ruw6lobyBrYXBpdMOhbHUuCi0gUHJlbWVubsOpICoqcG9kaWVsIMW+aWVuIHZvIHZlZGVuw60qKiBhICoqRUJJVERBIG1hcsW+YSoqIG5ldnlrYXp1asO6IMWhdGF0aXN0aWNreSB2w716bmFtbsO9IHZwbHl2IG5hIFJPRS4KLSBNb2RlbCBha28gY2Vsb2sgamUgxaF0YXRpc3RpY2t5IHbDvXpuYW1uw70gKHAgPSAwLjAwODIpIGEgdnlzdmV0xL51amUgcHJpYmxpxb5uZSAxNiAlIHZhcmlhYmlsaXR5IFJPRSAoQWRqdXN0ZWQgUsKyID0gMC4xNjM0KS4KClByaSBwb3Jvdm5hbsOtIG1vZGVsb3YgcG9tb2NvdSBBSUMgYm9sIHphIHZob2RuZWrFocOtIG96bmHEjWVuw70gamVkbm9kdWNoxaHDrSBtb2RlbCAqKm1vZGVsN18xKiosIGtlxI/FvmUgcm96xaHDrXJlbsO9IG1vZGVsIChzIGthdGVnw7NyaW91IGEgcHLDoXZub3UgZm9ybW91IHBvZG5pa292KSBuZXZpZWRvbCBrIHpsZXDFoWVuaXUgdnlzdmV0xL5vdmFjZWogc2Nob3Bub3N0aS4KCkRpYWdub3N0aWthIG1vZGVsdSB1a8OhemFsYSwgxb5lOgotIG11bHRpa29saW5lYXJpdGEgbmllIGplIHByw610b21uw6EgKFZJRiA8IDIpLAotIFJFU0VUIHRlc3QgbmVwb3R2cmRpbCBjaHlibsO6IMWhcGVjaWZpa8OhY2l1IG1vZGVsdSwgdGFrxb5lIG1vZGVsIGplIHogaMS+YWRpc2thIGZ1bmvEjW5laiBmb3JteSBuYXN0YXZlbsO9IHNwcsOhdm5lLAotIGhldGVyb3NrZWRhc3RpY2l0YSBuZWJvbGEgcHJldWvDoXphbsOhLAotIEJveOKAk0NveCB0cmFuc2Zvcm3DoWNpdSBuZWJvbG8gbW/Fvm7DqSBwb3XFvmnFpSwga2XEj8W+ZSBwcmVtZW5uw6EgUk9FIG9ic2FodWplIGFqIHrDoXBvcm7DqSBob2Rub3R5LgoKQ2Vsa292byBtb8W+bm8ga29uxaF0YXRvdmHFpSwgxb5lIG5hanZob2RuZWrFocOtbSBtb2RlbG9tIHByZSBkYW7DqSBkw6F0YSBqZSBqZWRub2R1Y2jDvSBtb2RlbDdfMSwgcHJpxI1vbSBrxL7DusSNb3bDvW0gZmFrdG9yb20gb3ZwbHl2xYh1asO6Y2ltIFJPRSBqZSB1a2F6b3ZhdGXEviBST0EuIE1vZGVsIGplIMWhdGF0aXN0aWNreSBwcmlqYXRlxL5uw70sIGFqIGtlxI8gdnlzdmV0xL51amUgaWJhIMSNYXPFpSB2YXJpYWJpbGl0eSBST0UsIMSNbyBqZSB0eXBpY2vDqSBwcmkgZmluYW7EjW7DvWNoIHVrYXpvdmF0ZcS+b2NoIG92cGx5dsWIb3ZhbsO9Y2ggxaFpcm9rw71tIHNwZWt0cm9tIGZha3Rvcm92LgoKCgoKCg==