Hypothese

H1: Es gibt einen Zusammenhang zwischen der Nettowarmmiete(Netto_Warmmiete) und der Nettokosten in Prozentpunkten (Nebenkosten_Prozent_von_KaltMiete).

H0: Es gibt keinen Zusammenhang zwischen der Nettowarmmiete(Netto_Warmmiete) und der Nettokosten in Prozentpunkten (Nebenkosten_Prozent_von_KaltMiete).

Prüfen der Voraussetzungen der einfachen Regressionsanalyse

Die abhängige und die unabhängige Variable sind intervallskaliert.UV Nettowarmmiete ist metrisch und die AV Nebenkosten_Prozent_von_KaltMiete ist ebenfalls metrisch.

Linearität des Zusammenhangs: Es wird ein linearer Zusammenhang zwischen der abhängigen und der unabhängigen Variablen modelliert. <-siehe Scatterplot und Pearson

Unabhängigkeit des Fehlerwerts: Die Fehlerwerte hängen nicht voneinander ab. <- siehe Homoskedastizität

Normalverteilung des Fehlerwerts: Die Fehlerwerte sind näherungsweise normalverteilt. <- siehe Histogramm

Boxplots

boxplot(regression$Netto_Warmmiete, main="Boxplot zur Warmmiete", xlab="Warmiete in Euro", ylab="Preis pro m²")

Es liegen keine Ausreißer in der Einzelbetrachtung vor.

neben <- boxplot(regression$Nebenkosten_Prozent_von_KaltMiete, main="Boxplot zur Kosten in Prozent", xlab="Kaltmiete und  Nebenkosten ins Verhältnis", ylab="Preis pro m²")

neben
$stats
           [,1]
[1,] 0.08333333
[2,] 0.25591667
[3,] 0.40445238
[4,] 0.59366667
[5,] 1.09250000

$n
[1] 100

$conf
          [,1]
[1,] 0.3510879
[2,] 0.4578169

$out
[1] 1.888000 1.872000 1.788000 1.988000 1.362857 1.376667 1.116667

$group
[1] 1 1 1 1 1 1 1

$names
[1] ""

Es gibt einige Ausreißer. Grundsätzlich ist das für diese Auswertung eher kein Problem, da der Datensatz relativ groß ist.

Ausreißer finden und löschen

ausreisser <- neben$out
ausreisser
[1] 1.888000 1.872000 1.788000 1.988000 1.362857 1.376667 1.116667

# Diese Zeilen sollen entfernt werden
drops <- c(21)

# Zeilen löschen
loeschen <- regression[-drops,]
View(regression)

Deskriptive Statistik

Für die deskriptive Statistik empfiehlt es sich das Package “psych” zu verwenden.

library(psych)
describe(regression)
ABCDEFGHIJ0123456789
 
 
vars
<dbl>
n
<dbl>
mean
<dbl>
sd
<dbl>
median
<dbl>
trimmed
<dbl>
mad
<dbl>
min
<dbl>
max
<dbl>
ID110050.5029.0150.5050.5037.061.00100.00
Netto_Kaltmiete210014.975.7015.0014.977.415.0025.00
Netto_Warmmiete310021.056.0620.4021.057.388.9233.92
Nebenkosten41006.082.476.316.113.162.0010.00
Nebenkosten_Prozent_von_KaltMiete51000.500.390.400.430.260.081.99

Die Warmmiete liegt bei 21.05 Euro pro m²(SD=6.06, n= 100). Der Anzahl der Kosten ins Verhätnis legt bei 50 Prozentpunkten (SD= .39, n= 100). Es zeigt sich, dass der Anzahl der Prozentpunkt nach oben verschoben ist (Median=.40).

Scatterplot und Pearson

Nicht in jedem Fall besteht eine lineare Beziehung zwischen y und x. Dennoch kann die Regressionsanalyse auch für nicht-lineare Zusammenhänge genutzt werden, indem man die beteiligten Variablen zunächst so transformiert, dass das Ergebnis linear wird. Typischerweise werden dafür geeignete mathematische Transformationen (z.B. logarithmisch, polynomisch) auf y und/oder x angewendet.

Anschließend wird nicht die ursprüngliche Beziehung zwischen y und x modelliert, sondern zwischen den entsprechend veränderten Werten. Durch diesen Ansatz lässt sich ein scheinbar nicht-linearer Zusammenhang mithilfe der linearen Regression untersuchen, da die Methode nun auf die transformierten Variablen angewendet wird.

plot( regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete, main= "Streudiagramm Warmmiete und Kosten ins Verhältnis", xlab = "Warmmiete" , ylab="Kaltmiete und die Nebenkosten ins Verhältnis (in %)")
abline(lm(Nebenkosten_Prozent_von_KaltMiete ~ Netto_Warmmiete, data = regression), col="tomato")

Das Streudiagramm lässt für das Beispiel einen negativen Zusammenhang vermuten. Damit scheint die Voraussetzung, dass der Zusammenhang an sich linear ist, erfüllt.


test <- cor.test(regression$Netto_Warmmiete, regression$Nebenkosten_Prozent_von_KaltMiete)
test

    Pearson's product-moment correlation

data:  regression$Netto_Warmmiete and regression$Nebenkosten_Prozent_von_KaltMiete
t = -4.0234, df = 98, p-value = 0.000113
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.5334832 -0.1944839
sample estimates:
       cor 
-0.3765189 

Der R-Output in Abbildung gibt den Korrelationskoeffizienten sowie den p-Wert (Signifikanz) und die Stichprobengrösse n wieder. Es wird ersichtlich, dass ein Zusammenhang vorliegt zwischen Warmniete und Nebenkosten in Prozent(r = -0.3763, p= .000113, n = 100). Da r einen negativen Wert aufweist, kann von einem negativen, linearen und signifikanten Zusammenhang zwischen Warmmiete und Kosten in Prozent ausgegangen werden.

Da der Korrelation mittelstark und signifikant ist, ist es sinnvoll eine Regression durchzuführen zur Prüfung der Kausalität.

Homoskedastizität

