Dritter Teil der Case Study

Im dritten Teil der Case Study untersuchen Sie mögliche Gründe für die regionalen Unterschiede innerhalb Deutschlands. Mit den ihnen zur Verfügung stehenden Daten zum BIP und der Verschuldung der einzelnen Landkreise wollen Sie die Arbeitslosenquoten in den einzelnen Regionen Deutschlands erklären. Ziele des dritten Teils der Case Study:

  • Regressionen in R durchführen
  • Interpretation von Regressionskoeffizienten
  • Interpretation von Interaktionstermen

Sie lernen, wie Sie eine lineare Regression dazu Nutzen können um mögliche Zusammenhängen zwischen der Arbeitslosigkeit und anderen Faktoren näher zu beleuchten. Jedoch lernen Sie auch die Grenzen der linearen Regression kennen, insbesondere im Hinblick auf die Interpretation der Koeffizienten der Regression. Ergänzend hierzu erhalten Sie im 4. RTutor Problem Set Einblicke in die Zusammenhänge verschiedener gesamtwirtschaftlicher Faktoren und der Arbeitslosigkeit in den einzelnen Ländern der europäischen Union. Im 5. RTutor Problem Set werden Sie zusätzlich erfahren, welche Möglichkeiten wir in den Wirtschaftswissenschaften haben, um kausale Schlüsse ziehen zu können und im 6. RTutor Problem Set beschäftigen Sie sich mit den Möglichkeiten kausale Schlüsse aus Experimenten oder Beobachtungsdaten zu ziehen.

Daten und Pakete laden

Nachdem wir uns im ersten Teil der Case Study alle Daten aus verschiedenen Datenquellen zusammengetragen und in R eingelesen haben, wurden diese im zweiten Teil visualisiert und über die Korrelation deren Zusammenhang betrachtet. In diesem dritten und letzten Teil der Case-Study wollen wir den Zusammenhang verschiedener Variablen mittels Regressionsanalysen untersuchen.

Hierzu laden wir uns die in Teil 1 erstellten Datensätze und die in Teil 2 gemachten Anpassungen:

library(tidyverse)
library(skimr)
library(modelsummary)
library(corrr)
library(kableExtra)
# Daten einlesen
bip_zeitreihe <- readRDS("data/bip_zeitreihe.rds")
gesamtdaten <- readRDS("data/gesamtdaten.rds")

# Zuerst wollen wir die Arbeitslosenquote, einen Dummy für Ostdeutschland und die Verschuldung im Verhältnis zum BIP pro Landkreisberechnen
gesamtdaten <- gesamtdaten %>%
  mutate(alo_quote = (total_alo / (erw+total_alo))*100,
         ost = as.factor(ifelse(bundesland_name %in% c("Brandenburg", "Mecklenburg-Vorpommern", "Sachsen", "Sachsen-Anhalt", "Thüringen"), 1, 0)),
         ost_name = ifelse(ost == 1, "Ostdeutschland", "Westdeutschland"),
         anteil_schulden = (Schulden_gesamt / bip)*100)

Im zweiten Teil der Case-Study haben wir uns mit der Korrelation eine bivariate deskriptive Statistik angeschaut um den Zusammenhang einzelner Variablen miteinander zu veranschaulichen. Jedoch sind die Hauptanalysen, die in einer empirischen Ausarbeitung getätigt werden, keine Korrelationsmatrizen sondern Regressionstabellen. Dies liegt daran, dass Regressionskoeffizienten, anders als Korrelationen eine quantitative Interpretation zulassen. Weiterhin sind die Schätzer in der linearen Regression konsistent und unbiased + wir können den Zusammenhang zwischen mehreren Variablen betrachten. Für den Schätzer in der linearen Regression gilt BLUE (best linear unbiased estimator), was für die Korrelation nicht gilt.

In diesem dritten Teil der Case-Study wollen wir uns deshalb mit der linearen Regression beschäftigen.

Zuerst berechnen wir uns die Variable bip_wachstum, wie im zweiten Teil der Case Study, und mergen diese zu unseren gesamtdaten für das Jahr 2017.

bip_wachstum <- bip_zeitreihe %>%
  filter( nchar(Regionalschluessel) == 5) %>%
  group_by(Regionalschluessel) %>%
  arrange(Jahr) %>%
  mutate( bip_wachstum = 100*(bip - lag(bip)) / bip ) %>%
  ungroup() %>%
  filter( Jahr == 2017 ) %>%
  select(Regionalschluessel, bip_wachstum, Jahr)

gesamtdaten <- left_join(gesamtdaten, bip_wachstum, by = "Regionalschluessel")

Einfache lineare Regression

In diesem Kapitel werden wir uns mit der (einfachen) linearen Regression beschäftigen. Durch die lineare Regression können wir mit der Methode der kleinsten Quadrate den Zusammenhang zweier Variablen in einer einzelnen Zahl zusammenfassen und interpretieren. Das Modell für unsere Regression kennen wir aus der Vorlesung:

\[ y_i = \beta_0 + \beta_1 x_i + \varepsilon_i, \, i=1,\dots,N \]

Wobei \(y\) die abhängige und \(x\) die unabhängige Variable ist (auch erklärende Variable genannt).

Arbeitslosigkeit auf BIP-Wachstum regressieren

Wir wollen nun die Arbeitslosenquote auf die Wachstumsrate des BIP regressieren:

bip <- lm(alo_quote ~ bip_wachstum, data = gesamtdaten)

gm <- tibble::tribble(
  ~raw,        ~clean,          ~fmt,
  "nobs",      "N",             0,
  "adj.r.squared", "Adj. R<sup>2</sup>", 2)

modelsummary(bip, 
          type = "html",
          fmt = 2,
          stars = c('*' = .1, '**' = .05, '***' = 0.01),
          title = "Arbeitslosigkeit auf BIP-Wachstum",
          gof_omit = 'DF|Deviance|Log.Lik.|F|RMSE|AIC|BIC',
          coef_rename = c("bip_wachstum" = "BIP-Wachstum", "(Intercept)" = "Konstante"),
          gof_map = gm
          ) %>%
  add_header_above(c(" " = 1,"Alo-quote" = 1))
Arbeitslosigkeit auf BIP-Wachstum
Alo-quote
 (1)
Konstante 5.64***
(0.20)
BIP-Wachstum −0.09**
(0.04)
N 398
Adj. R2 0.01
* p < 0.1, ** p < 0.05, *** p < 0.01

Zuerst betrachten wir die Anzahl an Beobachtungen in der Regression. Wir haben hier 398 Beobachtungen, jedoch wissen wir, dass es in Deutschland insgesamt 400 Landkreise und kreisfreie Städte gibt. Da wir allerdings für Berlin und Hamburg keine Information zu den Arbeitslosenquoten haben werden diese zwei kreisfreien Städte in unserer Regression nicht berücksichtigt.

Das “R2” (R²) gibt an, wie hoch der Anteil der Varianz in unseren Daten ist, welchen wir durch unser Modell erklären können. Ein R² von 0.01 sagt uns, das die Varianz der Residuen 1% der Varianz unserer Responsevariable (hier der Arbeitslosenquote) ausmacht. Dies gilt jedoch immer auf der Grundlage unserer Daten, unseres Modells und unserer Annahmen. Das Problem mit dem R² ist nun, dass wir dieses allein durch die Hinzunahme von weiteren erklärenden Variablen in unser Modell erhöhen könnten (rein technisch bedingt). Daher sollten wir uns eher auf das “Adjusted R2” konzentrieren. Hier wird das R² um die Anzahl an Variablen in unserem Modell bereinigt. Ich würde Sie jedoch bitten sich nicht auf das R² oder adjusted R² zu fixieren! Bitte messen Sie diesem keine zu große Bedeutung bei, insbesondere wenn Sie einen kausalen Zusammenhang zwischen den Variablen aufdecken möchten. Das R² ist eines von vielen Gütemaßen, kann jedoch nur unter bestimmten Voraussetzungen zum Vergleich mehrer Modelle herangezogen werden: Die Modelle müssen auf den gleichen Daten angewendet werden und unter den gleichen Annahmen. Bei Zeitreihenanalysen werden wir tendenziell sehr hohe Werte für das R² erhalten, bei Querschnitts- und Paneldaten niedrigere. Wenn Sie sich in ihren Analysen auf die kausale Interpretation eines Schätzers konzentrieren, dann ist das R² und auch das adjusted R² vollkommen irrelevant. Bedenken Sie, dass Sie in diesem Fall nicht die Variation in \(y_i\) erklären wollen (was das R² tut), sondern den kausalen Zusammenhang einer Variablen. Wenn Sie sich jedoch im Bereich der Vorhersage bewegen, dann ist es durchaus wichtig, wie viel der Variation in \(y_i\) sie erklären können. D.h. hier ist das R² deutlich wichtiger und ihm sollte dann auch mehr Bedeutung zugemessen werden.

Interessanter ist es nun den geschätzten Koeffizient zum BIP-Wachstum zu interpretieren. Dies können wir wie folgt formulieren:

Eine um 1 Prozentpunkt höheres BIP Wachstum korrespondiert im Durchschnitt mit einer um 0,09 Prozentpunkte niedrigeren Arbeitslosenquote.

Weiterhin erhalten wir einen Wert für die Konstante in unserem Modell. Die Konstante kann folgendermaßen interpretiert werden:

Die erwartete Arbeitslosenquote bei einem Wachstum von 0% liegt im Durchschnitt bei 5,64 Prozent.

Allerdings müssen wir bei der Interpretation der Koeffizienten auch immer deren Signifikanz berücksichtigen. Der Koeffizient von BIP-Wachstum ist signifikant auf dem 10%-Niveau. Dies können wir sehr schnell an dem Stern hinter dem Koeffizienten sehen. Weiterhin können wir uns die t-Statistik berechnen und darüber die Signifikanz ablesen (Koeffizient / Standardfehler = (-0.09)/0.04 = -2.25). Damit können wir sagen, dass das BIP Wachstum ein signifikanter Faktor zur Erklärung der Arbeitslosenquote in einem Landkreis ist. Um einen Eindruck von der ökonomischen Signifikanz unserer Variablen zu bekommen wollen wir uns in den folgenden Regressionen immer die 99% Konfidenzintervalle für die jeweiligen Punktschätzer ausgeben lassen. Vermutlich ist das BIP-Wachstum nicht der einzige wichtge Faktor, wie wir an dem R² von 0.01 sehen und durch die Konfidenzintervalle können wir direkt die Bandbreite der möglichen Effekte abschätzen. Landkreise in denen sich bspw. im Jahr 2020 neue Unternehmen ansiedeln werden im Jahr 2021 tendenziell ein Wachstum des BIP verzeichnen, allein durch die zusätzlich produzierten Güter und Dienstleistungen in diesem neuen Unternehmen. Jedoch braucht das Unternehmen auch Mitarbeiter, welche sie aus dem Landkreis (und auch anderswo her) rekrutieren kann. Daher würden wir tendenziell erwarten, dass ein höheres BIP Wachstum mit einer niedrigeren Arbeitslosenquote korrespondiert.

Arbeitslosigkeit auf öffentliche Verschuldung regressieren

Im nächsten Schritt wollen wir anschauen ob die öffentlichen Schulden ihren Teil zur Erklärung der Arbeitslosenquote beitragen können, und wie hoch dieser Teil ist.

schulden <- lm(alo_quote ~ anteil_schulden, data=gesamtdaten)

gm <- tibble::tribble(
  ~raw,        ~clean,          ~fmt,
  "nobs",      "N",             0,
  "adj.r.squared", "Adj. R<sup>2</sup>", 2)

modelsummary(schulden, 
          type = "html",
          fmt = 2,
          statistic = 'conf.int', 
          conf_level = .99,
          title = "Arbeitslosigkeit auf Anteil der Schulden pro Landkreis",
          gof_omit = 'DF|Deviance|Log.Lik.|F|RMSE|AIC|BIC',
          coef_rename = c("anteil_schulden" = "Anteil der Schulden", "(Intercept)" = "Konstante"),
          gof_map = gm
          ) %>%
  add_header_above(c(" " = 1,"Alo-quote" = 1))
Arbeitslosigkeit auf Anteil der Schulden pro Landkreis
Alo-quote
 (1)
Konstante 3.48
[3.10, 3.85]
Anteil der Schulden 0.24
[0.20, 0.28]
N 396
Adj. R2 0.36

In dieser Regression haben wir nur noch 396 Beobachtungen. Dies liegt daran, dass in unserem Datensatz für Berlin, Hamburg, Bremen und Bremerhaven keine Information zu den Schulden vorliegen und diese deshalb in die Regression nicht aufgenommen werden können. Das adjusted R² ist mit 0.35 schon deutlich höher als bei der Regression mit dem BIP Wachstum. Dies lässt vermuten das die öffentlichen Schulden ein wichtiger Faktor zur Erklärung der Arbeitslosenquote sind, mit einem deutlich größeren Einfluss als das BIP Wachstum.

