Version: 1.3 - Datum: 20.06.2017
Mit Hilfe der Stetic-Query-API können Sie Daten aus Stetic abfragen und lesen. Unsere API beinhaltet alle Daten der wichtigsten Funktionen von Stetic.
Alle Daten werden im JSON-Format geliefert und enthalten ein Objekt mit dem Namen "results". Werden mehrere Datensätze zurück geliefert, enthält dieses Objekt ein Array mit dem Namen "items".
Sofern nicht anders angegeben, werden Anfragen an die API über HTTP GET erwartet, Parameter sind als GET-Parameter zu übergeben.
Oft fällt es leichter, den Zugriff auf eine API mit Code-Beispielen zu starten.
Wir haben für Sie einige Beispiele zusammengestellt und werden nach und nach noch andere Programmiersprachen ergänzen:
Für alle Funktionen werden folgende Parameter benötigt, falls nicht anders angegeben.
Parameter | Beschreibung | Format | Beispiel |
---|---|---|---|
token |
Token des gewünschten Projektes. Falls nicht übergeben, muss pid angegeben werden. |
String | XXXX-123456789012-XXXXXXXX |
pid |
ID des gewünschten Projektes. Falls nicht übergeben, muss token angegeben werden. |
String | 12345 |
apikey |
API-Key des Projektes. | String | XXXXXXX-XXXXXXX-XXXXXXX |
Falls nicht anders angegeben, stehen für alle Statistik-Funktionen folgende Parameter zur Verfügung.
Parameter | Beschreibung | Format | Beispiel |
---|---|---|---|
date_from |
Start-Datum der Abfrage. | String - YYYY-MM-DD | 2015-01-05 |
date_to |
End-Datum der Abfrage. | String - YYYY-MM-DD | 2015-02-05 |
limit |
Anzahl der zurück gelieferten Datensätze. (Max. 500) | Integer | 25 |
Liefert Daten für Events.
Achtung! Diese API ist eine Live-Abfrage. Wir empfehlen, die Abfrage unbedingt auf ein bestimmtes Event und einen kleineren Zeitraum, wie z.B. 1 Tag, einzugrenzen.
Diese API ist auf maximal 1 Abfrage pro Minute limitiert.
(Stand: 16.04.2018)
event String optional |
Das Event, für welches Sie Daten auslesen möchten. Wird kein Event angegeben, werden alle Events zurück gegeben. |
||||
where Array optional |
Abfrage auf Event-Properties. Property als Array-Key, als Wert ein Array mit folgenden Attributen:
where[url][op]=contains&where[url][value]=mobile&where[user.language][value]=de |
||||
property String optional |
Der Schlüssel einer Property, nach der die Daten gruppiert werden sollen. |
||||
date_from String (YYYY-MM-DD) optional |
Start-Datum der Abfrage. | ||||
date_to String (YYYY-MM-DD) optional |
End-Datum der Abfrage. | ||||
unit String optional |
Zeiteinheit in der das Ergebnis zurück geliefert wird. Mögliche Werte: day, week, month, year. Standard: day |
cohorts |
Nach Event und Datum gruppierte Werte. |
cohorts.[event].[date].count |
Anzahl des Events. |
cohorts.[event].[date].ucount |
Anzahl eindeutiger Besucher mit diesem Event. |
properties |
Die Schlüssel der gefundenen Properties bzw. Attribute. |
Beispiel-URL:
https://www.stetic.com/api/events/?event=appview&date_from=2016-08-17&date_to=2016-08-20
Beispiel-Antwort:
{"results":{"cohorts":{"all":{"2016-08-17":{"count":409,"ucount":11},"2016-08-18":{"count":397,"ucount":17},"2016-08-19":{"count":601,"ucount":19},"2016-08-20":{"count":139,"ucount":9},"total":{"count":1546,"ucount":26}}},"properties":["$app","$app_version","$carrier","$device_model","$fs_lib","$os","$os_version","$view","$project", "$user.id", "$user.email", "$user.company"]}}
Liefert alle wichtigen Metriken der Web Analyse. Über den dritten Teil des URL-Pfades können die gewünschten Metriken zur Ausgabe gewählt werden. Die Angabe der Parameter 'date_from' und 'date_to' ist hier aufgrund der vordefinierten Zeiten nicht möglich.
Beispiel-URL:
https://www.stetic.com/api/dashboard/visits_today,hits_today,user_online
visitors_today |
Anzahl Besucher heute |
visitors_yesterday |
Anzahl Besucher gestern |
visitors_yth |
Anzahl Besucher gestern bis zur aktuellen Stunde |
visitors_yth_percent |
Prozent Besucher gestern bis zur aktuellen Stunde |
visitors_thismonth |
Anzahl Besucher aktueller Monat |
visitors_lastmonth |
Anzahl Besucher letzter Monat |
visitors_thisyear |
Anzahl Besucher aktuelles Jahr |
visitors_total |
Anzahl Besucher insgesamt |
visits_today |
Anzahl Besuche heute |
visits_yesterday |
Anzahl Besuche gestern |
visits_yth |
Anzahl Besuche gestern bis zur aktuellen Stunde |
visits_yth_percent |
Prozent Besuche gestern bis zur aktuellen Stunde |
visits_thismonth |
Anzahl Besuche aktueller Monat |
visits_lastmonth |
Anzahl Besuche letzter Monat |
visits_thisyear |
Anzahl Besuche aktuelles Jahr |
visits_total |
Anzahl Besuche insgesamt |
ret_visits_today |
Anzahl Wiederkehrer aktueller Tag |
ret_visits_yesterday |
Anzahl Wiederkehrer gestern |
ret_visits_thismonth |
Anzahl Wiederkehrer aktueller Monat |
ret_visits_lastmonth |
Anzahl Wiederkehrer letzter Monat |
ret_visits_thisyear |
Anzahl Wiederkehrer aktuelles Jahr |
ret_visits_total |
Anzahl Wiederkehrer insgesamt |
hits_today |
Anzahl Seitenaufrufe aktueller Tag |
hits_yesterday |
Anzahl Seitenaufrufe gestern |
hits_yth |
Anzahl Seitenaufrufe gestern bis zur aktuellen Stunde |
hits_yth_percent |
Prozent Seitenaufrufe gestern bis zur aktuellen Stunde |
hits_thismonth |
Anzahl Seitenaufrufe aktueller Monat |
hits_lastmonth |
Anzahl Seitenaufrufe letzter Monat |
hits_thisyear |
Anzahl Seitenaufrufe aktuelles Jahr |
hits_total |
Anzahl Seitenaufrufe insgesamt |
hits_per_visit_today |
Anzahl Seitenaufrufe pro Besucher aktueller Tag |
hits_per_visit_yesterday |
Anzahl Seitenaufrufe pro Besucher gestern |
hits_per_visit_thismonth |
Anzahl Seitenaufrufe pro Besucher aktueller Monat |
hits_per_visit_lastmonth |
Anzahl Seitenaufrufe pro Besucher letzter Monat |
hits_per_visit_thisyear |
Anzahl Seitenaufrufe pro Besucher aktuelles Jahr |
hits_per_visit_total |
Anzahl Seitenaufrufe pro Besucher insgesamt |
avg_time_today |
Durchschnittliche Aufenthaltszeit in Minuten heute |
avg_time_yesterday |
Durchschnittliche Aufenthaltszeit in Minuten gestern |
avg_time_thismonth |
Durchschnittliche Aufenthaltszeit in Minuten aktueller Monat |
avg_time_lastmonth |
Durchschnittliche Aufenthaltszeit in Minuten letzter Monat |
avg_time_thisyear |
Durchschnittliche Aufenthaltszeit in Minuten aktuelles Jahr |
avg_time_total |
Durchschnittliche Aufenthaltszeit in Minuten insgesamt |
avg_atime_today |
Durchschnittliche Aktivitätszeit in Minuten heute |
avg_atime_yesterday |
Durchschnittliche Aktivitätszeit in Minuten gestern |
avg_atime_thismonth |
Durchschnittliche Aktivitätszeit in Minuten aktueller Monat |
avg_atime_lastmonth |
Durchschnittliche Aktivitätszeit in Minuten letzter Monat |
avg_atime_thisyear |
Durchschnittliche Aktivitätszeit in Minuten aktuelles Jahr |
avg_atime_total |
Durchschnittliche Aktivitätszeit in Minuten insgesamt |
conversions_today |
Anzahl Konversionen heute |
conversions_yesterday |
Anzahl Konversionen gestern |
conversions_yth |
Anzahl Konversionen gestern bis zur aktuellen Stunde |
conversions_yth_percent |
Prozent Konversionen gestern bis zur aktuellen Stunde |
conversion_rate_today |
Konversionsrate heute |
bounce_rate_today |
Absprungrate heute |
user_online |
Anzahl Besucher online, aktuell auf der Webseite |
Beispiel-Antwort:
{"results":{"visits_today":"375","visits_yesterday":"1045","visits_yth":"318","visits_yth_percent":"9.12","visits_thismonth":"4294","avg_time_today":"8:37","avg_atime_today":"01:04","conversions_today":"123","user_online":"23"}}
Liefert Besucher, Wiederkehrer und Seitenaufrufe in einer bestimmten Zeitperiode.
year |
Jahr. Format: yyyy |
mon |
Monat und Jahr. Format: mm-yyyy (Monat ohne führende Null) |
day |
Tag. Format: dd |
from |
Start-Datum für die Abfrage einer bestimmten Zeitspanne. Format: yyyy-mm-dd |
to |
End-Datum für die Abfrage einer bestimmten Zeitspanne. Format: yyyy-mm-dd |
Modus | benötigte Parameter | Rückgabe |
---|---|---|
Jahr | year | Liefert die Zahlen der einzelnen Monate des angegebenen Jahres. |
Monat | mon | Liefert die Zahlen der einzelnen Tage des angegebenen Monats. |
Tag | mon, day | Liefert die Zahlen der einzelnen Stunden des angegebenen Tages. |
Zeitspanne | from, to | Liefert die Zahlen der einzelnen Tage der angegebenen Zeitspanne. |
name |
Bezeichnung, je nach Abfragemodus: Datum, Monat oder Stunde |
v |
Anzahl Besucher |
rv |
Anzahl Wiederkehrer |
h |
Anzahl Seitenaufrufe |
e |
Anzahl Events |
Beispiel-Antwort:
{"results":{"items":[{"name":"01.08.2011","v":"1277","rv":"856","h":"13174","e":"1815"},{"name":"02.08.2011","v":"1310","rv":"883","h":"12807","e":"2054"},{"name":"03.08.2011","v":"1245","rv":"800","h":"12703","e":"2336"}]}}
Liefert die TOP-Seiten, sortiert nach Seitenaufrufe absteigend. Limitiert auf 100 Datensätze.
Beispiel-URL:
https://www.stetic.com/api/sites/
name |
Name bzw. URL der Seite |
count |
Anzahl Seitenaufrufe |
visits |
Anzahl Besuche |
time |
Durchschnittliche Aufenthaltszeit in Sekunden |
atime |
Durchschnittliche Aktivitätszeit in Sekunden |
ltime |
Durchschnittliche Ladezeit in Millisekunden |
bounce |
Absprungrate |
Beispiel-Antwort:
{"results":{"items":[{"name":"\/page.html","count":"50861","visits":"12971","time":"123","atime":"87","ltime":"189","bounce":"10"},{"name":"\/","count":"36645","visits":"10918","time":"156","atime":"92","ltime":"171","bounce":"20"},{"name":"\/page-2.html","count":"12217","visits":"8812","time":"54","atime":"20","ltime":"126","bounce":"17"}]}}
Liefert die Auswertungen für eine einzelne Seite.
Beispiel-URL:
https://www.stetic.com/api/site/?path=/
path |
Pfad der abzufragenden Seite. Bsp.: /index.html |
id |
ID der Seite |
title |
Name bzw. Titel der Seite |
path |
Pfad bzw. URL der Seite |
count |
Anzahl Seitenaufrufe |
visits |
Anzahl Besuche |
time |
Durchschnittliche Aufenthaltszeit in Sekunden |
atime |
Durchschnittliche Aktivitätszeit in Sekunden |
ltime |
Durchschnittliche Ladezeit in Millisekunden |
bounce |
Absprungrate |
encount |
Anzahl Einsprünge |
excount |
Anzahl Absprünge |
sp10 |
Anzahl Besucher, die bis zu 10% der Seite gescrollt haben. |
st10 |
Durchschnittliche Zeit, die Besucher benötigten, um bis 10% der Seite zu scrollen. |
sp25 |
Anzahl Besucher, die bis zu 25% der Seite gescrollt haben. |
st25 |
Durchschnittliche Zeit, die Besucher benötigten, um bis 25% der Seite zu scrollen. |
sp50 |
Anzahl Besucher, die bis zu 50% der Seite gescrollt haben. |
st50 |
Durchschnittliche Zeit, die Besucher benötigten, um bis 50% der Seite zu scrollen. |
sp75 |
Anzahl Besucher, die bis zu 75% der Seite gescrollt haben. |
st75 |
Durchschnittliche Zeit, die Besucher benötigten, um bis 75% der Seite zu scrollen. |
sp100 |
Anzahl Besucher, die bis zu 100% der Seite gescrollt haben. |
st100 |
Durchschnittliche Zeit, die Besucher benötigten, um bis 100% der Seite zu scrollen. |
Beispiel-Antwort:
{"results":{"id":"1","path":"\/","title":"Startseite","count":"9921","visits":"8234","time":"286","atime":"28","ltime":"165.85","bounce":"17.3066","encount":"7344","excount":"2300","sp10":"442","st10":"148","sp25":"387","st25":"43","sp50":"315","st50":"68","sp75":"274","st75":"135","sp100":"186","st100":"173"}}
Liefert die TOP-Einstiegsseiten, sortiert nach Seitenaufrufe absteigend. Limitiert auf 100 Datensätze.
name |
Name bzw. URL der Seite |
count |
Anzahl Seitenaufrufe |
Beispiel-Antwort:
{"results":{"items":[{"name":"\/landingpage.html","count":"30163"},{"name":"\/landingpage-2.html","count":"25647"},{"name":"\/landingpage-3.html","count":"19943"}]}}
Liefert die TOP-Ausstiegsseiten, sortiert nach Seitenaufrufe absteigend. Limitiert auf 100 Datensätze.
name |
Name bzw. URL der Seite |
count |
Anzahl Seitenaufrufe |
Beispiel-Antwort:
{"results":{"items":[{"name":"\/page.html","count":"30163"},{"name":"\/page-2.html","count":"25647"},{"name":"\/page-3.html","count":"19943"}]}}
Liefert die TOP-Referrer, sortiert nach Anzahl absteigend. Limitiert auf 100 Datensätze.
name |
Domain des Referrers |
count |
Anzahl Besucher mit diesem Referrer |
Beispiel-Antwort:
{"results":{"items":[{"name":"www.google.com","count":"11446"},{"name":"www.google.de","count":"8273"},{"name":"www.facebook.com","count":"7168"},{"name":"t.co","count":"6853"}]}}
Liefert die TOP-Browser, sortiert nach Anzahl absteigend.
name |
Domain des Browsers |
count |
Anzahl Besucher mit diesem Browser |
percent |
Prozent der Besucher mit diesem Browser |
Beispiel-Antwort:
{"results":{"items":[{"name":"Firefox","percent":"43.23","count":"11540"},{"name":"Google Chrome","percent":"19.11","count":"5103"},{"name":"Internet Explorer","percent":"13.79","count":"3682"}]}}
Liefert die TOP-Suchwörter, sortiert nach Anzahl absteigend. Limitiert auf 50 Datensätze.
name |
Keyword, Suchwort |
count |
Anzahl Besucher mit diesem Keyword |
percent |
Prozent der Besucher mit diesem Keyword |
pos |
Aktuelle Position Ihrer Webseite in den Google-Rankings Wir werten hier die Referer-URL von Google aus, die in einigen Fällen die Position enthält. Die Genauigkeit kann, wie die Google-Rankings selbst, täglich variieren. |
Beispiel-Antwort:
{"results":{"items":[{"name":"keyword","count":"31142","percent":"12.09","pos":"1"},{"name":"long tail keyword","count":"25318","percent":"11.49","pos":"2"},{"name":"another keyword","count":"24615","percent":"11.30","pos":"1"}]}}
Liefert die TOP-Suchmaschinen, sortiert nach Anzahl absteigend. Limitiert auf 50 Datensätze.
name |
Name der Suchmaschine |
count |
Anzahl Besucher über diese Suchmaschine |
percent |
Prozent der Besucher über diese Suchmaschine |
Beispiel-Antwort:
{"results":{"items":[{"name":"Google","count":"28871","percent":"95.23"},{"name":"Bing.com","count":"709","percent":"2.34"},{"name":"Duckduckgo.com","count":"545","percent":"1.8"}]}}
Liefert die TOP-Betriebssysteme, sortiert nach Anzahl absteigend. Limitiert auf 50 Datensätze.
name |
Name des Betriebssystemes |
count |
Anzahl Besucher mit diesem Betriebssystem |
percent |
Prozent der Besucher mit diesem Betriebssystem |
Beispiel-Antwort:
{"results":{"items":[{"name":"Windows 7","percent":"44.76","count":"11954"},{"name":"iOS","percent":"13.30","count":"3552"},{"name":"Windows 8.1","percent":"12.64","count":"3375"}]}}
Liefert die TOP-Bildschirmauflösungen, sortiert nach Anzahl absteigend. Limitiert auf 50 Datensätze.
name |
Bildschirmauflösung in Pixel |
count |
Anzahl Besucher mit dieser Auflösung |
percent |
Prozent der Besucher mit dieser Auflösung |
Beispiel-Antwort:
{"results":{"items":[{"name":"1920x1080","percent":"19.27","count":"5106"},{"name":"1680x1050","percent":"9.11","count":"2414"},{"name":"1366x768","percent":"8.58","count":"2274"}]}}
Liefert die TOP-Länder, sortiert nach Anzahl absteigend.
name |
Name des Landes |
code |
Ländercode nach ISO 3166 |
count |
Anzahl Besucher aus diesem Land |
percent |
Prozent der Besucher aus diesem Land |
Beispiel-Antwort:
{"results":{"items":[{"name":"Deutschland","code":"de","count":"22110","percent":"82.81"},{"name":"Österreich","code":"at","count":"1192","percent":"4.46"},{"name":"Schweiz","code":"ch","count":"673","percent":"2.52"}]}}
Liefert die TOP-Downloads, sortiert nach Anzahl absteigend.
name |
URL des Downloads |
count |
Anzahl Downloads |
Beispiel-Antwort:
{"results":{"items":[{"name":"\/path\/to\/Download.pdf","count":"3812"},{"name":"\/path\/to\/Download-2.pdf","count":"2963"},{"name":"\/path\/to\/Download-3.pdf","count":"2757"}]}}
Liefert die TOP der externen Links, sortiert nach Anzahl Klicks absteigend.
name |
URL des Links |
count |
Anzahl Klicks |
Beispiel-Antwort:
{"results":{"items":[{"name":"http:\/\/www.domain.com\/site\/index.html","count":"8149"},{"name":"https:\/\/www.google.de\/","count":"6159"},{"name":"http:\/\/www.adomain.io\/topic\/","count":"6032"}]}}
Liefert die Daten der letzten Besucher Ihrer Webseite, sortiert nach Datum und Zeit absteigend. Limitiert auf 50 Datensätze.
ip |
IP-Adresse |
host |
Hostname der IP-Adresse |
referrer |
Referrer |
os |
Betriebssystem |
browser |
Browser |
screen |
Bildschirmauflösung |
js |
Javascript aktiviert (1=ja, 0=nein) |
cookies |
Cookies aktiviert (1=ja, 0=nein) |
geo |
Bezeichnung der Geolocation, wenn vorhanden. Land, Bundesland, Stadt. |
lat |
Latitude |
lon |
Longitude |
entry |
Einstiegsseite |
hits |
Anzahl Seitenaufrufe |
time |
Datum und Uhrzeit des letzten Aufrufes. Format: yyyy-mm-dd hh:ii:ss |
time_entry |
Datum und Uhrzeit des ersten Aufrufes. Format: yyyy-mm-dd hh:ii:ss |
duration |
Besuchsdauer in Sekunden |
kw |
Suchwort, Keyword |
kwpos |
Aktuelle Position Ihrer Webseite in den Google-Rankings Wir werten hier die Referer-URL von Google aus, die in einigen Fällen die Position enthält. Die Genauigkeit kann, wie die Google-Rankings selbst, täglich variieren. |
Beispiel-Antwort:
{"results":{"items":[{"ip":"12.34.56.*","host":"12.34.56.*","referrer":"https:\/\/www.google.com\/","os":"Windows 7","browser":"Firefox 35.0","screen":"1280x720","js":"1","cookies":"1","geo":"Berlin, Germany","lat":"52.520007","lon":"13.404954","entry":"\/index.html","exit":"\/page.html","hits":"18","duration":"328","time":"2013-11-15 12:05:12","time_entry":"2013-11-15 12:03:30","kw":"a keyword","kwpos":"3"}]}}
Liefert die Anzahl der Besucher, die sich aktuell auf der Webseite befinden.
user_online |
Anzahl Besucher online, aktuell auf der Webseite |
Beispiel-Antwort:
{"results":{"user_online":"384"}}
Metriken für E-Commerce.
unit |
Einheit für die Gruppierung der Ausgabe. 'day', 'hour' oder 'sum'. |
caption |
Bezeichnung. Abhängig von unit. |
revenue |
Einnahmen |
quantity |
Menge |
transactions |
Transaktionen bzw. Anzahl Bestellungen. |
sessions |
Anzahl eindeutiger Sessions, die eine Transaktion ausgelöst haben. |
visits |
Anzahl Besuche gesamt. |
conv_rate |
Konversionsrate |
cart_val |
Warenkorb-Wert gesamt. |
cart_qty |
Warenkorb-Menge gesamt. |
cart_sess |
Warenkorb-Sessions gesamt. |
cart_abs |
Warenkorb-Abbrüche |
cart_abt_rate |
Warenkorb-Abbruchrate |
ttc |
Zeit bis zum Warenkorb (Sekunden). |
tto |
Zeit bis zur Bestellung (Sekunden). |
Beispiel-Antwort:
{"results":{"unit":"day","date_from":"2014-08-01","date_to":"2014-11-01","items":[{"caption":"2014-11-01","revenue":1050,"quantity":3,"transactions":1,"sessions":1,"avg_rev":1050,"visits":1,"conv_rate":100,"cart_val":1050,"cart_qty":3,"cart_sess":1,"cart_abs":0,"cart_abt_rate":0,"ttc":70,"tto":237}]}}
Liefert eine Liste mit allen Projekten des Accounts.
login |
Ihr Stetic-Benutzername |
password |
Ihr Stetic-Passwort |
id |
Projekt-ID |
token |
Projekt-Token |
name |
Name des Projektes |
domain |
Domain des Projektes |
std |
Standard-Projekt, 1 = ja / 0 = nein |
key |
API-Key |
Beispiel-Antwort:
{"results":{ "items":[{ "id":"123", "token":"XXXX-123456789012-XXXXXXXX", "name":"My project", "domain":"www.project.xy", "std":"1", "key":"xxxxxxx-xxxxxxx-xxxxxxx" }, { "id":"456", "token":"XXXX-234567890123-XXXXXXXX", "name":"Another project", "domain":"www.another-project.xy", "std":"0", "key":"xxxxxxx-xxxxxxx-xxxxxxx" }] }}
Legt ein neues Projekt an.
login |
Ihr Stetic-Benutzername |
password |
Ihr Stetic-Passwort |
name |
Name des Projektes |
domain |
Domain des Projektes |
result |
Erfolgsnachricht bei Erfolg, bei Fehler "Error" |
id |
ID des neuen Projektes bei Erfolg. |
token |
Token des neuen Projektes bei Erfolg. |
key |
API-Key des neuen Projektes bei Erfolg. |
error |
Fehlermeldung, wenn result = "Error" |
Beispiel-Antwort:
{"results":{ "result":"Projekt erfolgreich gespeichert.", "id":12345, "token":"XXXX-123456789012-XXXXXXXX", "key":xxxxxxx-xxxxxxx-xxxxxxx, }}
Ändert die Daten des Projektes.
Für diese Methode ist - anders als bei create - der Projekt-Token und der API-Key notwendig.
id |
ID des Projektes |
name |
Name des Projektes |
domain |
Domain des Projektes |
result |
Erfolgsnachricht bei Erfolg, bei Fehler "Error" |
error |
Fehlermeldung, wenn result = "Error" |
Beispiel-Antwort:
{"results":{ "result":"Projekt erfolgreich gespeichert." }}
Liefert den Tracking-Code des gewählten Projektes.
htmlcode |
Tracking-Code Base64 encoded. |
Beispiel-Antwort:
{"results":{ "htmlcode":"PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgX2Zzcz1fZnNzfHx7fTsgX2Zzcy50b2tlbiA9ICdYWFhYLTA5ODc2NTQzMjEyMy1YWFhYWFhYWCc7CihmdW5jdGlvbigpe3ZhciBlPSJzdGV0aWMiLGE9d2luZG93LGM9WyJ0cmFjayIsImlkZW50aWZ5IiwiY29uZmlnIiwic2V0IiwidW5zZXQiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJpbmNyZW1lbnQiLCJhbGlhcyJdLGI9ZnVuY3Rpb24oKXt2YXIgZD0wLGY9dGhpcztmb3IoZi5fZnM9W10sZD0wO2MubGVuZ3RoPmQ7ZCsrKXsoZnVuY3Rpb24oail7ZltqXT1mdW5jdGlvbigpe3JldHVybiBmLl9mcy5wdXNoKFtqXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKSksZn19KShjW2RdKX19O2FbZV09YVtlXXx8bmV3IGI7YS5mb3Vyc3RhdHM9YS5mb3Vyc3RhdHN8fG5ldyBiO3ZhciBpPWRvY3VtZW50O3ZhciBoPWkuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aC50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2guYXN5bmM9dHJ1ZTtoLnNyYz0iLy9zdGV0aWMuY29tL3QuanMiO3ZhciBnPWkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2cucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaCxnKX0pKCk7Cjwvc2NyaXB0Pg==" }}