Unter Homoskedastizität versteht man die Annahme, dass der Fehlerterm für alle Werte der unabhängigen Variable dieselbe Varianz aufweist. Anders ausgedrückt: Die Streuung der Residuen ändert sich nicht, egal welchen Wert x annimmt. Diese Voraussetzung überprüft man häufig im selben Streudiagramm, in dem bereits der bedingte Erwartungswert der Fehler kontrolliert wurde.

Weil die gemessenen Datenpunkte in der Realität meist nicht exakt auf der Regressionsgeraden liegen, beinhaltet jedes Regressionsmodell einen Fehlerterm (ε). Er spiegelt jene Einflüsse wider, die nicht durch die unabhängige Variable erklärt werden können. Mit anderen Worten: ε entspricht der Differenz zwischen dem vom Modell vorhergesagten Wert für eine bestimmte Beobachtung (Proband i) und dem tatsächlich gemessenen Wert dieses Probanden.


regression1 <-  lm(regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete )

zpred <- scale(fitted(regression1), center = T, scale = T)
sres <-rstandard(regression1)

plot (x=zpred, y=sres, main = "Streudiagramm der Residuen", 
      xlab ="Regression: Standardisierter geschätzter Wert", 
      ylab = "Regression: Standardisiertes Residuum",
      col = "darkblue")

abline (a=0, b=0)

Bei der optischen Prüfung der Daten prüfen wir auf Homoskedastizität. Unsere Daten lassen auf Homoskedastizität schließen. Das wäre nicht der Fall, wenn die Daten eher Trompetenform sich darstellen. Gerne kann hier großzügig gearbeitet werden.

Histogramme

hist (sres, freq = T, breaks = 10, main ="Verteilung des Fehlerwerts", xlab= "Regression: Standardisiertes Residuum", ylab="Häufigkeiten", xlim = c(-3,5),ylim = c(0,40), col = "lightblue" )

Das Histogramm ist normalverteilt, wenn auch nicht perfekt.

Signifikanz des Regressionsmodells und der Regressionskoeffizienten

Um zu ermitteln, ob ein Regressionsmodell in seiner Gesamtheit signifikant ist, kommt der sogenannte F-Test zum Einsatz. Er überprüft, ob die Einbeziehung einer oder mehrerer unabhängiger Variablen die Vorhersage der abhängigen Variable tatsächlich verbessert. Mit anderen Worten beurteilt der F-Test, ob das gesamte Modell einen statistisch bedeutsamen Erklärungsbeitrag liefert.


regression1 <-  lm(regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete )

reg <- summary(regression1)
reg

Hinweis -> Zuerst die abhängige Varibale nennen und dann die unabhängige Varibale. In unserem Beispiel ist die AV = Nebenkosten_Prozent_von_KaltMiete und die UV = Warmmiete

Signifikanz des Regressionsmodells

Das Gesamtmodell wird signifikant(F(1,98)=16.19, p = .0001, n=100)

Regressionsmodells

Die Auswertung (siehe Abbildung) macht deutlich, dass sowohl der Regressionskoeffizient für Netto_Warmmiete (t = -4.023, p < .001) als auch die Konstante (Y-Achsenabschnitt; t = 1.011, p < .001) statistisch signifikant sind. Eine signifikante Konstante bedeutet in diesem Fall, dass der Schnittpunkt mit der Y-Achse ungleich null ist und die Regressionsgerade somit nicht durch den Ursprung verläuft.

Ebenso ist der Regressionskoeffizient von Nebenkosten_Prozent_von_KaltMiete signifikant von null verschieden. Dies weist darauf hin, dass die Variable Netto_Warmmiete einen messbaren Einfluss auf die Nebenkosten_Prozent_von_KaltMiete ausübt. In der folgenden Regressionsgleichung wird dieser Zusammenhang deutlich:

Nebenkosten_Prozent_von_KaltMiete = 1.011465 − 0.024114 × Netto_Warmmiete

Die Interpretation des Koeffizienten für Netto_Warmmiete gestaltet sich wie folgt: Erhöht sich die Warmmiete um eine Einheit (zum Beispiel einen Euro), so nimmt der Wert von Nebenkosten_Prozent_von_KaltMiete im Durchschnitt um 0.024 Einheiten ab. Das entspricht einem Rückgang von 2,4 Prozentpunkten.

Bestimmtheitsmaß R2

reg$adj.r.squared
[1] 0.133009

Das sogenannte R-Quadrat (auch als Bestimmtheitsmaß bezeichnet) gibt Auskunft darüber, wie gut ein Regressionsmodell zu den vorliegenden Daten passt. Es zeigt an, welcher Anteil der Gesamtstreuung in der abhängigen Variable durch die unabhängigen Variablen erklärt wird. Das R-Quadrat kann zwischen 0 und 1 liegen: Ein Wert von 0 bedeutet, dass das Modell keinerlei Vorhersagekraft besitzt, während ein Wert von 1 darauf hindeutet, dass die beobachteten Daten perfekt erklärt werden. Mit wachsendem R-Quadratwert nimmt also die Güte der Modellanpassung (engl. „Goodness of Fit“) zu.

Bei multiplen Regressionsmodellen steigt das R-Quadrat automatisch, wenn weitere unabhängige Variablen in das Modell aufgenommen werden – selbst wenn diese keine wirkliche Erklärungskraft besitzen. Deshalb verwendet man zusätzlich das korrigierte R-Quadrat, das diese Verzerrung abmildert, indem es die Zahl der Prädiktoren sowie die Stichprobengröße in die Berechnung einbezieht. Je mehr Einflussfaktoren im Modell enthalten sind und je kleiner die Stichprobe ist, desto deutlicher fällt diese Abschwächung von R-Quadrat aus. In der Praxis berichten viele Programme deshalb standardmäßig sowohl das „normale“ R-Quadrat als auch das korrigierte R-Quadrat. Dies gilt sogar im Fall einer einfachen Regression (nur eine unabhängige Variable).

Im vorliegenden Beispiel beträgt das R-Quadrat .133. Das bedeutet, dass rund 13,3 % der Streuung in Nebenkosten_Prozent_von_KaltMiete durch die Variable Netto_Warmmiete erklärt werden kann.