Die Interpretation der Schätzer könnte wie folgt lauten:

Eine um 1 Prozentpunkt höhere Verschuldung korrespondiert im Durchschnitt mit einer um 0,24 Prozentpunkte höheren Arbeitslosenquote

Die Interpretation der Konstante wäre dann wie folgt:

Für einen Landkreis ohne Verschuldung wäre die erwartete Arbeitslosenquote im Durchschnitt bei 3,48 Prozent.

Auch dies ist nachvollziehbar, da ein stark verschuldeter öffentlicher Haushalt in strukturschwachen Landkreisen weniger Gewerbeeinnahmen hat und daher auch weniger Unternehmen vorhanden sind in denen Arbeitnehmer angestellt sein könnten. Daher würden wir auch erwarten das eine höhere Verschuldung mit einer höheren Arbeitslosenquote korrespondiert.

Wir haben uns bisher nur einfachen linearen Regressionen gewidmet, jedoch können wir in die Regression auch mehrere erklärende Variablen aufnehmen. In diesem Fall sprechen wir dann von einer multiplen linearen Regression.

Multiple lineare Regression

Wir haben im vorherigen Abschnitt gesehen, dass sowohl das BIP Wachstum als auch die öffentliche Verschuldung wichtige Faktoren zur Erklärung der Arbeitslosenquote in den einzelnen Landkreisen sind. In diesem Abschnitt wollen wir beide Variablen zusammen in die Regression aufnehmen. Das Modell für unsere Regression kennen wir aus der Vorlesung:

\[ y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + ... + \beta_K x_{iK} + \varepsilon_i, \, i=1,\dots,N \]

Durch die multiple lineare Regression können wir den Effekt einer unabhängigen Variablen auf die abhängige Variable untersuchen und zusätzlich auf den Effekt anderer Variablen kontrollieren. Konkret bedeutet dies in unserem Fall: Wir vermuten nach den univariaten Regressionen, dass die öffentliche Verschuldung der Hauptfaktor für die Arbeitslosenquote in den Landkreisen darstellt, sind uns jedoch nicht sicher, ob nicht auch noch das BIP Wachstum einen erheblichen Anteil zur Erklärung beitragen könnte. In der multiplen linearen Regression können wir nun beide Variablen aufnehmen und so den Effekt der öffentlichen Schulden auf die Arbeitslosenquote, kontrolliert auf das BIP Wachstum, untersuchen.

multi <- lm(alo_quote ~ anteil_schulden + bip_wachstum, data=gesamtdaten)

gm <- tibble::tribble(
  ~raw,        ~clean,          ~fmt,
  "nobs",      "N",             0,
  "adj.r.squared", "Adj. R<sup>2</sup>", 2)

modelsummary(multi, 
          type = "html", 
          fmt = 2,
          statistic = 'conf.int', 
          conf_level = .99,
          title = "Arbeitslosigkeit auf Anteil Schulden und BIP-Wachstum",
          gof_omit = 'DF|Deviance|Log.Lik.|F|RMSE|AIC|BIC',
          coef_rename = c("anteil_schulden" = "Anteil der Schulden", "bip_wachstum" = "BIP-Wachstum", "(Intercept)" = "Konstante"),
          gof_map = gm
          ) %>%
  add_header_above(c(" " = 1,"Alo-quote" = 1))
Arbeitslosigkeit auf Anteil Schulden und BIP-Wachstum
Alo-quote
 (1)
Konstante 3.55
[3.00, 4.10]
Anteil der Schulden 0.24
[0.20, 0.28]
BIP-Wachstum −0.02
[−0.11, 0.08]
N 396
Adj. R2 0.36

Hier sehen wir bereits, dass der größte Teil der Varianz in unserem Modell durch die öffentlichen Schulden erklärt wird (siehe Regression vorheriger Abschnitt mit dem adjusted R² von 0.36). Weiterhin bleibt der Schätzer für die Verschuldung signifikant auf dem 1%-Niveau und in seiner Höhe gleich (vorherige univariate Regression war der Schätzer auch bei 0.24). D.h. auch kontrolliert auf das BIP Wachstum ist die öffentliche Verschuldung ein signifikanter Faktor zur Erklärung der Arbeitslosenquote in den einzelnen Landkreisen. Jedoch ist das BIP Wachstum in dieser Regression nicht mehr signifikant und in seiner Höhe auch deutlich kleiner als bei der univariaten Regression aus dem vorherigen Abschnitt (vorher -0.09).

Dies legt nahe, dass die Verschuldung des öffentlichen Haushalts besser zur Erklärung der Arbeitslosenquote in den einzelnen Landkreisen dient als das BIP Wachstum.

Sample Splits und Interaktionsmodell

Im letzten Abschnitt wollen wir uns noch mit dem Interaktionsmodell beschäftigen.

Wir hatten in der deskriptiven Analyse schon herausgefunden, dass es deutliche Unterschiede zwischen Ost- und Westdeutschland gibt, was Arbeitslosenquote, Verschuldung und auch BIP anbelangt. Nun wäre es interessant zu wissen, ob der Zusammenhang zwischen dem Anteil der öffentlichen Verschuldung am BIP und der Arbeitslosenquote sowohl für ostdeutsche als auch westdeutsche Landkreise gilt.

In einem ersten Schritt haben wir hierzu die Dummyvariable Ostdeutschland der Regression hinzugefügt. Da es vielfältige Einflüsse geben könnte, warum ost- und westdeutsche Landkreise unterschiedlich sein könnten wollen wir durch eine Dummyvariable Ostdeutschland darauf kontrollieren. Der Vorteil einer solchen Dummyvariablen ist, dass hiermit alle beobachtbaren und unbeobachtbaren Unterschiede zwischen ost- und westdeutschen Landkreisen Rechnung getragen werden kann.

schulden <- lm(alo_quote ~ anteil_schulden + ost, data=gesamtdaten)
ost <- lm(alo_quote ~ anteil_schulden, data=filter(gesamtdaten, ost==1))
west <- lm(alo_quote ~ anteil_schulden, data=filter(gesamtdaten, ost==0))
interaktion <- lm(alo_quote ~ anteil_schulden*ost, data=gesamtdaten)

gm <- tibble::tribble(
  ~raw,        ~clean,          ~fmt,
  "nobs",      "N",             0,
  "adj.r.squared", "Adj. R<sup>2</sup>", 2)

modelsummary(list(schulden, interaktion, west, ost), 
          type = "html", 
          fmt = 2,
          statistic = 'conf.int', 
          conf_level = .99,
          title = "Arbeitslosigkeit mit Interaktionstermen",
          gof_omit = 'DF|Deviance|Log.Lik.|F|RMSE|AIC|BIC',
          coef_rename = c("anteil_schulden" = "Anteil der Schulden", "ost1" = "Ostdeutschland", "(Intercept)" = "Konstante"),
          gof_map = gm
          ) %>%
  add_header_above(c(" " = 1,"Alo-quote" = 4))
Arbeitslosigkeit mit Interaktionstermen
Alo-quote
 (1)   (2)   (3)   (4)
Konstante 3.31 3.23 3.23 6.11
[2.95, 3.67] [2.86, 3.59] [2.85, 3.60] [4.75, 7.46]
Anteil der Schulden 0.23 0.24 0.24 0.06
[0.19, 0.27] [0.20, 0.28] [0.20, 0.28] [−0.08, 0.21]
Ostdeutschland 1.36 2.88
[0.84, 1.88] [1.43, 4.33]
Anteil der Schulden:Ostdeutschland −0.18
[−0.34, −0.02]
N 396 396 321 75
Adj. R2 0.42 0.43 0.41 0.00

Die Variable ist in unserer Tabelle als Ostdeutschland enthalten, d.h. der Schätzer, den wir hier erhalten, gilt für alle Beobachtungen in denen der Wert der Variable 1 ist. Die Fälle in denen die Variable 0 ist werden als Basislevel herangezogen. Konkret bedeutet der Schätzer, dass es in Ostdeutschland eine durchschnittlich um 1.36 Prozentpunkte höhere Arbeitslosenquote gibt als in Westdeutschland. Der Schätzer ist signifikant auf dem 1%-Signifikanzniveau. Durch die Hinzunahme der Dummyvariable Ostdeutschland können wir die Varianz innerhalb der Arbeitslosenquote in Deutschland besser erklären als in der Regression ohne Ostdeutschland, was sich an dem erhöhten adjusted R² zeigt (zuvor 0.36, nun 0.42). Der Koeffizient für die öffentliche Verschuldung verändert sich nur marginal von 0.24 auf 0.23 und bleibt auf dem 1%-Signifikanzniveau signifikant.

Nun trifft diese erste Regression jedoch nicht den Punkt, welchen wir eigentlich untersuchen wollten: Wir wollten wissen, ob der Zusammenhang zwischen der öffentlichen Verschuldung und der Arbeitslosenquote für alle ostdeutschen und westdeutschen Landkreise gleichermaßen gilt. Hier reicht es nicht aus darauf zu kontrollieren ob ein Landkreis als ost- oder westdeutsch klassifiziert wird. Zur Beantwortung unserer Frage müssen wir die Variable Ostdeutschland mit der Variablen Anteil Schulden interagieren. Erst dann erhalten wir einen Schätzer für die öffentliche Verschuldung in Ost- und Westdeutschland. Diese können wir miteinander vergleichen und so beantworten, ob der Zusammenhang zwischen der Verschuldung und der Arbeitslosigkeit in Ost- und Westdeutschland gleich stark ist.

Um besser zu veranschaulichen was die Regression mit der interagierten Variable genau macht, bzw. wie diese zu interpretieren ist, haben wir zusätzlich einen sogenannten “Sample Split” gemacht. D.h. wir haben in Spalte 3 und 4 der obigen Tabelle unsere Stichprobe nach ost- und westdeutschen Landkreisen aufgeteilt und wenden unser Modell zum einen nur auf die westdeutschen Landkreise an (Spalte 3) und zum anderen nur auf die ostdeutschen Landkreise (Spalte 4).

Analysieren wir Spalte 3 und 4:

Dafür beginnen wir mit der Konstanten: Diese ist für die Westdeutschen bei 3.23 (Spalte 3), was dem Wert der Konstanten aus unserem Interaktionsmodell (Spalte 2) entspricht. Bei den Ostdeutschen liegt diese bei 6.11 (Spalte 4), d.h. die durchschnittliche Arbeitslosenquote für einen unverschuldeten ostdeutschen Landkreis liegt deutlich höher als bei einem westdeutschen (3.23 Prozent vs. 6.11 Prozent).

Können wir dies auch aus unserem Interaktionsmodell (Spalte 2) ablesen? Ja! In unserem Interaktionsmodell (Spalte 2) erhalten wir genau die gleiche Arbeitslosenquote wie im Sample Split für Ostdeutschland: Hierfür müssen wir die Dummy Variable Ostdeutschland und die Konstante aufaddieren: Ostdeutschland + Constant = 2.88 + 3.23 = 6.11!

Gleiches gilt auch für die jeweiligen Schätzer von Anteil Schulden und dessen Interaktion mit Ostdeutschland. Der Schätzer für die öffentlichen Schulden liegt bei 0.24, sowohl im Interaktionsmodell (Spalte 2) als auch in der Regression rein nur für westdeutsche Landkreise (Spalte 3). Dies bedeutet für alle westdeutschen Landkreise gibt es einen signifikanten Zusammenhang zwischen der öffentlichen Verschuldung und der Arbeitslosenquote. Bei den ostdeutschen Landkreisen ist dieser Zusammenhang deutlich kleiner und insignifikant (Spalte 4). Auch in unserem Interaktionsmodell können wir sehen, dass der Einfluss der öffentlichen Verschuldung für ostdeutsche Landkreise signifkant kleiner ist als für westdeutsche (um -0.18 Prozentpunkte, der Koeffizient von Anteil Schulden * Ostdeutschland). Wenn wir uns den Zusammenhang für alle ostdeutschen Landkreise berechnen möchten, dann ergibt sich dieser als Anteil Schulden + Anteil Schulden * Ostdeutschland = 0.24 + (-0.18) = 0.06. Durch Rundungsfehler können hier kleinere Abweichungen zwischen dem Koeffizienten aus dem Interaktionsmodell (Spalte 2) und dem Sample Split (Spalte 4) entstehen.

Vorteil des Interaktionsmodells gegenüber dem Sample Split: Durch das Interaktionsmodell nutzen wir eine Regression und verwenden den kompletten Datensatz, dadurch hat unsere Regression mehr Power um Effekte zu detektieren. Wenn wir einen Sample Split durchführen und unsere Stichprobe dadurch sehr klein wird (76 Beobachtungen ist schon recht wenig), dann ist es schwerer signifikante Ergebnisse zu finden, auch wenn diese eventuell vorhanden sind.

Zum Abschluss noch ein paar Worte zur Kausalität

Wie Sie in der Veranstaltung gelernt haben haben wir es in den Wirtschaftswissenschaften oft mit Beobachtungsdaten zu tun. Das ist auch bei unserer Analyse der Arbeitslosigkeit in Deutschland der Fall! Die in dieser Case Study vorgestellten Ergebnisse sind daher leider auch nicht kausal interpretierbar! Wir müssen dies auch bei der Interpretation der Schätzer immer berücksichtigen. Es gibt sehr viele andere Faktoren, welche die Arbeitslosenquote beeinflussen können und die wir in unserer Analyse aktuell nicht berücksichtigt haben. Beispielsweise könnte es sein, dass Städte mit Universitäten Innovationszentren sind und viele konkurrenzfähige Unternehmen hervorbringen, welche viele Arbeitskräfte anheuern. Wenn die Arbeitslosenquote dadurch getrieben würde, so haben wir dies nicht in unserer Analyse berücksichtigt und ziehen dadurch falsche Schlüsse über den eigentlichen Treiber der Arbeitslosenquote.

Um tatsächliche kausale Effekte messen zu können müssten wir entweder ein kontrolliert randomisiertes Experiment durchführen, oder ein natürliches Experiment nutzen (z.B. eine nicht antizipierte Gesetzesänderung o.ä.). Sie könnten sich potentiell kreative Möglichkeiten überlegen, durch welche wir kausale Schlüsse auf der Basis unserer Daten ziehen könnten. Um den Rahmen dieser Case-Study nicht zu sprengen wollen wir uns jedoch im weiteren Verlauf mit anderen Datensätzen beschäftigen um ihnen aufzuzeigen, welche “natürlichen Experimente” hier in Frage kommen könnten.

Insgesamt gibt uns diese Case Study schon einen tiefen Einblick in die regionalen Unterschiede innerhalb Deutschlands und sie deckt wichtige Faktoren auf, welche mit der Arbeitslosenquote zusammenhängen. Ihr Cousin in Spanien hatte recht mit der Aussage, dass die Arbeitslosenquote in Deutschland deutlich geringer ist als in Spanien, auch über die verschiedenen Regionen in Deutschland hinweg. Jedoch haben Sie in dieser Case Study einige Determinanten der Arbeitslosenquote kennen gelernt und können nun untersuchen, ob diese Determinanten, wie die öffentliche Verschuldung oder das BIP-Wachstum auch einen großen Teil der Arbeitslosenquote in Spanien erklären können.