Berechnung der Effektstärke

Häufig genügt es nicht, allein festzustellen, dass ein statistischer Zusammenhang signifikant ist. Um zusätzlich die Bedeutung oder Größe des Effekts einzuschätzen, werden sogenannte Effektstärken herangezogen. Im obigen Beispiel kann man zwar sehen, dass 13,3 % der Gesamtstreuung in der abhängigen Variable durch die unabhängige Variable erklärt werden (R-Quadrat = 0,133), doch stellt sich die Frage, ob dies als klein, mittel oder groß zu bewerten ist.

In der Forschung werden dafür unterschiedliche Kennzahlen eingesetzt. Besonders verbreitet ist die Effektgröße nach Cohen (d), aber auch der Korrelationskoeffizient (r) nach Pearson findet häufig Anwendung. Letzterer kann Werte zwischen 0 (keinerlei Effekt) und 1 (maximaler Effekt) annehmen und eignet sich daher gut zur Verdeutlichung der Effektstärke.

Das bei Regressionen oft berichtete Bestimmtheitsmaß (R-Quadrat) lässt sich zudem in die Effektstärke f nach Cohen (1988) umrechnen. Diese Effektgröße reicht theoretisch von 0 bis unendlich und wird folgendermaßen berechnet:

R2(1R2)

Auf diese Weise lässt sich abschätzen, wie viel Substanz hinter der reinen Signifikanz steckt. Ein R-Quadrat von 0,133 bedeutet beispielsweise, dass sich 13,3 % der Streuung in der abhängigen Variable mit Hilfe der unabhängigen Variable erklären lassen. Ob das als nennenswerte Effektstärke gilt, hängt jedoch vom konkreten Forschungsfeld und den gängigen Richtwerten (z.B. nach Cohen) ab.


f<- sqrt(reg$adj.r.squared/ (1-reg$adj.r.squared))
f

Um die Stärke dieses Effekts zu beurteilen, eignet sich die Einteilung von Cohen (1988):

f = .10 entspricht einem schwachen Effekt
f = .25 entspricht einem mittleren Effekt
f = .40 entspricht einem starken Effekt

Damit entspricht die Effektstärke von 0.39 einem starken Effekt.

Eine Aussage

Die Höhe der Nettowarmmiete (Nettowarmmiete) hat einen Einfluss darauf, wie hoch die Nebenkosten in Prozent von Kaltmiete (Nebenkosten_Prozent_von_KaltMiete) sind(F(1, 95) = 16.19 p = .000, n = 100). Mit dem einem Euro mehr an der Warmmiete sinken die Nebenkosten in Prozent um 2,4 Prozentpunkte. 13.3% der Streuung des Nebenkosten in Prozent an der Kaltmiete wird durch die Warmmiete erklärt, was nach Cohen (1988) einem starken Effekt entspricht. H0 kannn verworfen werden.