LS0tCnRpdGxlOiAiQ2FzZSBTdHVkeSBmw7xyIERldXRzY2hsYW5kIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UpCmBgYAoKIyMjIERyaXR0ZXIgVGVpbCBkZXIgQ2FzZSBTdHVkeQoKSW0gZHJpdHRlbiBUZWlsIGRlciBDYXNlIFN0dWR5IHVudGVyc3VjaGVuIFNpZSBtw7ZnbGljaGUgR3LDvG5kZSBmw7xyIGRpZSByZWdpb25hbGVuIFVudGVyc2NoaWVkZSBpbm5lcmhhbGIgRGV1dHNjaGxhbmRzLiBNaXQgZGVuIGlobmVuIHp1ciBWZXJmw7xndW5nIHN0ZWhlbmRlbiBEYXRlbiB6dW0gQklQIHVuZCBkZXIgVmVyc2NodWxkdW5nIGRlciBlaW56ZWxuZW4gTGFuZGtyZWlzZSB3b2xsZW4gU2llIGRpZSBBcmJlaXRzbG9zZW5xdW90ZW4gaW4gZGVuIGVpbnplbG5lbiBSZWdpb25lbiBEZXV0c2NobGFuZHMgZXJrbMOkcmVuLiBaaWVsZSBkZXMgZHJpdHRlbiBUZWlscyBkZXIgQ2FzZSBTdHVkeToKCi0gUmVncmVzc2lvbmVuIGluIFIgZHVyY2hmw7xocmVuCi0gSW50ZXJwcmV0YXRpb24gdm9uIFJlZ3Jlc3Npb25za29lZmZpemllbnRlbgotIEludGVycHJldGF0aW9uIHZvbiBJbnRlcmFrdGlvbnN0ZXJtZW4KClNpZSBsZXJuZW4sIHdpZSBTaWUgZWluZSBsaW5lYXJlIFJlZ3Jlc3Npb24gZGF6dSBOdXR6ZW4ga8O2bm5lbiB1bSBtw7ZnbGljaGUgWnVzYW1tZW5ow6RuZ2VuIHp3aXNjaGVuIGRlciBBcmJlaXRzbG9zaWdrZWl0IHVuZCBhbmRlcmVuIEZha3RvcmVuIG7DpGhlciB6dSBiZWxldWNodGVuLiBKZWRvY2ggbGVybmVuIFNpZSBhdWNoIGRpZSBHcmVuemVuIGRlciBsaW5lYXJlbiBSZWdyZXNzaW9uIGtlbm5lbiwgaW5zYmVzb25kZXJlIGltIEhpbmJsaWNrIGF1ZiBkaWUgSW50ZXJwcmV0YXRpb24gZGVyIEtvZWZmaXppZW50ZW4gZGVyIFJlZ3Jlc3Npb24uIEVyZ8OkbnplbmQgaGllcnp1IGVyaGFsdGVuIFNpZSBpbSA0LiBSVHV0b3IgUHJvYmxlbSBTZXQgRWluYmxpY2tlIGluIGRpZSBadXNhbW1lbmjDpG5nZSB2ZXJzY2hpZWRlbmVyIGdlc2FtdHdpcnRzY2hhZnRsaWNoZXIgRmFrdG9yZW4gdW5kIGRlciBBcmJlaXRzbG9zaWdrZWl0IGluIGRlbiBlaW56ZWxuZW4gTMOkbmRlcm4gZGVyIGV1cm9ww6Rpc2NoZW4gVW5pb24uIEltIDUuIFJUdXRvciBQcm9ibGVtIFNldCB3ZXJkZW4gU2llIHp1c8OkdHpsaWNoIGVyZmFocmVuLCB3ZWxjaGUgTcO2Z2xpY2hrZWl0ZW4gd2lyIGluIGRlbiBXaXJ0c2NoYWZ0c3dpc3NlbnNjaGFmdGVuIGhhYmVuLCB1bSBrYXVzYWxlIFNjaGzDvHNzZSB6aWVoZW4genUga8O2bm5lbiB1bmQgaW0gNi4gUlR1dG9yIFByb2JsZW0gU2V0IGJlc2Now6RmdGlnZW4gU2llIHNpY2ggbWl0IGRlbiBNw7ZnbGljaGtlaXRlbiBrYXVzYWxlIFNjaGzDvHNzZSBhdXMgRXhwZXJpbWVudGVuIG9kZXIgQmVvYmFjaHR1bmdzZGF0ZW4genUgemllaGVuLgoKCiMgRGF0ZW4gdW5kIFBha2V0ZSBsYWRlbgoKTmFjaGRlbSB3aXIgdW5zIGltIGVyc3RlbiBUZWlsIGRlciBDYXNlIFN0dWR5IGFsbGUgRGF0ZW4gYXVzIHZlcnNjaGllZGVuZW4gRGF0ZW5xdWVsbGVuIHp1c2FtbWVuZ2V0cmFnZW4gdW5kIGluIFIgZWluZ2VsZXNlbiBoYWJlbiwgd3VyZGVuIGRpZXNlIGltIHp3ZWl0ZW4gVGVpbCB2aXN1YWxpc2llcnQgdW5kIMO8YmVyIGRpZSBLb3JyZWxhdGlvbiBkZXJlbiBadXNhbW1lbmhhbmcgYmV0cmFjaHRldC4gSW4gZGllc2VtIGRyaXR0ZW4gdW5kIGxldHp0ZW4gVGVpbCBkZXIgQ2FzZS1TdHVkeSB3b2xsZW4gd2lyIGRlbiBadXNhbW1lbmhhbmcgdmVyc2NoaWVkZW5lciBWYXJpYWJsZW4gbWl0dGVscyBSZWdyZXNzaW9uc2FuYWx5c2VuIHVudGVyc3VjaGVuLgoKSGllcnp1IGxhZGVuIHdpciB1bnMgZGllIGluIFRlaWwgMSBlcnN0ZWxsdGVuIERhdGVuc8OkdHplIHVuZCBkaWUgaW4gVGVpbCAyIGdlbWFjaHRlbiBBbnBhc3N1bmdlbjoKCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShza2ltcikKbGlicmFyeShtb2RlbHN1bW1hcnkpCmxpYnJhcnkoY29ycnIpCmxpYnJhcnkoa2FibGVFeHRyYSkKYGBgCgpgYGB7cn0KIyBEYXRlbiBlaW5sZXNlbgpiaXBfemVpdHJlaWhlIDwtIHJlYWRSRFMoImRhdGEvYmlwX3plaXRyZWloZS5yZHMiKQpnZXNhbXRkYXRlbiA8LSByZWFkUkRTKCJkYXRhL2dlc2FtdGRhdGVuLnJkcyIpCgojIFp1ZXJzdCB3b2xsZW4gd2lyIGRpZSBBcmJlaXRzbG9zZW5xdW90ZSwgZWluZW4gRHVtbXkgZsO8ciBPc3RkZXV0c2NobGFuZCB1bmQgZGllIFZlcnNjaHVsZHVuZyBpbSBWZXJow6RsdG5pcyB6dW0gQklQIHBybyBMYW5ka3JlaXNiZXJlY2huZW4KZ2VzYW10ZGF0ZW4gPC0gZ2VzYW10ZGF0ZW4gJT4lCiAgbXV0YXRlKGFsb19xdW90ZSA9ICh0b3RhbF9hbG8gLyAoZXJ3K3RvdGFsX2FsbykpKjEwMCwKICAgICAgICAgb3N0ID0gYXMuZmFjdG9yKGlmZWxzZShidW5kZXNsYW5kX25hbWUgJWluJSBjKCJCcmFuZGVuYnVyZyIsICJNZWNrbGVuYnVyZy1Wb3Jwb21tZXJuIiwgIlNhY2hzZW4iLCAiU2FjaHNlbi1BbmhhbHQiLCAiVGjDvHJpbmdlbiIpLCAxLCAwKSksCiAgICAgICAgIG9zdF9uYW1lID0gaWZlbHNlKG9zdCA9PSAxLCAiT3N0ZGV1dHNjaGxhbmQiLCAiV2VzdGRldXRzY2hsYW5kIiksCiAgICAgICAgIGFudGVpbF9zY2h1bGRlbiA9IChTY2h1bGRlbl9nZXNhbXQgLyBiaXApKjEwMCkKYGBgCgpJbSB6d2VpdGVuIFRlaWwgZGVyIENhc2UtU3R1ZHkgaGFiZW4gd2lyIHVucyBtaXQgZGVyIEtvcnJlbGF0aW9uIGVpbmUgYml2YXJpYXRlIGRlc2tyaXB0aXZlIFN0YXRpc3RpayBhbmdlc2NoYXV0IHVtIGRlbiBadXNhbW1lbmhhbmcgZWluemVsbmVyIFZhcmlhYmxlbiBtaXRlaW5hbmRlciB6dSB2ZXJhbnNjaGF1bGljaGVuLgpKZWRvY2ggc2luZCBkaWUgSGF1cHRhbmFseXNlbiwgZGllIGluIGVpbmVyIGVtcGlyaXNjaGVuIEF1c2FyYmVpdHVuZyBnZXTDpHRpZ3Qgd2VyZGVuLCBrZWluZSBLb3JyZWxhdGlvbnNtYXRyaXplbiBzb25kZXJuIFJlZ3Jlc3Npb25zdGFiZWxsZW4uIERpZXMgbGllZ3QgZGFyYW4sIGRhc3MgUmVncmVzc2lvbnNrb2VmZml6aWVudGVuLCBhbmRlcnMgYWxzIEtvcnJlbGF0aW9uZW4gZWluZSBxdWFudGl0YXRpdmUgSW50ZXJwcmV0YXRpb24genVsYXNzZW4uIFdlaXRlcmhpbiBzaW5kIGRpZSBTY2jDpHR6ZXIgaW4gZGVyIGxpbmVhcmVuIFJlZ3Jlc3Npb24ga29uc2lzdGVudCB1bmQgdW5iaWFzZWQgKyB3aXIga8O2bm5lbiBkZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIG1laHJlcmVuIFZhcmlhYmxlbiBiZXRyYWNodGVuLiBGw7xyIGRlbiBTY2jDpHR6ZXIgaW4gZGVyIGxpbmVhcmVuIFJlZ3Jlc3Npb24gZ2lsdCBCTFVFIChiZXN0IGxpbmVhciB1bmJpYXNlZCBlc3RpbWF0b3IpLCB3YXMgZsO8ciBkaWUgS29ycmVsYXRpb24gbmljaHQgZ2lsdC4KCkluIGRpZXNlbSBkcml0dGVuIFRlaWwgZGVyIENhc2UtU3R1ZHkgd29sbGVuIHdpciB1bnMgZGVzaGFsYiBtaXQgZGVyIGxpbmVhcmVuIFJlZ3Jlc3Npb24gYmVzY2jDpGZ0aWdlbi4KClp1ZXJzdCBiZXJlY2huZW4gd2lyIHVucyBkaWUgVmFyaWFibGUgYGJpcF93YWNoc3R1bWAsIHdpZSBpbSB6d2VpdGVuIFRlaWwgZGVyIENhc2UgU3R1ZHksIHVuZCBtZXJnZW4gZGllc2UgenUgdW5zZXJlbiBgZ2VzYW10ZGF0ZW5gIGbDvHIgZGFzIEphaHIgMjAxNy4KCmBgYHtyfQpiaXBfd2FjaHN0dW0gPC0gYmlwX3plaXRyZWloZSAlPiUKICBmaWx0ZXIoIG5jaGFyKFJlZ2lvbmFsc2NobHVlc3NlbCkgPT0gNSkgJT4lCiAgZ3JvdXBfYnkoUmVnaW9uYWxzY2hsdWVzc2VsKSAlPiUKICBhcnJhbmdlKEphaHIpICU+JQogIG11dGF0ZSggYmlwX3dhY2hzdHVtID0gMTAwKihiaXAgLSBsYWcoYmlwKSkgLyBiaXAgKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZmlsdGVyKCBKYWhyID09IDIwMTcgKSAlPiUKICBzZWxlY3QoUmVnaW9uYWxzY2hsdWVzc2VsLCBiaXBfd2FjaHN0dW0sIEphaHIpCgpnZXNhbXRkYXRlbiA8LSBsZWZ0X2pvaW4oZ2VzYW10ZGF0ZW4sIGJpcF93YWNoc3R1bSwgYnkgPSAiUmVnaW9uYWxzY2hsdWVzc2VsIikKYGBgCgojIEVpbmZhY2hlIGxpbmVhcmUgUmVncmVzc2lvbgoKSW4gZGllc2VtIEthcGl0ZWwgd2VyZGVuIHdpciB1bnMgbWl0IGRlciAoZWluZmFjaGVuKSBsaW5lYXJlbiBSZWdyZXNzaW9uIGJlc2Now6RmdGlnZW4uIApEdXJjaCBkaWUgbGluZWFyZSBSZWdyZXNzaW9uIGvDtm5uZW4gd2lyIG1pdCBkZXIgTWV0aG9kZSBkZXIga2xlaW5zdGVuIFF1YWRyYXRlIGRlbiBadXNhbW1lbmhhbmcgendlaWVyIFZhcmlhYmxlbiBpbiBlaW5lciBlaW56ZWxuZW4gWmFobCB6dXNhbW1lbmZhc3NlbiB1bmQgaW50ZXJwcmV0aWVyZW4uIERhcyBNb2RlbGwgZsO8ciB1bnNlcmUgUmVncmVzc2lvbiBrZW5uZW4gd2lyIGF1cyBkZXIgVm9ybGVzdW5nOgoKJCQgCnlfaSA9IFxiZXRhXzAgKyBcYmV0YV8xIHhfaSArIFx2YXJlcHNpbG9uX2ksIFwsIGk9MSxcZG90cyxOIAokJAoKV29iZWkgJHkkIGRpZSBhYmjDpG5naWdlIHVuZCAkeCQgZGllIHVuYWJow6RuZ2lnZSBWYXJpYWJsZSBpc3QgKGF1Y2ggZXJrbMOkcmVuZGUgVmFyaWFibGUgZ2VuYW5udCkuCgojIyBBcmJlaXRzbG9zaWdrZWl0IGF1ZiBCSVAtV2FjaHN0dW0gcmVncmVzc2llcmVuCgpXaXIgd29sbGVuIG51biBkaWUgQXJiZWl0c2xvc2VucXVvdGUgYXVmIGRpZSBXYWNoc3R1bXNyYXRlIGRlcyBCSVAgcmVncmVzc2llcmVuOgoKYGBge3IsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmlnbiA9IEZBTFNFLHJlc3VsdHM9J2FzaXMnfQpiaXAgPC0gbG0oYWxvX3F1b3RlIH4gYmlwX3dhY2hzdHVtLCBkYXRhID0gZ2VzYW10ZGF0ZW4pCgpnbSA8LSB0aWJibGU6OnRyaWJibGUoCiAgfnJhdywgICAgICAgIH5jbGVhbiwgICAgICAgICAgfmZtdCwKICAibm9icyIsICAgICAgIk4iLCAgICAgICAgICAgICAwLAogICJhZGouci5zcXVhcmVkIiwgIkFkai4gUjxzdXA+Mjwvc3VwPiIsIDIpCgptb2RlbHN1bW1hcnkoYmlwLCAKICAgICAgICAgIHR5cGUgPSAiaHRtbCIsCiAgICAgICAgICBmbXQgPSAyLAogICAgICAgICAgc3RhcnMgPSBjKCcqJyA9IC4xLCAnKionID0gLjA1LCAnKioqJyA9IDAuMDEpLAogICAgICAgICAgdGl0bGUgPSAiQXJiZWl0c2xvc2lna2VpdCBhdWYgQklQLVdhY2hzdHVtIiwKICAgICAgICAgIGdvZl9vbWl0ID0gJ0RGfERldmlhbmNlfExvZy5MaWsufEZ8Uk1TRXxBSUN8QklDJywKICAgICAgICAgIGNvZWZfcmVuYW1lID0gYygiYmlwX3dhY2hzdHVtIiA9ICJCSVAtV2FjaHN0dW0iLCAiKEludGVyY2VwdCkiID0gIktvbnN0YW50ZSIpLAogICAgICAgICAgZ29mX21hcCA9IGdtCiAgICAgICAgICApICU+JQogIGFkZF9oZWFkZXJfYWJvdmUoYygiICIgPSAxLCJBbG8tcXVvdGUiID0gMSkpCmBgYAoKWnVlcnN0IGJldHJhY2h0ZW4gd2lyIGRpZSBBbnphaGwgYW4gQmVvYmFjaHR1bmdlbiBpbiBkZXIgUmVncmVzc2lvbi4gV2lyIGhhYmVuIGhpZXIgMzk4IEJlb2JhY2h0dW5nZW4sIGplZG9jaCB3aXNzZW4gd2lyLCBkYXNzIGVzIGluIERldXRzY2hsYW5kIGluc2dlc2FtdCA0MDAgTGFuZGtyZWlzZSB1bmQga3JlaXNmcmVpZSBTdMOkZHRlIGdpYnQuIERhIHdpciBhbGxlcmRpbmdzIGbDvHIgQmVybGluIHVuZCBIYW1idXJnIGtlaW5lIEluZm9ybWF0aW9uIHp1IGRlbiBBcmJlaXRzbG9zZW5xdW90ZW4gaGFiZW4gd2VyZGVuIGRpZXNlIHp3ZWkga3JlaXNmcmVpZW4gU3TDpGR0ZSBpbiB1bnNlcmVyIFJlZ3Jlc3Npb24gbmljaHQgYmVyw7xja3NpY2h0aWd0LgoKRGFzICJSMiIgKFLCsikgZ2lidCBhbiwgd2llIGhvY2ggZGVyIEFudGVpbCBkZXIgVmFyaWFueiBpbiB1bnNlcmVuIERhdGVuIGlzdCwgd2VsY2hlbiB3aXIgZHVyY2ggdW5zZXIgTW9kZWxsIGVya2zDpHJlbiBrw7ZubmVuLiBFaW4gUsKyIHZvbiAwLjAxIHNhZ3QgdW5zLCBkYXMgZGllIFZhcmlhbnogZGVyIFJlc2lkdWVuIDElIGRlciBWYXJpYW56IHVuc2VyZXIgUmVzcG9uc2V2YXJpYWJsZSAoaGllciBkZXIgQXJiZWl0c2xvc2VucXVvdGUpIGF1c21hY2h0LiBEaWVzIGdpbHQgamVkb2NoIGltbWVyIGF1ZiBkZXIgR3J1bmRsYWdlIHVuc2VyZXIgRGF0ZW4sIHVuc2VyZXMgTW9kZWxscyB1bmQgdW5zZXJlciBBbm5haG1lbi4gRGFzIFByb2JsZW0gbWl0IGRlbSBSwrIgaXN0IG51biwgZGFzcyB3aXIgZGllc2VzIGFsbGVpbiBkdXJjaCBkaWUgSGluenVuYWhtZSB2b24gd2VpdGVyZW4gZXJrbMOkcmVuZGVuIFZhcmlhYmxlbiBpbiB1bnNlciBNb2RlbGwgZXJow7ZoZW4ga8O2bm50ZW4gKHJlaW4gdGVjaG5pc2NoIGJlZGluZ3QpLiBEYWhlciBzb2xsdGVuIHdpciB1bnMgZWhlciBhdWYgZGFzICJBZGp1c3RlZCBSMiIga29uemVudHJpZXJlbi4gSGllciB3aXJkIGRhcyBSwrIgdW0gZGllIEFuemFobCBhbiBWYXJpYWJsZW4gaW4gdW5zZXJlbSBNb2RlbGwgYmVyZWluaWd0LiBJY2ggd8O8cmRlIFNpZSBqZWRvY2ggYml0dGVuIHNpY2ggbmljaHQgYXVmIGRhcyBSwrIgb2RlciBhZGp1c3RlZCBSwrIgenUgZml4aWVyZW4hIEJpdHRlIG1lc3NlbiBTaWUgZGllc2VtIGtlaW5lIHp1IGdyb8OfZSBCZWRldXR1bmcgYmVpLCBpbnNiZXNvbmRlcmUgd2VubiBTaWUgZWluZW4gX2thdXNhbGVuXyBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFZhcmlhYmxlbiBhdWZkZWNrZW4gbcO2Y2h0ZW4uIERhcyBSwrIgaXN0IGVpbmVzIHZvbiB2aWVsZW4gR8O8dGVtYcOfZW4sIGthbm4gamVkb2NoIG51ciB1bnRlciBiZXN0aW1tdGVuIFZvcmF1c3NldHp1bmdlbiB6dW0gVmVyZ2xlaWNoIG1laHJlciBNb2RlbGxlIGhlcmFuZ2V6b2dlbiB3ZXJkZW46IERpZSBNb2RlbGxlIG3DvHNzZW4gYXVmIGRlbiBnbGVpY2hlbiBEYXRlbiBhbmdld2VuZGV0IHdlcmRlbiB1bmQgdW50ZXIgZGVuIGdsZWljaGVuIEFubmFobWVuLiBCZWkgWmVpdHJlaWhlbmFuYWx5c2VuIHdlcmRlbiB3aXIgdGVuZGVuemllbGwgc2VociBob2hlIFdlcnRlIGbDvHIgZGFzIFLCsiBlcmhhbHRlbiwgYmVpIFF1ZXJzY2huaXR0cy0gdW5kIFBhbmVsZGF0ZW4gbmllZHJpZ2VyZS4gCldlbm4gU2llIHNpY2ggaW4gaWhyZW4gQW5hbHlzZW4gYXVmIGRpZSBfa2F1c2FsZV8gSW50ZXJwcmV0YXRpb24gZWluZXMgU2Now6R0emVycyBrb256ZW50cmllcmVuLCBkYW5uIGlzdCBkYXMgUsKyIHVuZCBhdWNoIGRhcyBhZGp1c3RlZCBSwrIgdm9sbGtvbW1lbiBpcnJlbGV2YW50LiBCZWRlbmtlbiBTaWUsIGRhc3MgU2llIGluIGRpZXNlbSBGYWxsIG5pY2h0IGRpZSBWYXJpYXRpb24gaW4gJHlfaSQgZXJrbMOkcmVuIHdvbGxlbiAod2FzIGRhcyBSwrIgdHV0KSwgc29uZGVybiBkZW4ga2F1c2FsZW4gWnVzYW1tZW5oYW5nIGVpbmVyIFZhcmlhYmxlbi4KV2VubiBTaWUgc2ljaCBqZWRvY2ggaW0gQmVyZWljaCBkZXIgVm9yaGVyc2FnZSBiZXdlZ2VuLCBkYW5uIGlzdCBlcyBkdXJjaGF1cyB3aWNodGlnLCB3aWUgdmllbCBkZXIgVmFyaWF0aW9uIGluICR5X2kkIHNpZSBlcmtsw6RyZW4ga8O2bm5lbi4gRC5oLiBoaWVyIGlzdCBkYXMgUsKyIGRldXRsaWNoIHdpY2h0aWdlciB1bmQgaWhtIHNvbGx0ZSBkYW5uIGF1Y2ggbWVociBCZWRldXR1bmcgenVnZW1lc3NlbiB3ZXJkZW4uCgpJbnRlcmVzc2FudGVyIGlzdCBlcyBudW4gZGVuIGdlc2Now6R0enRlbiBLb2VmZml6aWVudCB6dW0gYEJJUC1XYWNoc3R1bWAgenUgaW50ZXJwcmV0aWVyZW4uIERpZXMga8O2bm5lbiB3aXIgd2llIGZvbGd0IGZvcm11bGllcmVuOgoKPiBFaW5lIHVtIDEgUHJvemVudHB1bmt0IGjDtmhlcmVzIEJJUCBXYWNoc3R1bSBrb3JyZXNwb25kaWVydCBpbSBEdXJjaHNjaG5pdHQgbWl0IGVpbmVyIHVtIDAsMDkgUHJvemVudHB1bmt0ZSBuaWVkcmlnZXJlbiBBcmJlaXRzbG9zZW5xdW90ZS4KCldlaXRlcmhpbiBlcmhhbHRlbiB3aXIgZWluZW4gV2VydCBmw7xyIGRpZSBLb25zdGFudGUgaW4gdW5zZXJlbSBNb2RlbGwuIERpZSBLb25zdGFudGUga2FubiBmb2xnZW5kZXJtYcOfZW4gaW50ZXJwcmV0aWVydCB3ZXJkZW46Cgo+IERpZSBlcndhcnRldGUgQXJiZWl0c2xvc2VucXVvdGUgYmVpIGVpbmVtIFdhY2hzdHVtIHZvbiAwJSBsaWVndCBpbSBEdXJjaHNjaG5pdHQgYmVpIDUsNjQgUHJvemVudC4KCkFsbGVyZGluZ3MgbcO8c3NlbiB3aXIgYmVpIGRlciBJbnRlcnByZXRhdGlvbiBkZXIgS29lZmZpemllbnRlbiBhdWNoIGltbWVyIGRlcmVuIFNpZ25pZmlrYW56IGJlcsO8Y2tzaWNodGlnZW4uIERlciBLb2VmZml6aWVudCB2b24gYEJJUC1XYWNoc3R1bWAgaXN0IHNpZ25pZmlrYW50IGF1ZiBkZW0gMTAlLU5pdmVhdS4gRGllcyBrw7ZubmVuIHdpciBzZWhyIHNjaG5lbGwgYW4gZGVtIFN0ZXJuIGhpbnRlciBkZW0gS29lZmZpemllbnRlbiBzZWhlbi4gV2VpdGVyaGluIGvDtm5uZW4gd2lyIHVucyBkaWUgdC1TdGF0aXN0aWsgYmVyZWNobmVuIHVuZCBkYXLDvGJlciBkaWUgU2lnbmlmaWthbnogYWJsZXNlbiAoS29lZmZpemllbnQgLyBTdGFuZGFyZGZlaGxlciA9ICgtMC4wOSkvMC4wNCA9IC0yLjI1KS4gRGFtaXQga8O2bm5lbiB3aXIgc2FnZW4sIGRhc3MgZGFzIEJJUCBXYWNoc3R1bSBlaW4gc2lnbmlmaWthbnRlciBGYWt0b3IgenVyIEVya2zDpHJ1bmcgZGVyIEFyYmVpdHNsb3NlbnF1b3RlIGluIGVpbmVtIExhbmRrcmVpcyBpc3QuIFVtIGVpbmVuIEVpbmRydWNrIHZvbiBkZXIgw7Zrb25vbWlzY2hlbiBTaWduaWZpa2FueiB1bnNlcmVyIFZhcmlhYmxlbiB6dSBiZWtvbW1lbiB3b2xsZW4gd2lyIHVucyBpbiBkZW4gZm9sZ2VuZGVuIFJlZ3Jlc3Npb25lbiBpbW1lciBkaWUgOTklIEtvbmZpZGVuemludGVydmFsbGUgZsO8ciBkaWUgamV3ZWlsaWdlbiBQdW5rdHNjaMOkdHplciBhdXNnZWJlbiBsYXNzZW4uIFZlcm11dGxpY2ggaXN0IGRhcyBCSVAtV2FjaHN0dW0gbmljaHQgZGVyIGVpbnppZ2Ugd2ljaHRnZSBGYWt0b3IsIHdpZSB3aXIgYW4gZGVtIFLCsiB2b24gMC4wMSBzZWhlbiB1bmQgZHVyY2ggZGllIEtvbmZpZGVuemludGVydmFsbGUga8O2bm5lbiB3aXIgZGlyZWt0IGRpZSBCYW5kYnJlaXRlIGRlciBtw7ZnbGljaGVuIEVmZmVrdGUgYWJzY2jDpHR6ZW4uIExhbmRrcmVpc2UgaW4gZGVuZW4gc2ljaCBic3B3LiBpbSBKYWhyIDIwMjAgbmV1ZSBVbnRlcm5laG1lbiBhbnNpZWRlbG4gd2VyZGVuIGltIEphaHIgMjAyMSB0ZW5kZW56aWVsbCBlaW4gV2FjaHN0dW0gZGVzIEJJUCB2ZXJ6ZWljaG5lbiwgYWxsZWluIGR1cmNoIGRpZSB6dXPDpHR6bGljaCBwcm9kdXppZXJ0ZW4gR8O8dGVyIHVuZCBEaWVuc3RsZWlzdHVuZ2VuIGluIGRpZXNlbSBuZXVlbiBVbnRlcm5laG1lbi4gSmVkb2NoIGJyYXVjaHQgZGFzIFVudGVybmVobWVuIGF1Y2ggTWl0YXJiZWl0ZXIsIHdlbGNoZSBzaWUgYXVzIGRlbSBMYW5ka3JlaXMgKHVuZCBhdWNoIGFuZGVyc3dvIGhlcikgcmVrcnV0aWVyZW4ga2Fubi4gRGFoZXIgd8O8cmRlbiB3aXIgdGVuZGVuemllbGwgZXJ3YXJ0ZW4sIGRhc3MgZWluIGjDtmhlcmVzIEJJUCBXYWNoc3R1bSBtaXQgZWluZXIgbmllZHJpZ2VyZW4gQXJiZWl0c2xvc2VucXVvdGUga29ycmVzcG9uZGllcnQuCgojIyBBcmJlaXRzbG9zaWdrZWl0IGF1ZiDDtmZmZW50bGljaGUgVmVyc2NodWxkdW5nIHJlZ3Jlc3NpZXJlbgoKSW0gbsOkY2hzdGVuIFNjaHJpdHQgd29sbGVuIHdpciBhbnNjaGF1ZW4gb2IgZGllIMO2ZmZlbnRsaWNoZW4gU2NodWxkZW4gaWhyZW4gVGVpbCB6dXIgRXJrbMOkcnVuZyBkZXIgQXJiZWl0c2xvc2VucXVvdGUgYmVpdHJhZ2VuIGvDtm5uZW4sIHVuZCB3aWUgaG9jaCBkaWVzZXIgVGVpbCBpc3QuCgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSxyZXN1bHRzPSdhc2lzJ30Kc2NodWxkZW4gPC0gbG0oYWxvX3F1b3RlIH4gYW50ZWlsX3NjaHVsZGVuLCBkYXRhPWdlc2FtdGRhdGVuKQoKZ20gPC0gdGliYmxlOjp0cmliYmxlKAogIH5yYXcsICAgICAgICB+Y2xlYW4sICAgICAgICAgIH5mbXQsCiAgIm5vYnMiLCAgICAgICJOIiwgICAgICAgICAgICAgMCwKICAiYWRqLnIuc3F1YXJlZCIsICJBZGouIFI8c3VwPjI8L3N1cD4iLCAyKQoKbW9kZWxzdW1tYXJ5KHNjaHVsZGVuLCAKICAgICAgICAgIHR5cGUgPSAiaHRtbCIsCiAgICAgICAgICBmbXQgPSAyLAogICAgICAgICAgc3RhdGlzdGljID0gJ2NvbmYuaW50JywgCiAgICAgICAgICBjb25mX2xldmVsID0gLjk5LAogICAgICAgICAgdGl0bGUgPSAiQXJiZWl0c2xvc2lna2VpdCBhdWYgQW50ZWlsIGRlciBTY2h1bGRlbiBwcm8gTGFuZGtyZWlzIiwKICAgICAgICAgIGdvZl9vbWl0ID0gJ0RGfERldmlhbmNlfExvZy5MaWsufEZ8Uk1TRXxBSUN8QklDJywKICAgICAgICAgIGNvZWZfcmVuYW1lID0gYygiYW50ZWlsX3NjaHVsZGVuIiA9ICJBbnRlaWwgZGVyIFNjaHVsZGVuIiwgIihJbnRlcmNlcHQpIiA9ICJLb25zdGFudGUiKSwKICAgICAgICAgIGdvZl9tYXAgPSBnbQogICAgICAgICAgKSAlPiUKICBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiID0gMSwiQWxvLXF1b3RlIiA9IDEpKQpgYGAKCkluIGRpZXNlciBSZWdyZXNzaW9uIGhhYmVuIHdpciBudXIgbm9jaCAzOTYgQmVvYmFjaHR1bmdlbi4gRGllcyBsaWVndCBkYXJhbiwgZGFzcyBpbiB1bnNlcmVtIERhdGVuc2F0eiBmw7xyIEJlcmxpbiwgSGFtYnVyZywgQnJlbWVuIHVuZCBCcmVtZXJoYXZlbiBrZWluZSBJbmZvcm1hdGlvbiB6dSBkZW4gU2NodWxkZW4gdm9ybGllZ2VuIHVuZCBkaWVzZSBkZXNoYWxiIGluIGRpZSBSZWdyZXNzaW9uIG5pY2h0IGF1Zmdlbm9tbWVuIHdlcmRlbiBrw7ZubmVuLiBEYXMgYWRqdXN0ZWQgUsKyIGlzdCBtaXQgMC4zNSBzY2hvbiBkZXV0bGljaCBow7ZoZXIgYWxzIGJlaSBkZXIgUmVncmVzc2lvbiBtaXQgZGVtIEJJUCBXYWNoc3R1bS4gRGllcyBsw6Rzc3QgdmVybXV0ZW4gZGFzIGRpZSDDtmZmZW50bGljaGVuIFNjaHVsZGVuIGVpbiB3aWNodGlnZXIgRmFrdG9yIHp1ciBFcmtsw6RydW5nIGRlciBBcmJlaXRzbG9zZW5xdW90ZSBzaW5kLCBtaXQgZWluZW0gZGV1dGxpY2ggZ3LDtsOfZXJlbiBFaW5mbHVzcyBhbHMgZGFzIEJJUCBXYWNoc3R1bS4KCkRpZSBJbnRlcnByZXRhdGlvbiBkZXIgU2Now6R0emVyIGvDtm5udGUgd2llIGZvbGd0IGxhdXRlbjoKCj4gRWluZSB1bSAxIFByb3plbnRwdW5rdCBow7ZoZXJlIFZlcnNjaHVsZHVuZyBrb3JyZXNwb25kaWVydCBpbSBEdXJjaHNjaG5pdHQgbWl0IGVpbmVyIHVtIDAsMjQgUHJvemVudHB1bmt0ZSBow7ZoZXJlbiBBcmJlaXRzbG9zZW5xdW90ZQoKRGllIEludGVycHJldGF0aW9uIGRlciBLb25zdGFudGUgd8OkcmUgZGFubiB3aWUgZm9sZ3Q6Cgo+IEbDvHIgZWluZW4gTGFuZGtyZWlzIG9obmUgVmVyc2NodWxkdW5nIHfDpHJlIGRpZSBlcndhcnRldGUgQXJiZWl0c2xvc2VucXVvdGUgaW0gRHVyY2hzY2huaXR0IGJlaSAzLDQ4IFByb3plbnQuCgpBdWNoIGRpZXMgaXN0IG5hY2h2b2xsemllaGJhciwgZGEgZWluIHN0YXJrIHZlcnNjaHVsZGV0ZXIgw7ZmZmVudGxpY2hlciBIYXVzaGFsdCBpbiBzdHJ1a3R1cnNjaHdhY2hlbiBMYW5ka3JlaXNlbiB3ZW5pZ2VyIEdld2VyYmVlaW5uYWhtZW4gaGF0IHVuZCBkYWhlciBhdWNoIHdlbmlnZXIgVW50ZXJuZWhtZW4gdm9yaGFuZGVuIHNpbmQgaW4gZGVuZW4gQXJiZWl0bmVobWVyIGFuZ2VzdGVsbHQgc2VpbiBrw7ZubnRlbi4gRGFoZXIgd8O8cmRlbiB3aXIgYXVjaCBlcndhcnRlbiBkYXMgZWluZSBow7ZoZXJlIFZlcnNjaHVsZHVuZyBtaXQgZWluZXIgaMO2aGVyZW4gQXJiZWl0c2xvc2VucXVvdGUga29ycmVzcG9uZGllcnQuCgpXaXIgaGFiZW4gdW5zIGJpc2hlciBudXIgZWluZmFjaGVuIGxpbmVhcmVuIFJlZ3Jlc3Npb25lbiBnZXdpZG1ldCwgamVkb2NoIGvDtm5uZW4gd2lyIGluIGRpZSBSZWdyZXNzaW9uIGF1Y2ggbWVocmVyZSBlcmtsw6RyZW5kZSBWYXJpYWJsZW4gYXVmbmVobWVuLiBJbiBkaWVzZW0gRmFsbCBzcHJlY2hlbiB3aXIgZGFubiB2b24gZWluZXIgbXVsdGlwbGVuIGxpbmVhcmVuIFJlZ3Jlc3Npb24uCgojIE11bHRpcGxlIGxpbmVhcmUgUmVncmVzc2lvbgoKV2lyIGhhYmVuIGltIHZvcmhlcmlnZW4gQWJzY2huaXR0IGdlc2VoZW4sIGRhc3Mgc293b2hsIGRhcyBCSVAgV2FjaHN0dW0gYWxzIGF1Y2ggZGllIMO2ZmZlbnRsaWNoZSBWZXJzY2h1bGR1bmcgd2ljaHRpZ2UgRmFrdG9yZW4genVyIEVya2zDpHJ1bmcgZGVyIEFyYmVpdHNsb3NlbnF1b3RlIGluIGRlbiBlaW56ZWxuZW4gTGFuZGtyZWlzZW4gc2luZC4gSW4gZGllc2VtIEFic2Nobml0dCB3b2xsZW4gd2lyIGJlaWRlIFZhcmlhYmxlbiB6dXNhbW1lbiBpbiBkaWUgUmVncmVzc2lvbiBhdWZuZWhtZW4uIERhcyBNb2RlbGwgZsO8ciB1bnNlcmUgUmVncmVzc2lvbiBrZW5uZW4gd2lyIGF1cyBkZXIgVm9ybGVzdW5nOgoKJCQgCnlfaSA9IFxiZXRhXzAgKyBcYmV0YV8xIHhfe2kxfSArIFxiZXRhXzIgeF97aTJ9ICsgLi4uICsgXGJldGFfSyB4X3tpS30gKyBcdmFyZXBzaWxvbl9pLCBcLCBpPTEsXGRvdHMsTiAKJCQKCkR1cmNoIGRpZSBtdWx0aXBsZSBsaW5lYXJlIFJlZ3Jlc3Npb24ga8O2bm5lbiB3aXIgZGVuIEVmZmVrdCBlaW5lciB1bmFiaMOkbmdpZ2VuIFZhcmlhYmxlbiBhdWYgZGllIGFiaMOkbmdpZ2UgVmFyaWFibGUgdW50ZXJzdWNoZW4gdW5kIHp1c8OkdHpsaWNoIGF1ZiBkZW4gRWZmZWt0IGFuZGVyZXIgVmFyaWFibGVuICoqa29udHJvbGxpZXJlbioqLiBLb25rcmV0IGJlZGV1dGV0IGRpZXMgaW4gdW5zZXJlbSBGYWxsOgpXaXIgdmVybXV0ZW4gbmFjaCBkZW4gdW5pdmFyaWF0ZW4gUmVncmVzc2lvbmVuLCBkYXNzIGRpZSDDtmZmZW50bGljaGUgVmVyc2NodWxkdW5nIGRlciBIYXVwdGZha3RvciBmw7xyIGRpZSBBcmJlaXRzbG9zZW5xdW90ZSBpbiBkZW4gTGFuZGtyZWlzZW4gZGFyc3RlbGx0LCBzaW5kIHVucyBqZWRvY2ggbmljaHQgc2ljaGVyLCBvYiBuaWNodCBhdWNoIG5vY2ggZGFzIEJJUCBXYWNoc3R1bSBlaW5lbiBlcmhlYmxpY2hlbiBBbnRlaWwgenVyIEVya2zDpHJ1bmcgYmVpdHJhZ2VuIGvDtm5udGUuIEluIGRlciBtdWx0aXBsZW4gbGluZWFyZW4gUmVncmVzc2lvbiBrw7ZubmVuIHdpciBudW4gYmVpZGUgVmFyaWFibGVuIGF1Zm5laG1lbiB1bmQgc28gZGVuIEVmZmVrdCBkZXIgw7ZmZmVudGxpY2hlbiBTY2h1bGRlbiBhdWYgZGllIEFyYmVpdHNsb3NlbnF1b3RlLCBrb250cm9sbGllcnQgYXVmIGRhcyBCSVAgV2FjaHN0dW0sIHVudGVyc3VjaGVuLgoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UscmVzdWx0cz0nYXNpcyd9Cm11bHRpIDwtIGxtKGFsb19xdW90ZSB+IGFudGVpbF9zY2h1bGRlbiArIGJpcF93YWNoc3R1bSwgZGF0YT1nZXNhbXRkYXRlbikKCmdtIDwtIHRpYmJsZTo6dHJpYmJsZSgKICB+cmF3LCAgICAgICAgfmNsZWFuLCAgICAgICAgICB+Zm10LAogICJub2JzIiwgICAgICAiTiIsICAgICAgICAgICAgIDAsCiAgImFkai5yLnNxdWFyZWQiLCAiQWRqLiBSPHN1cD4yPC9zdXA+IiwgMikKCm1vZGVsc3VtbWFyeShtdWx0aSwgCiAgICAgICAgICB0eXBlID0gImh0bWwiLCAKICAgICAgICAgIGZtdCA9IDIsCiAgICAgICAgICBzdGF0aXN0aWMgPSAnY29uZi5pbnQnLCAKICAgICAgICAgIGNvbmZfbGV2ZWwgPSAuOTksCiAgICAgICAgICB0aXRsZSA9ICJBcmJlaXRzbG9zaWdrZWl0IGF1ZiBBbnRlaWwgU2NodWxkZW4gdW5kIEJJUC1XYWNoc3R1bSIsCiAgICAgICAgICBnb2Zfb21pdCA9ICdERnxEZXZpYW5jZXxMb2cuTGlrLnxGfFJNU0V8QUlDfEJJQycsCiAgICAgICAgICBjb2VmX3JlbmFtZSA9IGMoImFudGVpbF9zY2h1bGRlbiIgPSAiQW50ZWlsIGRlciBTY2h1bGRlbiIsICJiaXBfd2FjaHN0dW0iID0gIkJJUC1XYWNoc3R1bSIsICIoSW50ZXJjZXB0KSIgPSAiS29uc3RhbnRlIiksCiAgICAgICAgICBnb2ZfbWFwID0gZ20KICAgICAgICAgICkgJT4lCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiA9IDEsIkFsby1xdW90ZSIgPSAxKSkKCmBgYAoKSGllciBzZWhlbiB3aXIgYmVyZWl0cywgZGFzcyBkZXIgZ3LDtsOfdGUgVGVpbCBkZXIgVmFyaWFueiBpbiB1bnNlcmVtIE1vZGVsbCBkdXJjaCBkaWUgw7ZmZmVudGxpY2hlbiBTY2h1bGRlbiBlcmtsw6RydCB3aXJkIChzaWVoZSBSZWdyZXNzaW9uIHZvcmhlcmlnZXIgQWJzY2huaXR0IG1pdCBkZW0gYWRqdXN0ZWQgUsKyIHZvbiAwLjM2KS4gV2VpdGVyaGluIGJsZWlidCBkZXIgU2Now6R0emVyIGbDvHIgZGllIFZlcnNjaHVsZHVuZyBzaWduaWZpa2FudCBhdWYgZGVtIDElLU5pdmVhdSB1bmQgaW4gc2VpbmVyIEjDtmhlIGdsZWljaCAodm9yaGVyaWdlIHVuaXZhcmlhdGUgUmVncmVzc2lvbiB3YXIgZGVyIFNjaMOkdHplciBhdWNoIGJlaSAwLjI0KS4gRC5oLiBhdWNoIGtvbnRyb2xsaWVydCBhdWYgZGFzIEJJUCBXYWNoc3R1bSBpc3QgZGllIMO2ZmZlbnRsaWNoZSBWZXJzY2h1bGR1bmcgZWluIHNpZ25pZmlrYW50ZXIgRmFrdG9yIHp1ciBFcmtsw6RydW5nIGRlciBBcmJlaXRzbG9zZW5xdW90ZSBpbiBkZW4gZWluemVsbmVuIExhbmRrcmVpc2VuLgpKZWRvY2ggaXN0IGRhcyBCSVAgV2FjaHN0dW0gaW4gZGllc2VyIFJlZ3Jlc3Npb24gbmljaHQgbWVociBzaWduaWZpa2FudCB1bmQgaW4gc2VpbmVyIEjDtmhlIGF1Y2ggZGV1dGxpY2gga2xlaW5lciBhbHMgYmVpIGRlciB1bml2YXJpYXRlbiBSZWdyZXNzaW9uIGF1cyBkZW0gdm9yaGVyaWdlbiBBYnNjaG5pdHQgKHZvcmhlciAtMC4wOSkuIAoKRGllcyBsZWd0IG5haGUsIGRhc3MgZGllIFZlcnNjaHVsZHVuZyBkZXMgw7ZmZmVudGxpY2hlbiBIYXVzaGFsdHMgYmVzc2VyIHp1ciBFcmtsw6RydW5nIGRlciBBcmJlaXRzbG9zZW5xdW90ZSBpbiBkZW4gZWluemVsbmVuIExhbmRrcmVpc2VuIGRpZW50IGFscyBkYXMgQklQIFdhY2hzdHVtLgoKIyBTYW1wbGUgU3BsaXRzIHVuZCBJbnRlcmFrdGlvbnNtb2RlbGwKCkltIGxldHp0ZW4gQWJzY2huaXR0IHdvbGxlbiB3aXIgdW5zIG5vY2ggbWl0IGRlbSBJbnRlcmFrdGlvbnNtb2RlbGwgYmVzY2jDpGZ0aWdlbi4KCldpciBoYXR0ZW4gaW4gZGVyIGRlc2tyaXB0aXZlbiBBbmFseXNlIHNjaG9uIGhlcmF1c2dlZnVuZGVuLCBkYXNzIGVzIGRldXRsaWNoZSBVbnRlcnNjaGllZGUgendpc2NoZW4gT3N0LSB1bmQgV2VzdGRldXRzY2hsYW5kIGdpYnQsIHdhcyBBcmJlaXRzbG9zZW5xdW90ZSwgVmVyc2NodWxkdW5nIHVuZCBhdWNoIEJJUCBhbmJlbGFuZ3QuIE51biB3w6RyZSBlcyBpbnRlcmVzc2FudCB6dSB3aXNzZW4sIG9iIGRlciBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVtIEFudGVpbCBkZXIgw7ZmZmVudGxpY2hlbiBWZXJzY2h1bGR1bmcgYW0gQklQIHVuZCBkZXIgQXJiZWl0c2xvc2VucXVvdGUgc293b2hsIGbDvHIgb3N0ZGV1dHNjaGUgYWxzIGF1Y2ggd2VzdGRldXRzY2hlIExhbmRrcmVpc2UgZ2lsdC4KCkluIGVpbmVtIGVyc3RlbiBTY2hyaXR0IGhhYmVuIHdpciBoaWVyenUgZGllIER1bW15dmFyaWFibGUgYE9zdGRldXRzY2hsYW5kYCBkZXIgUmVncmVzc2lvbiBoaW56dWdlZsO8Z3QuIERhIGVzIHZpZWxmw6RsdGlnZSBFaW5mbMO8c3NlIGdlYmVuIGvDtm5udGUsIHdhcnVtIG9zdC0gdW5kIHdlc3RkZXV0c2NoZSBMYW5ka3JlaXNlIHVudGVyc2NoaWVkbGljaCBzZWluIGvDtm5udGVuIHdvbGxlbiB3aXIgZHVyY2ggZWluZSBEdW1teXZhcmlhYmxlIGBPc3RkZXV0c2NobGFuZGAgZGFyYXVmIGtvbnRyb2xsaWVyZW4uIERlciBWb3J0ZWlsIGVpbmVyIHNvbGNoZW4gRHVtbXl2YXJpYWJsZW4gaXN0LCBkYXNzIGhpZXJtaXQgYWxsZSBiZW9iYWNodGJhcmVuIHVuZCB1bmJlb2JhY2h0YmFyZW4gVW50ZXJzY2hpZWRlIHp3aXNjaGVuIG9zdC0gdW5kIHdlc3RkZXV0c2NoZW4gTGFuZGtyZWlzZW4gUmVjaG51bmcgZ2V0cmFnZW4gd2VyZGVuIGthbm4uIAoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UscmVzdWx0cz0nYXNpcyd9CgpzY2h1bGRlbiA8LSBsbShhbG9fcXVvdGUgfiBhbnRlaWxfc2NodWxkZW4gKyBvc3QsIGRhdGE9Z2VzYW10ZGF0ZW4pCm9zdCA8LSBsbShhbG9fcXVvdGUgfiBhbnRlaWxfc2NodWxkZW4sIGRhdGE9ZmlsdGVyKGdlc2FtdGRhdGVuLCBvc3Q9PTEpKQp3ZXN0IDwtIGxtKGFsb19xdW90ZSB+IGFudGVpbF9zY2h1bGRlbiwgZGF0YT1maWx0ZXIoZ2VzYW10ZGF0ZW4sIG9zdD09MCkpCmludGVyYWt0aW9uIDwtIGxtKGFsb19xdW90ZSB+IGFudGVpbF9zY2h1bGRlbipvc3QsIGRhdGE9Z2VzYW10ZGF0ZW4pCgpnbSA8LSB0aWJibGU6OnRyaWJibGUoCiAgfnJhdywgICAgICAgIH5jbGVhbiwgICAgICAgICAgfmZtdCwKICAibm9icyIsICAgICAgIk4iLCAgICAgICAgICAgICAwLAogICJhZGouci5zcXVhcmVkIiwgIkFkai4gUjxzdXA+Mjwvc3VwPiIsIDIpCgptb2RlbHN1bW1hcnkobGlzdChzY2h1bGRlbiwgaW50ZXJha3Rpb24sIHdlc3QsIG9zdCksIAogICAgICAgICAgdHlwZSA9ICJodG1sIiwgCiAgICAgICAgICBmbXQgPSAyLAogICAgICAgICAgc3RhdGlzdGljID0gJ2NvbmYuaW50JywgCiAgICAgICAgICBjb25mX2xldmVsID0gLjk5LAogICAgICAgICAgdGl0bGUgPSAiQXJiZWl0c2xvc2lna2VpdCBtaXQgSW50ZXJha3Rpb25zdGVybWVuIiwKICAgICAgICAgIGdvZl9vbWl0ID0gJ0RGfERldmlhbmNlfExvZy5MaWsufEZ8Uk1TRXxBSUN8QklDJywKICAgICAgICAgIGNvZWZfcmVuYW1lID0gYygiYW50ZWlsX3NjaHVsZGVuIiA9ICJBbnRlaWwgZGVyIFNjaHVsZGVuIiwgIm9zdDEiID0gIk9zdGRldXRzY2hsYW5kIiwgIihJbnRlcmNlcHQpIiA9ICJLb25zdGFudGUiKSwKICAgICAgICAgIGdvZl9tYXAgPSBnbQogICAgICAgICAgKSAlPiUKICBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiID0gMSwiQWxvLXF1b3RlIiA9IDQpKQoKYGBgCgpEaWUgVmFyaWFibGUgaXN0IGluIHVuc2VyZXIgVGFiZWxsZSBhbHMgYE9zdGRldXRzY2hsYW5kYCBlbnRoYWx0ZW4sIGQuaC4gZGVyIFNjaMOkdHplciwgZGVuIHdpciBoaWVyIGVyaGFsdGVuLCBnaWx0IGbDvHIgYWxsZSBCZW9iYWNodHVuZ2VuIGluIGRlbmVuIGRlciBXZXJ0IGRlciBWYXJpYWJsZSAxIGlzdC4gRGllIEbDpGxsZSBpbiBkZW5lbiBkaWUgVmFyaWFibGUgMCBpc3Qgd2VyZGVuIGFscyBCYXNpc2xldmVsIGhlcmFuZ2V6b2dlbi4gS29ua3JldCBiZWRldXRldCBkZXIgU2Now6R0emVyLCBkYXNzIGVzIGluIE9zdGRldXRzY2hsYW5kIGVpbmUgZHVyY2hzY2huaXR0bGljaCB1bSAxLjM2IFByb3plbnRwdW5rdGUgaMO2aGVyZSBBcmJlaXRzbG9zZW5xdW90ZSBnaWJ0IGFscyBpbiBXZXN0ZGV1dHNjaGxhbmQuIERlciBTY2jDpHR6ZXIgaXN0IHNpZ25pZmlrYW50IGF1ZiBkZW0gMSUtU2lnbmlmaWthbnpuaXZlYXUuIER1cmNoIGRpZSBIaW56dW5haG1lIGRlciBEdW1teXZhcmlhYmxlIGBPc3RkZXV0c2NobGFuZGAga8O2bm5lbiB3aXIgZGllIFZhcmlhbnogaW5uZXJoYWxiIGRlciBBcmJlaXRzbG9zZW5xdW90ZSBpbiBEZXV0c2NobGFuZCBiZXNzZXIgZXJrbMOkcmVuIGFscyBpbiBkZXIgUmVncmVzc2lvbiBvaG5lIGBPc3RkZXV0c2NobGFuZGAsIHdhcyBzaWNoIGFuIGRlbSBlcmjDtmh0ZW4gYWRqdXN0ZWQgUsKyIHplaWd0ICh6dXZvciAwLjM2LCBudW4gMC40MikuIERlciBLb2VmZml6aWVudCBmw7xyIGRpZSDDtmZmZW50bGljaGUgVmVyc2NodWxkdW5nIHZlcsOkbmRlcnQgc2ljaCBudXIgbWFyZ2luYWwgdm9uIDAuMjQgYXVmIDAuMjMgdW5kIGJsZWlidCBhdWYgZGVtIDElLVNpZ25pZmlrYW56bml2ZWF1IHNpZ25pZmlrYW50LgoKTnVuIHRyaWZmdCBkaWVzZSBlcnN0ZSBSZWdyZXNzaW9uIGplZG9jaCBuaWNodCBkZW4gUHVua3QsIHdlbGNoZW4gd2lyIGVpZ2VudGxpY2ggdW50ZXJzdWNoZW4gd29sbHRlbjogV2lyIHdvbGx0ZW4gd2lzc2VuLCBvYiBkZXIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlciDDtmZmZW50bGljaGVuIFZlcnNjaHVsZHVuZyB1bmQgZGVyIEFyYmVpdHNsb3NlbnF1b3RlIGbDvHIgYWxsZSBvc3RkZXV0c2NoZW4gdW5kIHdlc3RkZXV0c2NoZW4gTGFuZGtyZWlzZSBnbGVpY2hlcm1hw59lbiBnaWx0LiBIaWVyIHJlaWNodCBlcyBuaWNodCBhdXMgZGFyYXVmIHp1IGtvbnRyb2xsaWVyZW4gb2IgZWluIExhbmRrcmVpcyBhbHMgb3N0LSBvZGVyIHdlc3RkZXV0c2NoIGtsYXNzaWZpemllcnQgd2lyZC4gWnVyIEJlYW50d29ydHVuZyB1bnNlcmVyIEZyYWdlIG3DvHNzZW4gd2lyIGRpZSBWYXJpYWJsZSBgT3N0ZGV1dHNjaGxhbmRgIG1pdCBkZXIgVmFyaWFibGVuIGBBbnRlaWwgU2NodWxkZW5gIF9pbnRlcmFnaWVyZW5fLiBFcnN0IGRhbm4gZXJoYWx0ZW4gd2lyIGVpbmVuIFNjaMOkdHplciBmw7xyIGRpZSDDtmZmZW50bGljaGUgVmVyc2NodWxkdW5nIGluIE9zdC0gdW5kIFdlc3RkZXV0c2NobGFuZC4gRGllc2Uga8O2bm5lbiB3aXIgbWl0ZWluYW5kZXIgdmVyZ2xlaWNoZW4gdW5kIHNvIGJlYW50d29ydGVuLCBvYiBkZXIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlciBWZXJzY2h1bGR1bmcgdW5kIGRlciBBcmJlaXRzbG9zaWdrZWl0IGluIE9zdC0gdW5kIFdlc3RkZXV0c2NobGFuZCBnbGVpY2ggc3RhcmsgaXN0LgoKVW0gYmVzc2VyIHp1IHZlcmFuc2NoYXVsaWNoZW4gd2FzIGRpZSBSZWdyZXNzaW9uIG1pdCBkZXIgaW50ZXJhZ2llcnRlbiBWYXJpYWJsZSBnZW5hdSBtYWNodCwgYnp3LiB3aWUgZGllc2UgenUgaW50ZXJwcmV0aWVyZW4gaXN0LCBoYWJlbiB3aXIgenVzw6R0emxpY2ggZWluZW4gc29nZW5hbm50ZW4gIlNhbXBsZSBTcGxpdCIgZ2VtYWNodC4gRC5oLiB3aXIgaGFiZW4gaW4gU3BhbHRlIDMgdW5kIDQgZGVyIG9iaWdlbiBUYWJlbGxlIHVuc2VyZSBTdGljaHByb2JlIG5hY2ggb3N0LSB1bmQgd2VzdGRldXRzY2hlbiBMYW5ka3JlaXNlbiBhdWZnZXRlaWx0IHVuZCB3ZW5kZW4gdW5zZXIgTW9kZWxsIHp1bSBlaW5lbiBudXIgYXVmIGRpZSB3ZXN0ZGV1dHNjaGVuIExhbmRrcmVpc2UgYW4gKFNwYWx0ZSAzKSB1bmQgenVtIGFuZGVyZW4gbnVyIGF1ZiBkaWUgb3N0ZGV1dHNjaGVuIExhbmRrcmVpc2UgKFNwYWx0ZSA0KS4gCgoqKkFuYWx5c2llcmVuIHdpciBTcGFsdGUgMyB1bmQgNDoqKgoKRGFmw7xyIGJlZ2lubmVuIHdpciBtaXQgZGVyIEtvbnN0YW50ZW46IERpZXNlIGlzdCBmw7xyIGRpZSBXZXN0ZGV1dHNjaGVuIGJlaSAzLjIzIChTcGFsdGUgMyksIHdhcyBkZW0gV2VydCBkZXIgS29uc3RhbnRlbiBhdXMgdW5zZXJlbSBJbnRlcmFrdGlvbnNtb2RlbGwgKFNwYWx0ZSAyKSBlbnRzcHJpY2h0LiBCZWkgZGVuIE9zdGRldXRzY2hlbiBsaWVndCBkaWVzZSBiZWkgNi4xMSAoU3BhbHRlIDQpLCBkLmguIGRpZSBkdXJjaHNjaG5pdHRsaWNoZSBBcmJlaXRzbG9zZW5xdW90ZSBmw7xyIGVpbmVuIHVudmVyc2NodWxkZXRlbiBvc3RkZXV0c2NoZW4gTGFuZGtyZWlzIGxpZWd0IGRldXRsaWNoIGjDtmhlciBhbHMgYmVpIGVpbmVtIHdlc3RkZXV0c2NoZW4gKDMuMjMgUHJvemVudCB2cy4gNi4xMSBQcm96ZW50KS4KCkvDtm5uZW4gd2lyIGRpZXMgYXVjaCBhdXMgdW5zZXJlbSBJbnRlcmFrdGlvbnNtb2RlbGwgKFNwYWx0ZSAyKSBhYmxlc2VuPyAqKkphISoqCkluIHVuc2VyZW0gSW50ZXJha3Rpb25zbW9kZWxsIChTcGFsdGUgMikgZXJoYWx0ZW4gd2lyIGdlbmF1IGRpZSBnbGVpY2hlIEFyYmVpdHNsb3NlbnF1b3RlIHdpZSBpbSBTYW1wbGUgU3BsaXQgZsO8ciBPc3RkZXV0c2NobGFuZDogSGllcmbDvHIgbcO8c3NlbiB3aXIgZGllIER1bW15IFZhcmlhYmxlIGBPc3RkZXV0c2NobGFuZGAgdW5kIGRpZSBLb25zdGFudGUgYXVmYWRkaWVyZW46IGBPc3RkZXV0c2NobGFuZCArIENvbnN0YW50YCA9IGAyLjg4ICsgMy4yM2AgPSBgNi4xMWAhCgpHbGVpY2hlcyBnaWx0IGF1Y2ggZsO8ciBkaWUgamV3ZWlsaWdlbiBTY2jDpHR6ZXIgdm9uIGBBbnRlaWwgU2NodWxkZW5gIHVuZCBkZXNzZW4gSW50ZXJha3Rpb24gbWl0IGBPc3RkZXV0c2NobGFuZGAuIERlciBTY2jDpHR6ZXIgZsO8ciBkaWUgw7ZmZmVudGxpY2hlbiBTY2h1bGRlbiBsaWVndCBiZWkgMC4yNCwgc293b2hsIGltIEludGVyYWt0aW9uc21vZGVsbCAoU3BhbHRlIDIpIGFscyBhdWNoIGluIGRlciBSZWdyZXNzaW9uIHJlaW4gbnVyIGbDvHIgd2VzdGRldXRzY2hlIExhbmRrcmVpc2UgKFNwYWx0ZSAzKS4gRGllcyBiZWRldXRldCBmw7xyIGFsbGUgd2VzdGRldXRzY2hlbiBMYW5ka3JlaXNlIGdpYnQgZXMgZWluZW4gc2lnbmlmaWthbnRlbiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVyIMO2ZmZlbnRsaWNoZW4gVmVyc2NodWxkdW5nIHVuZCBkZXIgQXJiZWl0c2xvc2VucXVvdGUuIEJlaSBkZW4gb3N0ZGV1dHNjaGVuIExhbmRrcmVpc2VuIGlzdCBkaWVzZXIgWnVzYW1tZW5oYW5nIGRldXRsaWNoIGtsZWluZXIgdW5kIGluc2lnbmlmaWthbnQgKFNwYWx0ZSA0KS4gQXVjaCBpbiB1bnNlcmVtIEludGVyYWt0aW9uc21vZGVsbCBrw7ZubmVuIHdpciBzZWhlbiwgZGFzcyBkZXIgRWluZmx1c3MgZGVyIMO2ZmZlbnRsaWNoZW4gVmVyc2NodWxkdW5nIGbDvHIgb3N0ZGV1dHNjaGUgTGFuZGtyZWlzZSBzaWduaWZrYW50IGtsZWluZXIgaXN0IGFscyBmw7xyIHdlc3RkZXV0c2NoZSAodW0gLTAuMTggUHJvemVudHB1bmt0ZSwgZGVyIEtvZWZmaXppZW50IHZvbiBgQW50ZWlsIFNjaHVsZGVuICogT3N0ZGV1dHNjaGxhbmRgKS4KV2VubiB3aXIgdW5zIGRlbiBadXNhbW1lbmhhbmcgZsO8ciBhbGxlIG9zdGRldXRzY2hlbiBMYW5ka3JlaXNlIGJlcmVjaG5lbiBtw7ZjaHRlbiwgZGFubiBlcmdpYnQgc2ljaCBkaWVzZXIgYWxzIGBBbnRlaWwgU2NodWxkZW4gKyBBbnRlaWwgU2NodWxkZW4gKiBPc3RkZXV0c2NobGFuZGAgPSBgMC4yNCArICgtMC4xOClgID0gYDAuMDZgLiBEdXJjaCBSdW5kdW5nc2ZlaGxlciBrw7ZubmVuIGhpZXIga2xlaW5lcmUgQWJ3ZWljaHVuZ2VuIHp3aXNjaGVuIGRlbSBLb2VmZml6aWVudGVuIGF1cyBkZW0gSW50ZXJha3Rpb25zbW9kZWxsIChTcGFsdGUgMikgdW5kIGRlbSBTYW1wbGUgU3BsaXQgKFNwYWx0ZSA0KSBlbnRzdGVoZW4uCgpWb3J0ZWlsIGRlcyBJbnRlcmFrdGlvbnNtb2RlbGxzIGdlZ2Vuw7xiZXIgZGVtIFNhbXBsZSBTcGxpdDogRHVyY2ggZGFzIEludGVyYWt0aW9uc21vZGVsbCBudXR6ZW4gd2lyICoqZWluZSoqIFJlZ3Jlc3Npb24gdW5kIHZlcndlbmRlbiBkZW4ga29tcGxldHRlbiBEYXRlbnNhdHosIGRhZHVyY2ggaGF0IHVuc2VyZSBSZWdyZXNzaW9uIG1laHIgUG93ZXIgdW0gRWZmZWt0ZSB6dSBkZXRla3RpZXJlbi4gV2VubiB3aXIgZWluZW4gU2FtcGxlIFNwbGl0IGR1cmNoZsO8aHJlbiB1bmQgdW5zZXJlIFN0aWNocHJvYmUgZGFkdXJjaCBzZWhyIGtsZWluIHdpcmQgKDc2IEJlb2JhY2h0dW5nZW4gaXN0IHNjaG9uIHJlY2h0IHdlbmlnKSwgZGFubiBpc3QgZXMgc2Nod2VyZXIgc2lnbmlmaWthbnRlIEVyZ2Vibmlzc2UgenUgZmluZGVuLCBhdWNoIHdlbm4gZGllc2UgZXZlbnR1ZWxsIHZvcmhhbmRlbiBzaW5kLgoKIyBadW0gQWJzY2hsdXNzIG5vY2ggZWluIHBhYXIgV29ydGUgenVyIEthdXNhbGl0w6R0IAoKV2llIFNpZSBpbiBkZXIgVmVyYW5zdGFsdHVuZyBnZWxlcm50IGhhYmVuIGhhYmVuIHdpciBlcyBpbiBkZW4gV2lydHNjaGFmdHN3aXNzZW5zY2hhZnRlbiBvZnQgbWl0IEJlb2JhY2h0dW5nc2RhdGVuIHp1IHR1bi4gRGFzIGlzdCBhdWNoIGJlaSB1bnNlcmVyIEFuYWx5c2UgZGVyIEFyYmVpdHNsb3NpZ2tlaXQgaW4gRGV1dHNjaGxhbmQgZGVyIEZhbGwhCkRpZSBpbiBkaWVzZXIgQ2FzZSBTdHVkeSB2b3JnZXN0ZWxsdGVuIEVyZ2Vibmlzc2Ugc2luZCBkYWhlciBsZWlkZXIgYXVjaCBuaWNodCBrYXVzYWwgaW50ZXJwcmV0aWVyYmFyISBXaXIgbcO8c3NlbiBkaWVzIGF1Y2ggYmVpIGRlciBJbnRlcnByZXRhdGlvbiBkZXIgU2Now6R0emVyIGltbWVyIGJlcsO8Y2tzaWNodGlnZW4uIEVzIGdpYnQgc2VociB2aWVsZSBhbmRlcmUgRmFrdG9yZW4sIHdlbGNoZSBkaWUgQXJiZWl0c2xvc2VucXVvdGUgYmVlaW5mbHVzc2VuIGvDtm5uZW4gdW5kIGRpZSB3aXIgaW4gdW5zZXJlciBBbmFseXNlIGFrdHVlbGwgbmljaHQgYmVyw7xja3NpY2h0aWd0IGhhYmVuLiBCZWlzcGllbHN3ZWlzZSBrw7ZubnRlIGVzIHNlaW4sIGRhc3MgU3TDpGR0ZSBtaXQgVW5pdmVyc2l0w6R0ZW4gSW5ub3ZhdGlvbnN6ZW50cmVuIHNpbmQgdW5kIHZpZWxlIGtvbmt1cnJlbnpmw6RoaWdlIFVudGVybmVobWVuIGhlcnZvcmJyaW5nZW4sIHdlbGNoZSB2aWVsZSBBcmJlaXRza3LDpGZ0ZSBhbmhldWVybi4gV2VubiBkaWUgQXJiZWl0c2xvc2VucXVvdGUgZGFkdXJjaCBnZXRyaWViZW4gd8O8cmRlLCBzbyBoYWJlbiB3aXIgZGllcyBuaWNodCBpbiB1bnNlcmVyIEFuYWx5c2UgYmVyw7xja3NpY2h0aWd0IHVuZCB6aWVoZW4gZGFkdXJjaCBmYWxzY2hlIFNjaGzDvHNzZSDDvGJlciBkZW4gZWlnZW50bGljaGVuIFRyZWliZXIgZGVyIEFyYmVpdHNsb3NlbnF1b3RlLgoKVW0gdGF0c8OkY2hsaWNoZSBrYXVzYWxlIEVmZmVrdGUgbWVzc2VuIHp1IGvDtm5uZW4gbcO8c3N0ZW4gd2lyIGVudHdlZGVyIGVpbiBrb250cm9sbGllcnQgcmFuZG9taXNpZXJ0ZXMgRXhwZXJpbWVudCBkdXJjaGbDvGhyZW4sIG9kZXIgZWluIG5hdMO8cmxpY2hlcyBFeHBlcmltZW50IG51dHplbiAoei5CLiBlaW5lIG5pY2h0IGFudGl6aXBpZXJ0ZSBHZXNldHplc8OkbmRlcnVuZyBvLsOkLikuIFNpZSBrw7ZubnRlbiBzaWNoIHBvdGVudGllbGwga3JlYXRpdmUgTcO2Z2xpY2hrZWl0ZW4gw7xiZXJsZWdlbiwgZHVyY2ggd2VsY2hlIHdpciBrYXVzYWxlIFNjaGzDvHNzZSBhdWYgZGVyIEJhc2lzIHVuc2VyZXIgRGF0ZW4gemllaGVuIGvDtm5udGVuLiBVbSBkZW4gUmFobWVuIGRpZXNlciBDYXNlLVN0dWR5IG5pY2h0IHp1IHNwcmVuZ2VuIHdvbGxlbiB3aXIgdW5zIGplZG9jaCBpbSB3ZWl0ZXJlbiBWZXJsYXVmIG1pdCBhbmRlcmVuIERhdGVuc8OkdHplbiBiZXNjaMOkZnRpZ2VuIHVtIGlobmVuIGF1Znp1emVpZ2VuLCB3ZWxjaGUgIm5hdMO8cmxpY2hlbiBFeHBlcmltZW50ZSIgaGllciBpbiBGcmFnZSBrb21tZW4ga8O2bm50ZW4uIAoKSW5zZ2VzYW10IGdpYnQgdW5zIGRpZXNlIENhc2UgU3R1ZHkgc2Nob24gZWluZW4gdGllZmVuIEVpbmJsaWNrIGluIGRpZSByZWdpb25hbGVuIFVudGVyc2NoaWVkZSBpbm5lcmhhbGIgRGV1dHNjaGxhbmRzIHVuZCBzaWUgZGVja3Qgd2ljaHRpZ2UgRmFrdG9yZW4gYXVmLCB3ZWxjaGUgbWl0IGRlciBBcmJlaXRzbG9zZW5xdW90ZSB6dXNhbW1lbmjDpG5nZW4uCklociBDb3VzaW4gaW4gU3BhbmllbiBoYXR0ZSByZWNodCBtaXQgZGVyIEF1c3NhZ2UsIGRhc3MgZGllIEFyYmVpdHNsb3NlbnF1b3RlIGluIERldXRzY2hsYW5kIGRldXRsaWNoIGdlcmluZ2VyIGlzdCBhbHMgaW4gU3BhbmllbiwgYXVjaCDDvGJlciBkaWUgdmVyc2NoaWVkZW5lbiBSZWdpb25lbiBpbiBEZXV0c2NobGFuZCBoaW53ZWcuIEplZG9jaCBoYWJlbiBTaWUgaW4gZGllc2VyIENhc2UgU3R1ZHkgZWluaWdlIERldGVybWluYW50ZW4gZGVyIEFyYmVpdHNsb3NlbnF1b3RlIGtlbm5lbiBnZWxlcm50IHVuZCBrw7ZubmVuIG51biB1bnRlcnN1Y2hlbiwgb2IgZGllc2UgRGV0ZXJtaW5hbnRlbiwgd2llIGRpZSDDtmZmZW50bGljaGUgVmVyc2NodWxkdW5nIG9kZXIgZGFzIEJJUC1XYWNoc3R1bSBhdWNoIGVpbmVuIGdyb8OfZW4gVGVpbCBkZXIgQXJiZWl0c2xvc2VucXVvdGUgaW4gU3BhbmllbiBlcmtsw6RyZW4ga8O2bm5lbi4=