LS0tDQp0aXRsZTogImVpbmZhY2hlIFJlZ3Jlc3Npb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCiMJSHlwb3RoZXNlDQpIMTogRXMgZ2lidCBlaW5lbiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVyIE5ldHRvd2FybW1pZXRlKCpOZXR0b19XYXJtbWlldGUqKSB1bmQgZGVyIE5ldHRva29zdGVuIGluIFByb3plbnRwdW5rdGVuIChOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUpLg0KDQpIMDogRXMgZ2lidCBrZWluZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlciBOZXR0b3dhcm1taWV0ZSgqTmV0dG9fV2FybW1pZXRlKikgdW5kIGRlciBOZXR0b2tvc3RlbiBpbiBQcm96ZW50cHVua3RlbiAoTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlKS4NCg0KDQoNCiMgUHLDvGZlbiBkZXIgVm9yYXVzc2V0enVuZ2VuIGRlciBlaW5mYWNoZW4gUmVncmVzc2lvbnNhbmFseXNlDQoNCg0KRGllIGFiaMOkbmdpZ2UgdW5kIGRpZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgc2luZCBpbnRlcnZhbGxza2FsaWVydC5VViBOZXR0b3dhcm1taWV0ZSBpc3QgbWV0cmlzY2ggdW5kIGRpZSBBViBOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgaXN0IGViZW5mYWxscyBtZXRyaXNjaC4NCg0KTGluZWFyaXTDpHQgZGVzIFp1c2FtbWVuaGFuZ3M6IEVzIHdpcmQgZWluIGxpbmVhcmVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZXIgYWJow6RuZ2lnZW4gdW5kIGRlciB1bmFiaMOkbmdpZ2VuIFZhcmlhYmxlbiBtb2RlbGxpZXJ0LiA8LXNpZWhlIFNjYXR0ZXJwbG90IHVuZCBQZWFyc29uDQoNClVuYWJow6RuZ2lna2VpdCBkZXMgRmVobGVyd2VydHM6IERpZSBGZWhsZXJ3ZXJ0ZSBow6RuZ2VuIG5pY2h0IHZvbmVpbmFuZGVyIGFiLiA8LSBzaWVoZSBIb21vc2tlZGFzdGl6aXTDpHQNCg0KTm9ybWFsdmVydGVpbHVuZyBkZXMgRmVobGVyd2VydHM6IERpZSBGZWhsZXJ3ZXJ0ZSBzaW5kIG7DpGhlcnVuZ3N3ZWlzZSBub3JtYWx2ZXJ0ZWlsdC4gPC0gc2llaGUgSGlzdG9ncmFtbQ0KDQoNCg0KIwlCb3hwbG90cw0KDQoNCg0KYGBge3J9DQpib3hwbG90KHJlZ3Jlc3Npb24kTmV0dG9fV2FybW1pZXRlLCBtYWluPSJCb3hwbG90IHp1ciBXYXJtbWlldGUiLCB4bGFiPSJXYXJtaWV0ZSBpbiBFdXJvIiwgeWxhYj0iUHJlaXMgcHJvIG3CsiIpDQoNCmBgYA0KRXMgbGllZ2VuIGtlaW5lIEF1c3JlacOfZXIgaW4gZGVyIEVpbnplbGJldHJhY2h0dW5nIHZvci4NCg0KDQoNCmBgYHtyfQ0KbmViZW4gPC0gYm94cGxvdChyZWdyZXNzaW9uJE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSwgbWFpbj0iQm94cGxvdCB6dXIgS29zdGVuIGluIFByb3plbnQiLCB4bGFiPSJLYWx0bWlldGUgdW5kICBOZWJlbmtvc3RlbiBpbnMgVmVyaMOkbHRuaXMiLCB5bGFiPSJQcmVpcyBwcm8gbcKyIikNCm5lYmVuDQoNCmBgYA0KRXMgZ2lidCBlaW5pZ2UgQXVzcmVpw59lci4gR3J1bmRzw6R0emxpY2ggaXN0IGRhcyBmw7xyIGRpZXNlIEF1c3dlcnR1bmcgZWhlciBrZWluIFByb2JsZW0sIGRhIGRlciBEYXRlbnNhdHogcmVsYXRpdiBncm/DnyBpc3QuDQoNCg0KICMgQXVzcmVpw59lciBmaW5kZW4gdW5kIGzDtnNjaGVuDQpgYGB7cn0NCmF1c3JlaXNzZXIgPC0gbmViZW4kb3V0DQphdXNyZWlzc2VyDQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQojIERpZXNlIFplaWxlbiBzb2xsZW4gZW50ZmVybnQgd2VyZGVuDQpkcm9wcyA8LSBjKDIxKQ0KDQojIFplaWxlbiBsw7ZzY2hlbg0KbG9lc2NoZW4gPC0gcmVncmVzc2lvblstZHJvcHMsXQ0KVmlldyhyZWdyZXNzaW9uKQ0KDQpgYGANCg0KDQoNCg0KIyBEZXNrcmlwdGl2ZSBTdGF0aXN0aWsNCkbDvHIgZGllIGRlc2tyaXB0aXZlIFN0YXRpc3RpayBlbXBmaWVobHQgZXMgc2ljaCBkYXMgUGFja2FnZSAicHN5Y2giIHp1IHZlcndlbmRlbi4NCg0KYGBge3J9DQpsaWJyYXJ5KHBzeWNoKQ0KDQpkZXNjcmliZShyZWdyZXNzaW9uKQ0KYGBgDQoNCkRpZSBXYXJtbWlldGUgbGllZ3QgYmVpIDIxLjA1IEV1cm8gcHJvIG3CsihTRD02LjA2LCBuPSAxMDApLiBEZXIgQW56YWhsIGRlciBLb3N0ZW4gaW5zIFZlcmjDpHRuaXMgbGVndCBiZWkgNTAgUHJvemVudHB1bmt0ZW4gKFNEPSAuMzksIG49IDEwMCkuIEVzIHplaWd0IHNpY2gsIGRhc3MgZGVyIEFuemFobCBkZXIgUHJvemVudHB1bmt0IG5hY2ggb2JlbiB2ZXJzY2hvYmVuIGlzdCAoTWVkaWFuPS40MCkuDQoNCg0KDQojCVNjYXR0ZXJwbG90IHVuZCBQZWFyc29uDQoNCkVzIGdpbHQgYW56dW1lcmtlbiwgZGFzcyBhdWNoIG5pY2h0LWxpbmVhcmUgWnVzYW1tZW5ow6RuZ2Ugendpc2NoZW4geSB1bmQgeCBtaXR0ZWxzIFJlZ3Jlc3Npb25zYW5hbHlzZSB1bnRlcnN1Y2h0IHdlcmRlbiBrw7ZubmVuLiBEYXp1IHdpcmQgZGVyIFp1c2FtbWVuaGFuZyB2b3IgZGVyIFJlZ3Jlc3Npb25zYW5hbHlzZSBkZXJhcnQgdHJhbnNmb3JtaWVydCwgZGFzcyBlciBsaW5lYXIgd2lyZC4gRGllcyBnZXNjaGllaHQgZHVyY2ggZWluZSBUcmFuc2Zvcm1hdGlvbiB2b24geSB1bmQvb2RlciB4LiBBbnNjaGxpZXNzZW5kIHdpcmQgbmljaHQgZGVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiB5IHVuZCB4IG1vZGVsbGllcnQsIHNvbmRlcm4gendpc2NoZW4gZGVuIGFsbGVuZmFsbHMgdHJhbnNmb3JtaWVydGVuIFZhcmlhYmxlbi4NCg0KDQoNCg0KYGBge3J9DQpwbG90KHJlZ3Jlc3Npb24kTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIH4gcmVncmVzc2lvbiROZXR0b19XYXJtbWlldGUsIG1haW49ICJTdHJldWRpYWdyYW1tIFdhcm1taWV0ZSB1bmQgS29zdGVuIGlucyBWZXJow6RsdG5pcyIsIHhsYWIgPSAiV2FybW1pZXRlIiAsIHlsYWI9IkthbHRtaWV0ZSB1bmQgZGllIE5lYmVua29zdGVuIGlucyBWZXJow6RsdG5pcyAoaW4gJSkiKQ0KYWJsaW5lKGxtKE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSB+IE5ldHRvX1dhcm1taWV0ZSwgZGF0YSA9IHJlZ3Jlc3Npb24pLCBjb2w9InRvbWF0byIpDQoNCmBgYA0KRGFzIFN0cmV1ZGlhZ3JhbW0gbMOkc3N0IGbDvHIgZGFzIEJlaXNwaWVsIGVpbmVuIG5lZ2F0aXZlbiBadXNhbW1lbmhhbmcgdmVybXV0ZW4uIERhbWl0IHNjaGVpbnQgZGllIFZvcmF1c3NldHp1bmcsIGRhc3MgZGVyIFp1c2FtbWVuaGFuZyBhbiBzaWNoIGxpbmVhciBpc3QsIGVyZsO8bGx0Lg0KDQpgYGB7cn0NCg0KdGVzdCA8LSBjb3IudGVzdChyZWdyZXNzaW9uJE5ldHRvX1dhcm1taWV0ZSwgcmVncmVzc2lvbiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUpDQp0ZXN0DQoNCmBgYA0KRGVyIFItT3V0cHV0IGluIEFiYmlsZHVuZyBnaWJ0IGRlbiBLb3JyZWxhdGlvbnNrb2VmZml6aWVudGVuIHNvd2llIGRlbiBwLVdlcnQgKFNpZ25pZmlrYW56KSB1bmQgZGllIFN0aWNocHJvYmVuZ3LDtnNzZSBuIHdpZWRlci4gRXMgd2lyZCBlcnNpY2h0bGljaCwgZGFzcyBlaW4gWnVzYW1tZW5oYW5nIHZvcmxpZWd0IHp3aXNjaGVuIFdhcm1uaWV0ZSB1bmQgIE5lYmVua29zdGVuIGluIFByb3plbnQociA9IC0wLjM3NjMsIHA9IC4wMDAxMTMsIG4gPSAxMDApLiANCkRhIHIgZWluZW4gbmVnYXRpdmVuIFdlcnQgYXVmd2Vpc3QsIGthbm4gdm9uIGVpbmVtIG5lZ2F0aXZlbiwgbGluZWFyZW4gdW5kIHNpZ25pZmlrYW50ZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIFdhcm1taWV0ZSB1bmQgS29zdGVuIGluIFByb3plbnQgYXVzZ2VnYW5nZW4gd2VyZGVuLiANCg0KRGEgZGVyIEtvcnJlbGF0aW9uIG1pdHRlbHN0YXJrIHVuZCBzaWduaWZpa2FudCBpc3QsIGlzdCBlcyBzaW5udm9sbCBlaW5lIFJlZ3Jlc3Npb24gZHVyY2h6dWbDvGhyZW4genVyIFByw7xmdW5nIGRlciBLYXVzYWxpdMOkdC4NCg0KDQoNCiMJSG9tb3NrZWRhc3Rpeml0w6R0DQoNCkhvbW9za2VkYXN0aXppdMOkdCBiZWRldXRldCwgZGFzcyBkZXIgRmVobGVyIGbDvHIgamVkZW4gV2VydCBkZXIgdW5hYmjDpG5naWdlIFZhcmlhYmxlIGRpZSBnbGVpY2hlIFZhcmlhbnogYXVmd2Vpc3QuIEdlcHLDvGZ0IHdpcmQgZGllc2UgVm9yYXVzc2V0enVuZyBvZnQgaW0gZ2xlaWNoZW4gU3RyZXVkaWFncmFtbSwgaW4gd2VsY2hlbSBiZXJlaXRzIGRlciBiZWRpbmd0ZSBFcndhcnR1bmdzd2VydCBkZXMgRmVobGVycyBnZXByw7xmdCB3dXJkZS4NCg0KRGEgZGllIGJlb2JhY2h0ZXRlbiBXZXJ0ZSBpbiBkZXIgUmVnZWwgbmljaHQgYXVmIGRlciBSZWdyZXNzaW9uc2dlcmFkZW4gbGllZ2VuLCBiZWluaGFsdGV0IGVpbiBSZWdyZXNzaW9uc21vZGVsbCBpbW1lciBhdWNoIGVpbmVuIEZlaGxlcndlcnQgKEZlaGxlcnRlcm0gzrUpLCBkZXIgZWJlbiBkaWVzZW4gVW50ZXJzY2hpZWRlbiB6d2lzY2hlbiBNb2RlbGwgdW5kIERhdGVuIFJlY2hudW5nIHRyw6RndC4gRXIgc3RlbGx0IGRpZSBFaW5mbMO8c3NlIGF1ZiBkaWUgYWJow6RuZ2lnZSBWYXJpYWJsZSBkYXIsIHdlbGNoZSBuaWNodCBhdWYgZGllIHVuYWJow6RuZ2lnZSBWYXJpYWJsZSB6dXLDvGNrenVmw7xocmVuIHNpbmQuIEFuZGVycyBhdXNnZWRyw7xja3QgaXN0IGRlciBGZWhsZXJ3ZXJ0IGRlciBVbnRlcnNjaGllZCB6d2lzY2hlbiBkZW0gZHVyY2ggZGllIFJlZ3Jlc3Npb25zZ2VyYWRlIHZvcmhlcmdlc2FndGVuIFdlcnQgZGVzIFByb2JhbmRlbiBpIHVuZCBkZW0gdGF0c8OkY2hsaWNoIGdlbWVzc2VuZW4gV2VydCBkZXMgUHJvYmFuZGVuIGkuIA0KDQoNCmBgYHtyfQ0KDQpyZWdyZXNzaW9uMSA8LSAgbG0ocmVncmVzc2lvbiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgfiByZWdyZXNzaW9uJE5ldHRvX1dhcm1taWV0ZSApDQoNCnpwcmVkIDwtIHNjYWxlKGZpdHRlZChyZWdyZXNzaW9uMSksIGNlbnRlciA9IFQsIHNjYWxlID0gVCkNCnNyZXMgPC1yc3RhbmRhcmQocmVncmVzc2lvbjEpDQoNCnBsb3QgKHg9enByZWQsIHk9c3JlcywgbWFpbiA9ICJTdHJldWRpYWdyYW1tIGRlciBSZXNpZHVlbiIsIA0KICAgICAgeGxhYiA9IlJlZ3Jlc3Npb246IFN0YW5kYXJkaXNpZXJ0ZXIgZ2VzY2jDpHR6dGVyIFdlcnQiLCANCiAgICAgIHlsYWIgPSAiUmVncmVzc2lvbjogU3RhbmRhcmRpc2llcnRlcyBSZXNpZHV1bSIsDQogICAgICBjb2wgPSAiZGFya2JsdWUiKQ0KDQphYmxpbmUgKGE9MCwgYj0wKQ0KDQpgYGANCg0KQmVpIGRlciBvcHRpc2NoZW4gUHLDvGZ1bmcgZGVyIERhdGVuIHByw7xmZW4gd2lyIGF1ZiBIb21vc2tlZGFzdGl6aXTDpHQuIFVuc2VyZSBEYXRlbiBsYXNzZW4gYXVmIEhvbW9za2VkYXN0aXppdMOkdCBzY2hsaWXDn2VuLiBEYXMgd8OkcmUgbmljaHQgZGVyIEZhbGwsIHdlbm4gZGllIERhdGVuIGVoZXIgVHJvbXBldGVuZm9ybSBzaWNoIGRhcnN0ZWxsZW4uIEdlcm5lIGthbm4gaGllciBncm/Dn3rDvGdpZyBnZWFyYmVpdGV0IHdlcmRlbi4gDQoNCg0KIwlIaXN0b2dyYW1tZSANCg0KYGBge3J9DQpoaXN0IChzcmVzLCBmcmVxID0gVCwgYnJlYWtzID0gMTAsIG1haW4gPSJWZXJ0ZWlsdW5nIGRlcyBGZWhsZXJ3ZXJ0cyIsIHhsYWI9ICJSZWdyZXNzaW9uOiBTdGFuZGFyZGlzaWVydGVzIFJlc2lkdXVtIiwgeWxhYj0iSMOkdWZpZ2tlaXRlbiIsIHhsaW0gPSBjKC0zLDUpLHlsaW0gPSBjKDAsNDApLCBjb2wgPSAibGlnaHRibHVlIiApDQpgYGANCkRhcyBIaXN0b2dyYW1tIGlzdCBub3JtYWx2ZXJ0ZWlsdCwgd2VubiBhdWNoIG5pY2h0IHBlcmZla3QuIA0KDQojIFNpZ25pZmlrYW56IGRlcyBSZWdyZXNzaW9uc21vZGVsbHMgdW5kIGRlciBSZWdyZXNzaW9uc2tvZWZmaXppZW50ZW4NCg0KDQpadXIgw5xiZXJwcsO8ZnVuZywgb2IgZGFzIFJlZ3Jlc3Npb25zbW9kZWxsIGluc2dlc2FtdCBzaWduaWZpa2FudCBpc3QsIHdpcmQgZWluIEYtVGVzdCBkdXJjaGdlZsO8aHJ0LiBEaWVzZXIgcHLDvGZ0LCBvYiBkaWUgVm9yaGVyc2FnZSBkZXIgYWJow6RuZ2lnZW4gVmFyaWFibGVuIGR1cmNoIGRhcyBIaW56dWbDvGdlbiBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZW4gdmVyYmVzc2VydCB3aXJkLiBEYXMgaGVpc3N0LCBkZXIgRi1UZXN0IHByw7xmdCwgb2IgZGFzIE1vZGVsbCBpbnNnZXNhbXQgZWluZW4gRXJrbMOkcnVuZ3NiZWl0cmFnIGxlaXN0ZXQuIA0KDQpgYGB7cn0NCg0KcmVncmVzc2lvbjEgPC0gIGxtKHJlZ3Jlc3Npb24kTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIH4gcmVncmVzc2lvbiROZXR0b19XYXJtbWlldGUgKQ0KDQpyZWcgPC0gc3VtbWFyeShyZWdyZXNzaW9uMSkNCnJlZw0KYGBgDQoNCkhpbndlaXMgLT4gWnVlcnN0IGRpZSBhYmjDpG5naWdlIFZhcmliYWxlICBuZW5uZW4gdW5kIGRhbm4gZGllIHVuYWJow6RuZ2lnZSBWYXJpYmFsZS4gSW4gdW5zZXJlbSBCZWlzcGllbCBpc3QgZGllIEFWID0gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIHVuZCBkaWUgVVYgPSBXYXJtbWlldGUNCg0KDQojIyMgU2lnbmlmaWthbnogZGVzIFJlZ3Jlc3Npb25zbW9kZWxscw0KRGFzIEdlc2FtdG1vZGVsbCB3aXJkIHNpZ25pZmlrYW50KEYoMSw5OCk9MTYuMTksIHAgPSAuMDAwMSwgbj0xMDApDQoNCg0KIyMjIFJlZ3Jlc3Npb25zbW9kZWxscw0KDQoNCkFiYmlsZHVuZyB6ZWlndCwgZGFzcyBkaWUgdC1UZXN0cyBmw7xyIGRlbiBSZWdyZXNzaW9uc2tvZWZmaXppZW50ZW4gdm9uIE5ldHRvX1dhcm1taWV0ZSAodCA9IC00LjAyMywgcCA9IC4wMDApIHVuZCBkaWUgS29uc3RhbnRlIChkLmguIGRlciBZLUFjaHNlbmFic2Nobml0dDsgdCA9IDEuMDExLCBwID0gLjAwMCkgc2lnbmlmaWthbnQgYXVzZmFsbGVuLiBFaW5lIHNpZ25pZmlrYW50ZSBLb25zdGFudGUgYmVkZXV0ZXQsIGRhc3MgZGVyIFktQWNoc2VuYWJzY2huaXR0IG5pY2h0IDAgYmV0csOkZ3QgdW5kIGRhbWl0IGRpZSBSZWdyZXNzaW9uc2dlcmFkZSBuaWNodCBkdXJjaCBkZW4gVXJzcHJ1bmcgZ2VodC4gDQoNCg0KRGVyIHNpZ25pZmlrYW50ZSBLb2VmZml6aWVudCB2b24gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXQgYmVkZXV0ZXQsIGRhc3MgZGVyIFJlZ3Jlc3Npb25za29lZmZpemllbnQgdm9uIE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0IG5pY2h0IDAgaXN0IHVuZCBOZXR0b19XYXJtbWlldGUgc29taXQgZWluZW4gc2lnbmlmaWthbnRlbiBFaW5mbHVzcyBhdWYgTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIGF1ZndlaXN0LiBTb21pdCBlcmdpYnQgc2ljaCBmb2xnZW5kZSBSZWdyZXNzaW9uc2dlcmFkZTogDQoNCiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgPSAxLjAxMTQ2NSAtMC4wMjQxMTQqTmV0dG9fV2FybW1pZXRlJA0KDQoNCkRlciBLb2VmZml6aWVudCBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZSBOZXR0b19XYXJtbWlldGUgd2lyZCB3aWUgZm9sZ3QgaW50ZXJwcmV0aWVydDogV2VubiBXYXJtbWlldGUgdW0gZWluZSBFaW5oZWl0IHN0ZWlndCAoZWluIHp1c8OkdHpsaWNoZXIgRXVybyksIHNvIHNpbmt0IGRpZSBOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgdW0gMCwwMjQgRWluaGVpdGVuIHp1IChhbHNvIHVtIDIsNCBQcm96ZW50cHVua3RlKS4gDQoNCiMJQmVzdGltbXRoZWl0c21hw58gUjINCg0KDQpgYGB7cn0NCnJlZyRhZGouci5zcXVhcmVkDQpgYGANCkRhcyBzb2dlbmFubnRlICJSLVF1YWRyYXQiIHdpcmQgYXVjaCBhbHMgIkJlc3RpbW10aGVpdHNtYXNzIiBiZXplaWNobmV0LiBFcyB6ZWlndCwgd2llIGd1dCBkYXMgZ2VzY2jDpHR6dGUgTW9kZWxsIHp1IGRlbiBlcmhvYmVuZW4gRGF0ZW4gcGFzc3QuIFItUXVhZHJhdCBiZXNjaHJlaWJ0LCB3ZWxjaGVyIEFudGVpbCBkZXIgR2VzYW10c3RyZXV1bmcgaW4gZGVyIGFiaMOkbmdpZ2VuIFZhcmlhYmxlIGR1cmNoIGRpZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgZXJrbMOkcnQgd2VyZGVuIGthbm4uIFItUXVhZHJhdCBrYW5uIFdlcnRlIHp3aXNjaGVuIDAgdW5kIDEgYW5uZWhtZW4uIDAgYmVkZXV0ZXQsIGRhc3MgZGFzIE1vZGVsbCBrZWluZSBFcmtsw6RydW5nc2tyYWZ0IGJlc2l0enQsIDEgYmVkZXV0ZXQsIGRhc3MgZGFzIE1vZGVsbCBkaWUgYmVvYmFjaHRldGVuIFdlcnRlIHBlcmZla3Qgdm9yaGVyc2FnZW4ga2Fubi4gSmUgaMO2aGVyIGRlciBSLVF1YWRyYXQtV2VydCwgZGVzdG8gYmVzc2VyIGFsc28gZGllIFBhc3N1bmcgendpc2NoZW4gTW9kZWxsIHVuZCBEYXRlbiAoZGFoZXIgZW5nbC4gIkdvb2RuZXNzIG9mIGZpdCIpLg0KDQpSLVF1YWRyYXQgd2lyZCB2b24gZGVyIEFuemFobCBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZW4gaW0gTW9kZWxsIGJlZWluZmx1c3N0LiBEaWVzIGlzdCBpbSBGYWxsZSBkZXIgbXVsdGlwbGVuIFJlZ3Jlc3Npb24gcHJvYmxlbWF0aXNjaCwgZGEgbWVocmVyZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGVuIGluIGRhcyBNb2RlbGwgZWluYmV6b2dlbiB3ZXJkZW4uIEhpZXIgc3RlaWd0IGRhcyBSLVF1YWRyYXQgbWl0IGRlciBBbnphaGwgZGVyIHVuYWJow6RuZ2lnZW4gVmFyaWFibGVuLCBhdWNoIHdlbm4gZGllIHp1c8OkdHpsaWNoZW4gVmFyaWFibGVuIGtlaW5lbiBFcmtsw6RydW5nc3dlcnQgaGFiZW4uIERhaGVyIHdpcmQgUi1RdWFkcmF0IG5hY2ggdW50ZW4ga29ycmlnaWVydCAoIktvcnJpZ2llcnRlcyBSLVF1YWRyYXQiKS4gRGllc2UgS29ycmVrdHVyIGbDpGxsdCB1bXNvIGdyw7Zzc2VyIGF1cywgamUgbWVociBWYXJpYWJsZW4gaW0gTW9kZWxsIHNpbmQsIGFiZXIgdW1zbyBrbGVpbmVyLCBqZSBncsO2c3NlciBkaWUgU3RpY2hwcm9iZSBpc3QuIERlciBSLU91dHB1dCBlbnRow6RsdCBpbW1lciBSLVF1YWRyYXQgdW5kIGRhcyBrb3JyaWdpZXJ0ZSBSLVF1YWRyYXQuIEF1Y2ggaW0gRmFsbGUgZGVyIGVpbmZhY2hlbiBSZWdyZXNzaW9uLCB3byBudXIgZWluZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgaW0gTW9kZWxsIGlzdCwgd2lyZCBpbiBkZXIgUmVnZWwgZGFzIGtvcnJpZ2llcnRlIFItUXVhZHJhdCBiZXJpY2h0ZXQuDQoNCkltIHZvcmxpZWdlbmRlbiBCZWlzcGllbCBiZXRyw6RndCBkYXMgUi1RdWFkcmF0IC4xMzMsIHdhcyBiZWRldXRldCwgZGFzcyAxMy4zJSBkZXIgR2VzYW10c3RyZXV1bmcgaW4gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIGR1cmNoIE5ldHRvX1dhcm1taWV0ZSBlcmtsw6RydCB3ZXJkZW4ga2Fubi4NCg0KDQoNCiMJQmVyZWNobnVuZyBkZXIgRWZmZWt0c3TDpHJrZQ0KDQoNClVtIGRpZSBCZWRldXRzYW1rZWl0IGVpbmVzIEVyZ2Vibmlzc2VzIHp1IGJldXJ0ZWlsZW4sIHdlcmRlbiBFZmZla3RzdMOkcmtlbiBiZXJlY2huZXQuIEltIEJlaXNwaWVsIHdpcmQgMTMuMyUgZGVyIEdlc2FtdHN0cmV1dW5nIGluIGRlciBhYmjDpG5naWdlbiBWYXJpYWJsZSBkdXJjaCBkaWUgdW5hYmjDpG5naWdlIFZhcmlhYmxlIGVya2zDpHJ0LCBkb2NoIGVzIHN0ZWxsdCBzaWNoIGRpZSBGcmFnZSwgb2IgZGllcyBob2NoIGdlbnVnIGlzdCwgdW0gYWxzIGJlZGV1dGVuZCBlaW5nZXN0dWZ0IHp1IHdlcmRlbi4NCg0KRXMgZ2lidCB2ZXJzY2hpZWRlbmUgQXJ0ZW4gZGllIEVmZmVrdHN0w6Rya2UgenUgbWVzc2VuLiBadSBkZW4gYmVrYW5udGVzdGVuIHrDpGhsZW4gZGllIEVmZmVrdHN0w6Rya2Ugdm9uIENvaGVuIChkKSB1bmQgZGVyIEtvcnJlbGF0aW9uc2tvZWZmaXppZW50IChyKSB2b24gUGVhcnNvbi4gRGVyIEtvcnJlbGF0aW9uc2tvZWZmaXppZW50IGVpZ25ldCBzaWNoIHNlaHIgZ3V0LCBkYSBkaWUgRWZmZWt0c3TDpHJrZSBkYWJlaSBpbW1lciB6d2lzY2hlbiAwIChrZWluIEVmZmVrdCkgdW5kIDEgKG1heGltYWxlciBFZmZla3QpIGxpZWd0Lg0KDQpEYXMgUi1RdWFkcmF0LCBkYXMgYmVpIFJlZ3Jlc3Npb25zYW5hbHlzZW4gYXVzZ2VnZWJlbiB3aXJkLCBrYW5uIGluIGVpbmUgRWZmZWt0c3TDpHJrZSBmIG5hY2ggQ29oZW4gKDE5ODgpIHVtZ2VyZWNobmV0IHdlcmRlbi4gSW4gZGllc2VtIEZhbGwgaXN0IGRlciBXZXJ0ZWJlcmVpY2ggZGVyIEVmZmVrdHN0w6Rya2Ugendpc2NoZW4gMCB1bmQgdW5lbmRsaWNoLiANCg0KICQkXHNxcnRcZnJhY3tSXjJ9eygxLVJeMil9JCQNCg0KRGllIEjDtmhlIGRlciBOZXR0b3dhcm1taWV0ZSAoTmV0dG93YXJtbWlldGUpIGhhdCBlaW5lbiBFaW5mbHVzcyBkYXJhdWYsIHdpZSBob2NoIGRpZSBOZWJlbmtvc3RlbiBpbiBQcm96ZW50IHZvbiBLYWx0bWlldGUgKE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSkgc2luZChGKDEsIDk1KSA9IDE2LjE5IHAgPSAuMDAwLCBuID0gMTAwKS4gTWl0IGRlbSBlaW5lbSBFdXJvIG1laHIgYW4gZGVyIFdhcm1taWV0ZSBzaW5rZW4gZGllIE5lYmVua29zdGVuIGluIFByb3plbnQgdW0gMiw0IFByb3plbnRwdW5rdGUuIDEzLjMlIGRlciBTdHJldXVuZyBkZXMgTmViZW5rb3N0ZW4gaW4gUHJvemVudCBhbiBkZXIgS2FsdG1pZXRlIHdpcmQgZHVyY2ggZGllIFdhcm1taWV0ZSBlcmtsw6RydCwgd2FzIG5hY2ggQ29oZW4gKDE5OTIpIGVpbmVtIHN0YXJrZW4gRWZmZWt0IGVudHNwcmljaHQuIEgwIGthbm5uIHZlcndvcmZlbiB3ZXJkZW4uDQoNCg0KIA0KDQoNCg0KYGBge3J9DQoNCmY8LSBzcXJ0KHJlZyRhZGouci5zcXVhcmVkLyAoMS1yZWckYWRqLnIuc3F1YXJlZCkpDQpmDQpgYGANClVtIGRpZSBTdMOkcmtlIGRpZXNlcyBFZmZla3RzIHp1IGJldXJ0ZWlsZW4sIGVpZ25ldCBzaWNoIGRpZSBFaW50ZWlsdW5nIHZvbiBDb2hlbiAoMTk4OCk6DQoNCmYgPSAuMTAgZW50c3ByaWNodCBlaW5lbSBzY2h3YWNoZW4gRWZmZWt0DQpmID0gLjI1IGVudHNwcmljaHQgZWluZW0gbWl0dGxlcmVuIEVmZmVrdA0KZiA9IC40MCBlbnRzcHJpY2h0IGVpbmVtIHN0YXJrZW4gRWZmZWt0DQoNCg0KRGFtaXQgZW50c3ByaWNodCBkaWUgRWZmZWt0c3TDpHJrZSB2b24gMC4zOSBlaW5lbSBzdGFya2VuIEVmZmVrdC4gDQoNCg0KIwlFaW5lIEF1c3NhZ2UNCg0KDQpEaWUgSMO2aGUgZGVyIE5ldHRvd2FybW1pZXRlIChOZXR0b3dhcm1taWV0ZSkgaGF0IGVpbmVuIEVpbmZsdXNzIGRhcmF1Ziwgd2llIGhvY2ggZGllIE5lYmVua29zdGVuIGluIFByb3plbnQgdm9uIEthbHRtaWV0ZSAoTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlKSBzaW5kKEYoMSwgOTUpID0gMTYuMTkgcCA9IC4wMDAsIG4gPSAxMDApLiBNaXQgZGVtIGVpbmVtIEV1cm8gbWVociBhbiBkZXIgV2FybW1pZXRlIHNpbmtlbiBkaWUgTmViZW5rb3N0ZW4gaW4gUHJvemVudCB1bSAyLDQgUHJvemVudHB1bmt0ZS4gMTMuMyUgZGVyIFN0cmV1dW5nIGRlcyBOZWJlbmtvc3RlbiBpbiBQcm96ZW50IGFuIGRlciBLYWx0bWlldGUgd2lyZCBkdXJjaCBkaWUgV2FybW1pZXRlIGVya2zDpHJ0LCB3YXMgbmFjaCBDb2hlbiAoMTk4OCkgZWluZW0gc3RhcmtlbiBFZmZla3QgZW50c3ByaWNodC4gSDAga2Fubm4gdmVyd29yZmVuIHdlcmRlbi4NCg==