Skip to content

Blockly

6.6k Topics 79.7k Posts

Hilfe für Skripterstellung mit Blockly

NEWS

  • Pushover nur einmal senden bei niedrigen Batteriestand

    blockly
    1
    2
    0 Votes
    1 Posts
    382 Views
    No one has replied
  • Telegram befehle erhalten

    1
    0 Votes
    1 Posts
    151 Views
    No one has replied
  • value in true oder false

    13
    0 Votes
    13 Posts
    319 Views
    paul53P
    @janwed sagte: dass ich kein wahr oder falsch dahinter als block einsetzen kann? Die "Objekt ID" ist auch ein String. Du möchtest sicherlich den "Wert vom Objekt" vergleichen? Da der Wert schon false oder true liefert, ist ein Vergleich mit "wahr" unnötig.
  • Zeit Schaltuhr funktioniert nicht

    7
    1
    0 Votes
    7 Posts
    220 Views
    paul53P
    @sami_bln sagte: Jetzt funktioniert es. Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].
  • 0 Votes
    22 Posts
    3k Views
    ChrisPrefectC
    @glasfaser Ah, ja, ich hatte nur den Pfad und nicht die URL angeschaut. Ich bin gar nicht auf die Idee gekommen, dass Blockly die einfachen Anführungszeichen nicht richtig escapet. Das ist doch ein Bug? Blockly sollte doch eigentlich so Fehlertolerant sein, dass sowas eben genau nicht passiert. Und es sollte irgendwelche Debuggin-Tools für den Fall geben. Ich habe auf keine Weise eine Fehlermeldung generieren können.
  • Ausnahme für automatische Rollladenschließung mit Astro

    20
    1
    0 Votes
    20 Posts
    614 Views
    L
    @paul53 Danke, funktioniert nach den ersten Tests!
  • [gelöst] Variable ObjektID Triggern?

    blockly javascript
    15
    1
    0 Votes
    15 Posts
    935 Views
    dslraserD
    @newpicsel sagte in Variable ObjektID Triggern?: Perfekt ich danke dir, funktionirt bestens prima
  • Systemlast Zeitplan vs. Trigger mit mehreren Datenobjekten

    3
    0 Votes
    3 Posts
    277 Views
    D
    @ahnungsbefreit, es sind einige mehr.... Alle 5 Minuten werden 15 Datenpunkte berechnet bzw. geändert. Aber Danke, ich werde mal alles in einen Zeitplan packen.
  • Problem mit eine Script (Hue / CCU)

    4
    2
    0 Votes
    4 Posts
    344 Views
    paul53P
    @balzmatthias sagte: wenn sich VIS_Wohnzimmer_LICHT ändert schaue ob der Wert Wahr ist und der von der Hue unwahr und drücke den Taster. Genau das macht mein Vorschlag in beide Richtungen (ein/aus).
  • Teufel Anlage über Alexa steuern mit Broadlink RM

    3
    1
    0 Votes
    3 Posts
    322 Views
    K
    @albert-k Vielen Dank für den Tipp :-) Ich hab es jetzt mit einem Datenpunkt gelöst und es funktioniert super. Danke [image: 1611753496387-bild-script_ok.png]
  • Gelöst! Rollosteuerung Shelly 2.5: Anfängerproblem

    blockly
    18
    1
    0 Votes
    18 Posts
    1k Views
    H
    @crunchip said in Gelöst! Rollosteuerung Shelly 2.5: Anfängerproblem: @highshot nö, eher bis dein Raffstore die Position erreicht hat Hast natürlich recht 😁 @paul53 Genau das wird’s sein... deswegen klackt das Relais drei mal Folge. Das Skript rattert einfach durch 😬
  • Blockly optimieren -Tabelle erstellen

    blockly template
    39
    1
    0 Votes
    39 Posts
    6k Views
    WszeneW
    @liv-in-sky Danke nochmal für deine Hilfe Hier wie besprochen der Export und die CSS-Klassen Blockly Export <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="X{YCwT6)UO~XY`Vc}2I4">anlegen_in</variable> <variable id="Sj=PG`7sdz;!7%*c;rMl">Tabelle - Name</variable> <variable id="0q#2a)[a+^d21Zhdi^sp">myList</variable> <variable id="2GY!!q}efSWeJut|}*g?">tabelleClass</variable> <variable id="$RIK(0f);.l=!pQfVAU#">Tabelle - Lampen</variable> <variable type="timeout" id="start">start</variable> <variable id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</variable> <variable id="zc}]z)HcoRF!Stu%L,1O">tabelleClassSpalte1</variable> <variable id="QZuXR_Vj:|w~;Y^wh/80">dpVIS</variable> <variable id="uY@Vk|3N|Db%n1]s5r65">schaltbar</variable> <variable id="$SQ+1P}hh0i}dM)i!l8Y">tabelleClassZeile1</variable> <variable id="0$3)d1XO~32nM)5=R_{E">tabelleClassZeile2</variable> <variable id="@XCmXlbJ|}uQfG*Yj}BT">tabelleClassIcon</variable> <variable id=";]3e-T$pq}QNAxDl__@;">Liste</variable> <variable id="[+@foafRz`m~/)FhPq0`">symbolSwitchOFF</variable> <variable id="xEf:=c;06LZR_EPM?]P@">counter</variable> <variable id="f`-]]z,}lIr/=i8^XP#h">symbolSwitchON</variable> <variable id="N8]TG{K`UGkh#8BWL|E)">symbolBreite</variable> <variable id="wan~:25GYo--e@M0rsmr">i</variable> <variable id="u,X-cS9u7+2)_f!kviiD">symbolHoehe</variable> </variables> <block type="procedures_defcustomnoreturn" id="D:0E=~0D8*EFnn8f|sd." x="37" y="-487"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_erstellen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjIgKDIwIE9jdG9iZXIgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwpmdW5jdGlvbiBjcmVhdGVVc2VyU3RhdGVzKHdoZXJlLCBmb3JjZSwgc3RhdGVzVG9DcmVhdGUsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7CiAKICAgIGNvbnN0IFdBUk4gPSBmYWxzZTsgLy8gT25seSBmb3IgMF91c2VyZGF0YS4wOiBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKS4gSW5jcmVhc2UgdGhpcyB0byAxMDAsIGlmIGl0IGlzIG5vdCB3b3JraW5nLgoKICAgIC8vIFZhbGlkYXRlICJ3aGVyZSIKICAgIGlmICh3aGVyZS5lbmRzV2l0aCgnLicpKSB3aGVyZSA9IHdoZXJlLnNsaWNlKDAsIC0xKTsgLy8gUmVtb3ZlIHRyYWlsaW5nIGRvdAogICAgaWYgKCAod2hlcmUubWF0Y2goL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKSkkfDBfdXNlcmRhdGFcLjAkKS8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgLy8gQWRkICJ3aGVyZSIgdG8gU1RBVEVTX1RPX0NSRUFURQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBscFBhdGggPSBzdGF0ZXNUb0NyZWF0ZVtpXVswXS5yZXBsYWNlKC9cLipcLi9nLCAnLicpOyAvLyByZXBsYWNlIGFsbCBtdWx0aXBsZSBkb3RzIGxpa2UgJy4uJywgJy4uLicgd2l0aCBhIHNpbmdsZSAnLicKICAgICAgICBscFBhdGggPSBscFBhdGgucmVwbGFjZSgvXigoamF2YXNjcmlwdFwuKFsxLTldWzAtOV18WzAtOV0pXC4pfDBfdXNlcmRhdGFcLjBcLikvLCcnKSAvLyByZW1vdmUgYW55IGphdmFzY3JpcHQueC4gLyAwX3VzZXJkYXRhLjAuIGZyb20gYmVnaW5uaW5nCiAgICAgICAgbHBQYXRoID0gd2hlcmUgKyAnLicgKyBscFBhdGg7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVzVG9DcmVhdGVbaV1bMF0gPSBscFBhdGg7CiAgICB9CgogICAgaWYgKHdoZXJlICE9ICcwX3VzZXJkYXRhLjAnKSB7CiAgICAgICAgLy8gQ3JlYXRlIFN0YXRlcyB1bmRlciBqYXZhc2NyaXB0LngKICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJyk7CiAgICAgICAgICAgIGxldCBsb29wSW5pdCA9IChsb29wUGFyYW1bMV1bJ2RlZiddID09IHVuZGVmaW5lZCkgPyBudWxsIDogbG9vcFBhcmFtWzFdWydkZWYnXTsgLy8gbWltaWMgc2FtZSBiZWhhdmlvciBhcyBjcmVhdGVTdGF0ZSBpZiBubyBpbml0IHZhbHVlIGlzIHByb3ZpZGVkCiAgICAgICAgICAgIGNyZWF0ZVN0YXRlKGxvb3BQYXJhbVswXSwgbG9vcEluaXQsIGZvcmNlLCBsb29wUGFyYW1bMV0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wCiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgICAgICBsZXQgY291bnRlciA9IC0xOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGNvdW50ZXIgKz0gMTsKICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nICgnW0RlYnVnXSBDdXJyZW50bHkgcHJvY2Vzc2luZyBmb2xsb3dpbmcgc3RhdGU6IFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsKICAgICAgICAgICAgaWYoICgkKGxvb3BQYXJhbVswXSkubGVuZ3RoID4gMCkgJiYgKGV4aXN0c1N0YXRlKGxvb3BQYXJhbVswXSkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBpcyBleGlzdGluZy4KICAgICAgICAgICAgICAgIGlmIChXQVJOICYmICFmb3JjZSkgbG9nKCdTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIGNyZWF0ZWQuJywgJ3dhcm4nKTsKICAgICAgICAgICAgICAgIGlmICghV0FSTiAmJiBMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcuIE9wdGlvbiBmb3JjZSAoPW92ZXJ3cml0ZSkgaXMgc2V0IHRvIFsnICsgZm9yY2UgKyAnXS4nKTsKICAgICAgICAgICAgICAgIGlmKCFmb3JjZSkgewogICAgICAgICAgICAgICAgICAgIC8vIFN0YXRlIGV4aXN0cyBhbmQgc2hhbGwgbm90IGJlIG92ZXJ3cml0dGVuIHNpbmNlIGZvcmNlPWZhbHNlCiAgICAgICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFuIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCwgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIGV4ZWN1dGUgbm93LicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBubyBjYWxsYmFjaywgcmV0dXJuIGFueXdheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBvdXQgYW5kIGNvbnRpbnVlIHdpdGggbmV4dCBlbGVtZW50IGluIGxvb3AuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg0NTI5MjAvY29udGludWUtaW4tY3Vyc29yLWZvcmVhY2gKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IC8vIGlmKCFmb3JjZSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3RhdGUgaXMgbm90IGV4aXN0aW5nIG9yIGZvcmNlID0gdHJ1ZSwgc28gd2UgYXJlIGNvbnRpbnVpbmcgdG8gY3JlYXRlIHRoZSBzdGF0ZSB0aHJvdWdoIHNldE9iamVjdCgpLgogICAgICAgICAgICBsZXQgb2JqID0ge307CiAgICAgICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgICAgICBvYmouY29tbW9uID0gbG9vcFBhcmFtWzFdOwogICAgICAgICAgICBzZXRPYmplY3QobG9vcFBhcmFtWzBdLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3QgZm9yIHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpCiAgICAgICAgICAgICAgICAgICAgbGV0IGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBsb29wUGFyYW1bMV0uZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShsb29wUGFyYW1bMF0sIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIHNldFN0YXRlIGR1cmNoZ2Vmw7xocnQ6ICcgKyBsb29wUGFyYW1bMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9LCBERUxBWSArICgyMCAqIGNvdW50ZXIpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQp9CgovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKLy9EYXRlbnB1bmt0ZSBmw7xyIFNlbmRlciBlcnN0ZWxsZW4gbWl0IFNtYXJ0TmFtZW4gZsO8ciBpb3QKbGV0IHN0YXRlc1RvQ3JlYXRlID0gWwogICAgWycwX3VzZXJkYXRhLjAuMDAyX251clZJUy4wM19UYWJlbGxlbi5UYWJlbGxlLUxhbXBlbicsIHsnbmFtZSc6J1RhYmVsbGUgLSBMYW1wZW4nLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonJywgJ2RlZic6JycsICJzbWFydE5hbWUiOiBmYWxzZSB9XSwKCl07CmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbix0cnVlLCBzdGF0ZXNUb0NyZWF0ZSk7CgovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKLy9GdW5rdGlvbiBtYWluIG1pdCBWZXJ6w7ZnZXJ1bmcgYXVmcnVmZW4KdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewptYWluKCk7Cn0sIDUwMDApOwoKCg==</field> <comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment> </block> <block type="procedures_defnoreturn" id="|r?w}:z)r=!T3O=4ydx]" collapsed="true" x="762" y="-487"> <field name="NAME">main</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id=".gQp2+8;_3/q8_Uwr:F/"> <field name="VAR" id="$RIK(0f);.l=!pQfVAU#">Tabelle - Lampen</field> <value name="VALUE"> <block type="text_join" id="]$B5QV^ydMJ7Ox*Vk,L("> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="z$A`(VFvUcL{CgqQKX]4"> <field name="VAR" id="X{YCwT6)UO~XY`Vc}2I4">anlegen_in</field> </block> </value> <value name="ADD1"> <block type="text" id="An4U,bq[qbV=TJY^y+9l"> <field name="TEXT">0_userdata.0.002_nurVIS.03_Tabellen.Tabelle-Lampen</field> </block> </value> </block> </value> <next> <block type="variables_set" id="C5HWo|yi`(1D-VroN~CI"> <field name="VAR" id="QZuXR_Vj:|w~;Y^wh/80">dpVIS</field> <value name="VALUE"> <block type="text" id="jE]@{6x/=YXCcP(*}MB_"> <field name="TEXT">0_userdata.0.002_nurVIS.03_Tabellen.Tabelle-Lampen</field> </block> </value> <next> <block type="on_ext" id="j5{Mnb?|Oo@L~6(UbSAv"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="FL;tv}CJCem$Z^9KD@Op"> <field name="oid">default</field> </shadow> <block type="variables_get" id="Ni|HL}{c56c/QzL#ge42"> <field name="VAR" id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</field> </block> </value> <statement name="STATEMENT"> <block type="debug" id="X0vTv0:.XY]1I6tzL9q@"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="RJ?8[!3;Q~FS8lAtLdeR"> <field name="TEXT">geschaltet</field> </shadow> </value> <next> <block type="variables_set" id="83N;r#%qTAdY9GgSNs^F"> <field name="VAR" id=";]3e-T$pq}QNAxDl__@;">Liste</field> <value name="VALUE"> <block type="lists_create_with" id="4U^kzE{Hs(]pnBMC??q|"> <mutation items="0"></mutation> </block> </value> <next> <block type="variables_set" id="*~@+.cU.1SMX$3YFQEMy"> <field name="VAR" id="xEf:=c;06LZR_EPM?]P@">counter</field> <value name="VALUE"> <block type="math_number" id="GaEH[gm^fOE=a@gYSg@t"> <field name="NUM">-1</field> </block> </value> <next> <block type="debug" id="0q`R4fr%LknOMj$3V$u@"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="TaX2W/t-$WBf@8b04TWs"> <field name="TEXT">geschaltet</field> </shadow> <block type="lists_length" id="m,n=M/w=A+o?=9%4uy~@"> <value name="VALUE"> <block type="variables_get" id="pA5HL%Bq}t=XiPi,$TkX"> <field name="VAR" id="Sj=PG`7sdz;!7%*c;rMl">Tabelle - Name</field> </block> </value> </block> </value> <next> <block type="controls_for" id="y*t(t$H=O/`gkA]e{f]N"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> <value name="FROM"> <shadow type="math_number" id="OSgU2MY;^D/[!kGW:d|L"> <field name="NUM">1</field> </shadow> <block type="math_number" id="{.jK(G4;-B#Wp-{i_~;8"> <field name="NUM">0</field> </block> </value> <value name="TO"> <shadow type="math_number" id="yP97$mYMiincLzghyD]w"> <field name="NUM">10</field> </shadow> <block type="math_arithmetic" id="(xxz~IVSoXGHB,isG3S~"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="`d,k5Qn$m.Uf_;4i+y]:"> <field name="NUM">1</field> </shadow> <block type="lists_length" id="#|sN^hF5G+sr]seg.U^:"> <value name="VALUE"> <block type="variables_get" id="?C(i`!-9hz%|ghSq;5m6"> <field name="VAR" id="Sj=PG`7sdz;!7%*c;rMl">Tabelle - Name</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="_/.VYy0t$[G=yegaPe]4"> <field name="NUM">1</field> </shadow> <block type="math_number" id="!_6P=,aB)p+dU5}d!x2,"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="BY"> <shadow type="math_number" id="OySf9m]U]b[ImluOB#gC"> <field name="NUM">1</field> </shadow> <block type="math_number" id="7ytVjDF?/?6OeV}x24mQ"> <field name="NUM">1</field> </block> </value> <statement name="DO"> <block type="debug" id=":8ICawg@-2]p/l}oHZph"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="8?~*3=^0D^hO{s,pGCXE"> <field name="TEXT">geschaltet</field> </shadow> <block type="get_value_var" id="SfY)vB]wkc]`bQu;UBzD"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="lists_getIndex" id="F{|T^UXS*aC?kou33~VB"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="tn?iJ?HNP[KJG}{]9?v2"> <field name="VAR" id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="#KU;iM?RVn,D|)Av$ze/"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Um9ElR!rBcQ2})$(,f!S"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="s0vbhz);SdvuUd:a#[4x"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="lists_setIndex" id="7cHhu-{x}5HAucBz}OME"> <mutation at="true"></mutation> <field name="MODE">SET</field> <field name="WHERE">FROM_START</field> <value name="LIST"> <block type="variables_get" id="$jGQP+47^7]ZUgfroqAH"> <field name="VAR" id=";]3e-T$pq}QNAxDl__@;">Liste</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="[b-)#Lj:KzVU.g^vH)nX"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="sbR4`Q$D:.e06oMl4!0K"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="8Xn*B:/R/T]Qhr:m~??$"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="TO"> <block type="lists_create_with" id="{@ebK;o3Gklz{FqwS:$4"> <mutation items="4"></mutation> <value name="ADD0"> <block type="lists_getIndex" id="Yv1b/Rs0|MHe~KT=@g6K"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="WC6k:N-L(kLDBK=VzUp^"> <field name="VAR" id="Sj=PG`7sdz;!7%*c;rMl">Tabelle - Name</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="cFkZochi|Z(~gj`U!Z$1"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="xx9p?#FxT!_uDOTe7mNk"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="~ww5Z8a+vfPD69Fjq)8s"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number" id="c1,#}X|F46YsFcC_Tk!;"> <field name="NUM">1</field> </shadow> <block type="math_number" id="Q?tk_~D~a*]S,lI#TiZx"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="get_value_var" id="[%)g^C8XgS{pO{#tb!X{"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="@I^i5M4[MKS7D,YqmG`{"> <field name="TEXT"></field> </shadow> <block type="lists_getIndex" id="{`NI)0^^8n{Z7^@AA~qN"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="*oemeJw6LT8Nh!2CkT?#"> <field name="VAR" id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="DepAp4o{CEN`rP42Eyk9"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Tj/=~@4drS6mm~an?;V{"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="kU(m?T`BSR,4Iv`Q!w#;"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="lists_getIndex" id="X.iFvPi}P2*EIsnO^{u%"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="ScyNh|x,2=1a~=6NT4=Z"> <field name="VAR" id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="mqSsuKI+G%J,+W7CKvIZ"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="[kugO)TQm=/,n8{zd,Cb"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="DOQ!`A,Rrd+b_b?0JDPR"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="lists_getIndex" id=",;1K;!QM5c#eZ`ajEegW"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="ge0oPgG/7df}^#-X2CMH"> <field name="VAR" id="uY@Vk|3N|Db%n1]s5r65">schaltbar</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="v(3{5ly@?+FidzF_#wet"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="mcqO0S9cj)`r#7k2DjFr"> <field name="VAR" id="wan~:25GYo--e@M0rsmr">i</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="yc^b5/3L*,P+0k-n^vQz"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </next> </block> </statement> <next> <block type="debug" id="fgbQNnE,HDdl5m{Og$~L"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">geschaltet</field> </shadow> <block type="variables_get" id="fAG([Lz!V$1PS5fDxtU]"> <field name="VAR" id=";]3e-T$pq}QNAxDl__@;">Liste</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="nOV9gWJMT2K)YWW~F$5f"> <mutation name="tabelleMit3Werten"> <arg name="myList"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="H,0ylQ7zL6lG%zxB]}_*"> <field name="VAR" id=";]3e-T$pq}QNAxDl__@;">Liste</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> <block type="variables_set" id=";?fMsQ~nMP,W:*R,z,hL" x="37" y="-437"> <field name="VAR" id="X{YCwT6)UO~XY`Vc}2I4">anlegen_in</field> <value name="VALUE"> <block type="text" id="TZDVFCHb+7p4,v#~lC!*"> <field name="TEXT">0_userdata.0</field> </block> </value> <next> <block type="timeouts_settimeout" id="8FQd(trxfKDt`(FG0(?="> <field name="NAME">start</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="}{A#y;jy-Pl_)n6[of`b"> <mutation name="Datenpunkte_erstellen"></mutation> </block> </statement> </block> </next> </block> <block type="variables_set" id="}WiBpiZ0_%C:a^gG0Q#n" x="663" y="-437"> <field name="VAR" id="Sj=PG`7sdz;!7%*c;rMl">Tabelle - Name</field> <value name="VALUE"> <block type="lists_create_with" id="|/LJ3+{[jEYU,^h}Z:pg"> <mutation items="6"></mutation> <value name="ADD0"> <block type="text" id="A=3U~Wx+!2j@I21Dk?!^"> <field name="TEXT">Esstisch</field> </block> </value> <value name="ADD1"> <block type="text" id="*Km]#h%{YG3Z65mghZ+9"> <field name="TEXT">Sofatisch</field> </block> </value> <value name="ADD2"> <block type="text" id="y7Jgr#UXpq@uQXn5Hosq"> <field name="TEXT">Stehlampe klein</field> </block> </value> <value name="ADD3"> <block type="text" id="pm)@d}6J`zZy+bXNH@H$"> <field name="TEXT">Stehlampe groß</field> </block> </value> <value name="ADD4"> <block type="text" id=".;1X=-;h$![-QQg$Ws}."> <field name="TEXT">Schlafzimmer-Lampe</field> </block> </value> <value name="ADD5"> <block type="text" id="zR]5Osz[~k`X0`Ysg7at"> <field name="TEXT">Abstellkammer-Lampe</field> </block> </value> </block> </value> <next> <block type="variables_set" id="y2?]c9}3]*k*C),|U;{F"> <field name="VAR" id="vFTZ1]BURtyw_?,7vv7]">Tabelle - Wert</field> <value name="VALUE"> <block type="lists_create_with" id="1e{,vWUl,1O@][+qJ:L6"> <mutation items="6"></mutation> <value name="ADD0"> <block type="field_oid" id="bX4qya?A8Y_3Om5J.bxY"> <field name="oid">alias.0.01_Stube.01_Schalter.Schalter-Esstisch</field> </block> </value> <value name="ADD1"> <block type="field_oid" id="4mkxL8p:7o[j8ZsC-2ah"> <field name="oid">alias.0.01_Stube.01_Schalter.Schalter-Sofatisch</field> </block> </value> <value name="ADD2"> <block type="field_oid" id="i:o,,cQ(d(#M`)2@gzF]"> <field name="oid">alias.0.03_Flur-Kammer.03_Lampen.Lampe_Kammer_Wert</field> </block> </value> <value name="ADD3"> <block type="field_oid" id="rJWml9-eq;)/t##LN*y]"> <field name="oid">alias.0.03_Flur-Kammer.03_Lampen.Lampe_Kammer_Wert</field> </block> </value> <value name="ADD4"> <block type="field_oid" id="8F6}0M/F!k6S+)kBf9:p"> <field name="oid">alias.0.02_Schlafzimmer.01_Schalter.Schalter-Schlafzimmerlampe</field> </block> </value> <value name="ADD5"> <block type="field_oid" id="$._9Le1ae@9*gS%i.Lx]"> <field name="oid">alias.0.03_Flur-Kammer.03_Lampen.Lampe_Kammer_Wert</field> </block> </value> </block> </value> <next> <block type="variables_set" id=".U=[Cr|/iP:B^mnE}#A#"> <field name="VAR" id="uY@Vk|3N|Db%n1]s5r65">schaltbar</field> <value name="VALUE"> <block type="lists_create_with" id="wD-C;G9y2Ug`PWKUH(ky"> <mutation items="6"></mutation> <value name="ADD0"> <block type="logic_boolean" id="04IQde8Vg/|TT?Gw9;p;"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="RmD:CGK^B}e8P@^nv`8g"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD2"> <block type="logic_boolean" id="/;Dc[y*A#EE}0CAEOLjV"> <field name="BOOL">FALSE</field> </block> </value> <value name="ADD3"> <block type="logic_boolean" id="*[GG,|,[dY%ek({;LnsX"> <field name="BOOL">FALSE</field> </block> </value> <value name="ADD4"> <block type="logic_boolean" id="dwwh`.gmm@lC~_Su,doE"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD5"> <block type="logic_boolean" id="0?i/$;+{3=f.8n29T+G^"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="d+PXd6N1nBTxz}gaM@Co" x="37" y="-312"> <mutation statements="false"> <arg name="myList" varid="0q#2a)[a+^d21Zhdi^sp"></arg> </mutation> <field name="NAME">tabelleMit3Werten</field> <field name="SCRIPT">Ly9AbGl2LWluLXNreSAyMDIwICA0LjIuLTE4OjQyCgoKLy9ISUVSIFdJUkQgUEZBRCBVTkQgRklMRU5BTUUgREVGSU5JRVJUCmNvbnN0IHBhdGggPSAiL2h0bWxleGFtcGxlc2V0dGluZy5odG1sIjsgICAgICAgICAgICAgICAgICAgLy9GSWxlbmFtZW4gZGVmaW5pZXJlbgpjb25zdCBob21lID0ndmlzLjAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy93byBzb2xsIGRhcyBmaWxlIGltIGlvYnJva2VyLWZpbGUtc3lzdGVtIGxpZWdlbiA/IChvZGVyIHouYiBhdWNoIGlxb250cm9sLm1ldGEpCmxldCAgIGJyYXVjaGVFaW5GaWxlPWZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVpIHRydWUgd2lyZCBlaW4gZmlsZSBnZXNjaHJpZWJlbgpsZXQgICBicmF1Y2hlRWluVklTV2lkZ2V0PXRydWU7ICAgICAgICAgICAgICAgICAgICAgLy8gYmVpIHRydWUgd2lyZCBlaW4gaHRtbC10YWJlbGxlIGluIGVpbmVuIGRwIGdlc2NocmllYmVuIC0gc2llaGUgbsOkY2hzdGUgemVpbGUKLy9sZXQgZHBWSVM9ImNvbnRyb2xsLW93bi4wLkFBQVRFU1QuVGVzdEhUTUwiICAgICAgICAgLy9XSUNIVElHIHdlbm4gYnJhdWNoZUVpblZJU1dpZGdldCBhdWYgdHJ1ZSBnZXNldHp0ICEhICBkcCB6dXPDpHR6bGljaCBmw7xyIFZJUy1IVE1MLUJhc2ljLVdpZGdldApjb25zdCBmYXJiZVNjaGFsdGVyT049ImxpZ2h0Ymx1ZSIgICAgICAgICAgICAgICAvLyBmYXJiZSBkZXMgc2NoYWx0ZXJzIGbDvHIgT04KY29uc3QgZmFyYmVTY2hhbHRlck9GRj0iZ3JleSIgICAgICAgICAgICAgICAvLyBmYXJiZSBkZXMgc2NoYWx0ZXJzIGbDvHIgT0ZGCgovL2xldCBteVNjaGVkdWxlPSIgKi8yMCAqICogKiAqICogIjsgICAgICAgICAgICAgICAgICAgICAgIC8vamVkZSBtaW51dGUgIAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy9ISUVSIERJRSBTUEFMVEVOIEFOWkFITCBERUZJTklFUkVOIC0gamVkZSBTcGFsdGUgZWluZW4gV2VydCAtIGluIGRpZXNlbSBCZWlzcGllbCBzaW5kIGVzIDIKdmFyIGh0bWxGZWxkMT0nU3RhbmRvcnQnOyAgICAgICB2YXIgRmVsZDFsQWxpZ249ImxlZnQiOyAgICAgICAgICAgICAgICAgICAgIC8vIMO8YmVyc2NocmlmdCBUYWJlbGxlbiBTcGFsdGUxIHVuZCAgQXVzcmljaHR1bmcgbGVmdCxyaWdodCBvciBjZW50ZXIKdmFyIGh0bWxGZWxkMj0nU3RhdHVzJzsgICAgICAgICB2YXIgRmVsZDJsQWxpZ249ImNlbnRlciI7ICAgICAgICAgICAgICAgICAgICAgIC8vIMO8YmVyc2NocmlmdCBUYWJlbGxlbiBTcGFsdGUyIHVuZCAgQXVzcmljaHR1bmcgbGVmdCxyaWdodCBvciBjZW50ZXIKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKLy9oaWVyIHdlcmRlbiBkaWUgc3R5bGVzIGbDvHIgZGllIHRhYmVsbGUgZGVmaW5pZXJ0Ci8vw5xCRVJTQ0hSSUZUIMOcQkVSIFRBQkVMTEUKbGV0ICAgaHRtbFViZXJzY2hyaWZ0PWZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pdCDDnGJlcnNjaHJpZnQgw7xiZXIgZGVyIHRhYmVsbGUKbGV0ICAgaHRtbFNpZ25hdHVyZT1mYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnN0YXR0IGRlciDDnGJlcnNjZ2hyaWZ0IGVpbmUgc2lnbmF0dXJlOiAtIGtsZWluZXIgLSBhbmxpZWdlbmQKY29uc3QgaHRtbEZlbGRVZWJlcj0nQmF0dGVyaWUgWnVzdGFuZCBTZW5zb3Jlbic7ICAgICAgICAgICAgICAvLyDDnGJlcnNjaHJpZnQgdW5kIFNpZ25hdHVyZQpjb25zdCBodG1sRmFyYlViZXI9ImJsYWNrIjsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFyYmUgZGVyIMOcYmVyc2NocmlmdApjb25zdCBodG1sU2NocmlmdFdlaXRlPSJub3JtYWwiOyAgICAgICAgICAgICAgICAgICAgICAgLy8gYm9sZCwgbm9ybWFsIC0gRmV0dHNjaHJpZnQgZsO8ciDDnGJlcnNjaHJpZnQKY29uc3QgaHRtbMOcYmVyRm9udEdyb2Vzc2U9IjE4cHgiOyAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NocmlmdGdyw7bDn2Ugw7xiZXJzY2hyaWZ0Ci8vTUVIUkVSRSBUQUJFTExFTiBORUJFTkVJTkFOREVSCmxldCAgIG1laHJmYWNoVGFiZWxsZT0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpcyB6dSA0IFRhYmVsbGVuIHdlcmRlbiBuZWJlbmVpbmFuZGVyIGdlc2NocmllYmVuLSAgdmVya8O8cnp0IGRhcyBHYW56ZSwgZGFmw7xyIGV0d2FzIGJyZWl0ZXIgLSBNw5ZHTElDSCAxLDIsMyxvZGVyIDQgISEhCmNvbnN0IHRyZW5udW5nc0xpbmllPSIyIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXh0cmEgdHJlbm51bmdzbGluaWUgYmVpIG1laHJmYWNodGFiZWxsZW4gLSBldnRsIGF1ZiAwIHN0ZWxsZW4sIHdubiBodG1sUmFobWVuTGluaWVuIGF1ZiBub25lIHNpbmQKY29uc3QgZmFyYmV0cmVubnVuZ3NMaW5pZT0id2hpdGUiOwpjb25zdCBodG1sRmFyYlp3ZWl0ZVRhYmVsbGU9IndoaXRlIjsgICAgICAgICAgICAgICAgLy8gRmFyYmUgZGVyIMOcYmVyc2NocmlmdCBiZWkgamVkZXIgMi50ZW4gVGFiZWxsZQpjb25zdCBodG1sRmFyYlRhYmxlQ29sb3JVYmVyPSIjMDAwMDAwIjsgICAgICAgICAgICAgICAvLyDDnGJlcnNjaHJpZnQgaW4gZGVyIHRhYmVsbGUgLSBkZXIgZWluemVsbmVuIFNwYWx0ZW4KLy/DnEJFUlNDSFJJRlQgU1BBTFRFTgpjb25zdCBVZWJlclNjaHJpZnRIw7ZoZT0iMzUiOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy/DnGJlcnNjaHJpZnQgYmVrb21tdCBtZWhyIFJhdW0gLSBkYXJ1bnRlciB1bmQgZGFyw7xiZXIgLSBaZWxsZW5ow7ZoZQpjb25zdCBMaW5pZVVudGVyVWViZXJzY2hyaWZ0PSIzIjsgICAgICAgICAgICAgICAgICAgLy8gTGluaWUgbnVyIHVudGVyIFNwYWx0ZW7DvGJlcnNjaHJpZnQgLSAKY29uc3QgZmFyYmVMaW5pZVVudGVyVWViZXJzY2hyaWZ0PSJ3aGl0ZSI7CmNvbnN0IGdyb2Vzc2VVZWJlcnNjaHJpZnQ9MTY7CmNvbnN0IFVlYmVyc2NocmlmdFN0eWxlPSJub3JtYWwiICAgICAgICAgICAgICAgICAgICAgLy8gbcO2Z2xpY2ggImJvbGQiCi8vR0FOWkUgVEFCRUxMRQpsZXQgYWJzdGFuZFplbGxlPSIxIjsKbGV0IGZhcmJlVW5nZXJhZGVaZWlsZW49IiMwMDAwMDAiOyAgICAgICAgICAgICAgICAgICAgIC8vRmFyYmUgZsO8ciB1bmdlcmFkZSBaZWlsZW5hbnphaGwgLSBIaW50ZXJncnVuZCBkZXIgU3BhbHRlbsO8YmVyc2NocmlmdCBibGVpYnQgYmVpIGh0bWxGYXJiVGFibGVDb2xvckdyYWRpZW50MS8yCmxldCBmYXJiZUdlcmFkZVplaWxlbj0iIzE1MTUxNSI7ICAgICAgICAgICAgICAgICAgICAgICAgLy9GYXJiZSBmw7xyIGdlcmFkZSBaZWlsZW5hbnphaGwgLSBIaW50ZXJncnVuZCBkZXIgU3BhbHRlbsO8YmVyc2NocmlmdCBibGVpYnQgYmVpIGh0bWxGYXJiVGFibGVDb2xvckdyYWRpZW50MS8yCmxldCB3ZWl0ZT0iMTAwJSI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vV2VpdGUgZGVyIFRhYmVsbGUKbGV0IHplbnRyaWVydD10cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nYW56ZSB0YWJlbGxlIHplbnRyaWVydApjb25zdCBiYWNrZ3JvdW5kQWxsPSIjMDAwMDAwIjsgICAgICAgICAgICAgICAgICAgICAgICAvL0hpbnRlcmdydW5kIGbDvHIgZGllIGdhbnplIFNlaXRlIC0gZsO8ciBkaXJla3RlbiBhdWZydWYgb2RlciBpcW9udHJvbCBzaWNodGJlciAtIGtlaW5lIGF1c3dpcmt1bmcgYXVmIHZpcy13aWRnZXQKY29uc3QgaHRtbFNjaHJpZnRhcnQ9IlBsYXktUmVndWxhciI7Ci8vY29uc3QgaHRtbFNjaHJpZnRncm9lc3NlPSIyMnB4IjsKLy9GRUxERVIgVU5EIFJBSE1FTgpsZXQgICBVZWJlcnNjaHJpZnRTcGFsdGVuPWZhbHNlOyAgICAgICAgICAgICAgICAvLyBlaW4tIG9kZXIgYXVzYmxlbmRlbiBkZXIgc3BhdGxlbi3DvGJlcnNjaHJpZnRlbgpjb25zdCBodG1sRmFyYkZlbGRlcnNjaHJpZnQ9IiNCREJEQkQiOyAgICAgICAgICAgICAgICAgIC8vIFNjaHJpZnRGYXJiZSBkZXIgRmVsZGVyCmNvbnN0IGh0bWxGYXJiRmVsZGVyc2NocmlmdDI9IiNEOEQ4RDgiOyAgICAgICAgICAgICAgICAgLy8gU2NocmlmdEZhcmJlIGRlciBGZWxkZXIgZsO8ciBqZWRlIDJ0ZSBUYWJlbGxlCmNvbnN0IGh0bWxGYXJiVGFibGVDb2xvckdyYWRpZW50MT0iI0NERDE2MyI7ICAgICAgICAgIC8vICBHcmFkaWVudCAtIEhpbnRlcmdydW5kIGRlciBUYWJlbGxlIC0gVmVybGF1ZmZhcmJlCmNvbnN0IGh0bWxGYXJiVGFibGVDb2xvckdyYWRpZW50Mj0iI0NERDE2MyI7ICAgICAgICAgIC8vICBHcmFkaWVudCAtIEhpbnRlcmdydW5kIGRlciBUYWJlbGxlIC0gaXN0IGRpZXNlciBXZXJ0IGdsZWljaCBHcmFkaWVudDEgZ2lidCBlcyBrZWluZW4gdmVybGF1Zgpjb25zdCBodG1sRmFyYlRhYmxlQm9yZGVyQ29sb3I9ImFjYWEyMCI7ICAgICAgICAgICAgIC8vIEZhcmJlIGRlcyBSYWhtZW4gLSBpcyB0ZGllc2VyIGdsZWljaCBkZW4gZ3JhZGllbnRlbiwgc2luZCBkaWUgcmFobWVuIHVuc2ljaHRiYXIKbGV0IGh0bWxSYWhtZW5MaW5pZW49ImFsbCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcm1hdCBmw7xyIFJhaG1lbjogTcOWR0xJQ0g6ICJub25lIiBvZGVyICJhbGwiIG9kZXIgImNvbHMiIG9kZXIgInJvd3MiCmNvbnN0IGh0bWxTcGFsdGUxV2VpdGU9ImF1dG8iOyAgICAgICAgICAgICAgICAgICAvLyAgV2VpdGUgZGVyIGVyc3RlbiBiZWlkZW4gIFNwYWx0ZW4gb2RlciB6LmIuIDExNXB4CgovLyBISUVSIE5JQ0hUUyAgw4ROREVSTgoKbGV0IGJvcmRlckhlbHBCb3R0dW07CmxldCBib3JkZXJIZWxwUmlnaHQ7CmxldCBodG1sY2VudGVySGVscDsKbGV0IGh0bWxjZW50ZXJIZWxwMjsKCmlmKGh0bWxSYWhtZW5MaW5pZW49PSJyb3dzIikge2JvcmRlckhlbHBCb3R0dW09MTtib3JkZXJIZWxwUmlnaHQ9MDt9CmlmKGh0bWxSYWhtZW5MaW5pZW49PSJjb2xzIikge2JvcmRlckhlbHBCb3R0dW09MDtib3JkZXJIZWxwUmlnaHQ9MTt9CmlmKGh0bWxSYWhtZW5MaW5pZW49PSJub25lIikge2JvcmRlckhlbHBCb3R0dW09MDtib3JkZXJIZWxwUmlnaHQ9MDt9CmlmKGh0bWxSYWhtZW5MaW5pZW49PSJhbGwiKSAge2JvcmRlckhlbHBCb3R0dW09MTtib3JkZXJIZWxwUmlnaHQ9MTt9CnplbnRyaWVydCA/IGh0bWxjZW50ZXJIZWxwPSJhdXRvIiA6IGh0bWxjZW50ZXJIZWxwPSJsZWZ0IjsKemVudHJpZXJ0ID8gaHRtbGNlbnRlckhlbHAyPSJjZW50ZXIiIDogaHRtbGNlbnRlckhlbHAyPSJsZWZ0IjsKCgpjb25zdCBodG1sWmVudHJpZXJ0PScnCmNvbnN0IGh0bWxTdGFydD0gICAgIiI7Ci8vY29uc3QgaHRtbFVlYmVyPSAgICAiPHAgc3R5bGU9XCJjb2xvcjoiK2h0bWxGYXJiVWJlcisiOyBmb250LWZhbWlseToiK2h0bWxTY2hyaWZ0YXJ0KyI7IGZvbnQtd2VpZ2h0OiBib2xkXCI+IitodG1sRmVsZFVlYmVyKyI8L3A+IjsgICAgICAgICAgICAgICAgICAgIApjb25zdCBodG1sVGFiU3R5bGU9ICI8dGFibGUgY2xhc3M9XCIiK3RhYmVsbGVDbGFzcysiXCI+IjsKY29uc3QgaHRtbFRhYlVlYmVyMT0iPHRyIGhlaWdodD1cIiIrVWViZXJTY2hyaWZ0SMO2aGUrIlwiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYlRhYmxlQ29sb3JVYmVyKyI7IGZvbnQtc2l6ZTogIitncm9lc3NlVWViZXJzY2hyaWZ0KyJweDsgZm9udC13ZWlnaHQ6ICIrVWViZXJzY2hyaWZ0U3R5bGUrIiA7ICBib3JkZXItYm90dG9tOiAiK0xpbmllVW50ZXJVZWJlcnNjaHJpZnQrInB4IHNvbGlkICIrZmFyYmVMaW5pZVVudGVyVWViZXJzY2hyaWZ0KyIgXCI+IjsKY29uc3QgaHRtbFRhYlVlYmVyMz0iPC90cj4iOwoKY29uc3QgYnV0dG9uU2NyaXB0ID0gICc8c2NyaXB0PiBmdW5jdGlvbiBzZXRPbkRibENsaWNrQ3VzdG9tKCBteXZhbHVlICkgewl2YXIgU2VsZiA9IHRoaXM7IHZhciBvYmpJRCA9IG15dmFsdWU7CVNlbGYuc2VydkNvbm4uZ2V0U3RhdGVzKG9iaklELCAoZXJyb3IsIHN0YXRlcykgPT4geyAgY29uc29sZS5sb2coc3RhdGVzKTsgIFNlbGYuc2VydkNvbm4uc2V0U3RhdGUob2JqSUQsICFzdGF0ZXNbb2JqSURdLnZhbCk7IH0pOyB9IDwvc2NyaXB0PicKCi8vLy9OSUNIVFMgw4ROREVSTiAgLSBhYmjDpG5naWcgdm9uIGRlbiBvYmVuIGRlZmluaWVydGVuIF9TcGFsdGVuIC0gaW4gZGllc2VtIEJlaXNwaWVsIHNpbmQgZXMgMgoKdmFyIGh0bWxUYWJVZWJlcjI9Ijx0ZCB3aWR0aD0iK2h0bWxTcGFsdGUxV2VpdGUrIiBhbGlnbj0iK0ZlbGQxbEFsaWduKyI+JmVuc3A7IitodG1sRmVsZDErIiZlbnNwOzwvdGQ+PHRkIHdpZHRoPSIraHRtbFNwYWx0ZTFXZWl0ZSsiIGFsaWduPSIrRmVsZDJsQWxpZ24rIj4mZW5zcDsiK2h0bWxGZWxkMisiJmVuc3A7PC90ZD4iOwp2YXIgaHRtbFRhYlVlYmVyMl8xPSI8dGQgd2lkdGg9IitodG1sU3BhbHRlMVdlaXRlKyIgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYlp3ZWl0ZVRhYmVsbGUrIlwiPiZlbnNwOyIraHRtbEZlbGQxKyImZW5zcDs8L3RkPjx0ZCB3aWR0aD0iK2h0bWxTcGFsdGUxV2VpdGUrIiBhbGlnbj0iK0ZlbGQybEFsaWduKyIgc3R5bGU9XCJjb2xvcjoiK2h0bWxGYXJiWndlaXRlVGFiZWxsZSsiXCI+JmVuc3A7IitodG1sRmVsZDIrCiAgICAgICAgICAgICAgICAgICImZW5zcDs8L3RkPiI7Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdmFyIGh0bWxPdXQ9IiI7CnZhciBtaXg7CnZhciBjb3VudGVyOwp2YXIgdmFsMTsgIHZhciB2YWwwOwp2YXIgaHRtbFRhYlVlYmVyPSIiOwoKZnVuY3Rpb24gd3JpdGVIVE1MKCl7CgoKCmh0bWxPdXQ9IiI7Cgpjb3VudGVyPS0xOwpodG1sVGFiVWViZXI9IiI7CnN3aXRjaCAobWVocmZhY2hUYWJlbGxlKSB7IAogIGNhc2UgMTogaHRtbFRhYlVlYmVyPWh0bWxUYWJVZWJlcjEraHRtbFRhYlVlYmVyMitodG1sVGFiVWViZXIzOyAgYnJlYWs7CiAgY2FzZSAyOiBodG1sVGFiVWViZXI9aHRtbFRhYlVlYmVyMStodG1sVGFiVWViZXIyK2h0bWxUYWJVZWJlcjJfMStodG1sVGFiVWViZXIzOyBicmVhazsKICBjYXNlIDM6IGh0bWxUYWJVZWJlcj1odG1sVGFiVWViZXIxK2h0bWxUYWJVZWJlcjIraHRtbFRhYlVlYmVyMl8xK2h0bWxUYWJVZWJlcjIraHRtbFRhYlVlYmVyMzsgYnJlYWs7CiAgY2FzZSA0OiBodG1sVGFiVWViZXI9aHRtbFRhYlVlYmVyMStodG1sVGFiVWViZXIyK2h0bWxUYWJVZWJlcjJfMStodG1sVGFiVWViZXIyK2h0bWxUYWJVZWJlcjJfMStodG1sVGFiVWViZXIzOyBicmVhazsKfTsgICAgCmlmICghVWViZXJzY2hyaWZ0U3BhbHRlbikge2h0bWxUYWJVZWJlcj0iIn0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8tLS0tLS0tLS1oaWVyIGtvbW10IGV1cmUgc2NobGVpZmUgcmVpbiBjb3VudGVyKyssIHRhYmVsbGVCaW5kKCkgdW5kIHRhYmVsbGVGaW5pc2goKSBtw7xzc2VuIHNvIGludGVncmllcnQgYmxlaWJlbiAhISEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8tLS0tLS0tLS1hbGxlIHZhbHggd2VydGUgbcO8c3NlbiB2b24gZXVjaCBiZXN0aW1tdCB3ZXJkZW4gLSB2YWwwLHZhbDEgISEhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZvciAodmFyIHg9MDt4PG15TGlzdC5sZW5ndGg7eCsrKXsKICAgIGNvdW50ZXIrKzsKICAgIGlmKG15TGlzdFt4XVsxXSE9bnVsbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsMCAgPSBteUxpc3RbeF1bMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsMSAgPSBteUxpc3RbeF1bMV0KICAvLyBsb2codmFsMCkKICAgICAgICAgICAgICAgIGxldCB2YWxCdXR0b249bXlMaXN0W3hdWzJdCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChteUxpc3RbeF1bM10pewogICAgICAgICAgICAgICAgdmFsMSA/IHZhbDE9IjxidXR0b24gc3R5bGVcPVwiYm9yZGVyOm5vbmVcOyBiYWNrZ3JvdW5kLWNvbG9yXDp0cmFuc3BhcmVudFw7IHZhbHVlPVwidG9nZ2xlXCIgb25jbGljaz1cInNldE9uRGJsQ2xpY2tDdXN0b21cKFwnIit2YWxCdXR0b24rIlwnKVwiPiIrIjxpbWcgY2xhc3M9XCIiK3RhYmVsbGVDbGFzc0ljb24rIlwiIHNyYz0iK3N5bWJvbFN3aXRjaE9OICsiIGhlaWdodD1cIiIrc3ltYm9sSG9laGUrIlwiIHdpZHRoPVwiIitzeW1ib2xCcmVpdGUrIlwiPiIrIjwvYnV0dG9uPiI6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwxPSI8YnV0dG9uIHN0eWxlXD1cImJvcmRlcjpub25lXDsgYmFja2dyb3VuZC1jb2xvclw6dHJhbnNwYXJlbnRcOyB2YWx1ZT1cInRvZ2dsZVwiIG9uY2xpY2s9XCJzZXRPbkRibENsaWNrQ3VzdG9tXChcJyIrdmFsQnV0dG9uKyJcJylcIj4iKyI8aW1nIGNsYXNzPVwiIit0YWJlbGxlQ2xhc3NJY29uKyJcIiBzcmM9IitzeW1ib2xTd2l0Y2hPRkYgKyIgaGVpZ2h0PVwiIitzeW1ib2xIb2VoZSsiXCIgd2lkdGg9XCIiK3N5bWJvbEJyZWl0ZSsiXCI+IisiPC9idXR0b24+IjsKICAgICAgICAgICAgICAgIH0gZWxzZXsKICAgICAgICAgICAgICAgICAgIHZhbDEgPyB2YWwxPSI8aW1nIGNsYXNzPVwiIit0YWJlbGxlQ2xhc3NJY29uKyJcIiBzcmM9IitzeW1ib2xTd2l0Y2hPTiArIiBoZWlnaHQ9XCIiK3N5bWJvbEhvZWhlKyJcIiB3aWR0aD1cIiIrc3ltYm9sQnJlaXRlKyJcIj4iICA6IAogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDE9IjxpbWcgY2xhc3M9XCIiK3RhYmVsbGVDbGFzc0ljb24rIlwiIHNyYz0iK3N5bWJvbFN3aXRjaE9GRiArIiBoZWlnaHQ9XCIiK3N5bWJvbEhvZWhlKyJcIiB3aWR0aD1cIiIrc3ltYm9sQnJlaXRlKyJcIj4iIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgLy8gICBpZiAodmFsMT09ZmFsc2UpIHt2YWwxPSLinYwifSBlbHNle3ZhbDE9IuKchSJ9ICAKICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmVsbGVCaW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgLy9TY2hsZWlmZW4gRW5kZSAtIGplIG5hY2ggc2NobGVpZmVuYXJ0IG11c3MgaGllciBldHdhcyBnZcOkbmRlcnQgd2VyZGVuICEhISEhISEhIQoKfSB0YWJlbGxlRmluaXNoKCk7Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgCgogICAgLy8gQUIgSElFUiBOSUNIVFMgw4ROREVSTiAtIHRhYmVsbGUgZmVydGlnc3RlbGxlbgogICAgCn0gLy8gZnVuY3Rpb24gZW5kZQoKLy9NQUlOOgoKCndyaXRlSFRNTCgpOwoKZnVuY3Rpb24gdGFiZWxsZUJpbmQoKXsKICAgICAgc3dpdGNoIChtZWhyZmFjaFRhYmVsbGUpIHsgIAogICAgICAgIGNhc2UgMTogIGlmKGNvdW50ZXIlMj09MCkgICAgICAgICB7ICAgaHRtbE91dD1odG1sT3V0KyI8dHIgY2xhc3M9XCIiK3RhYmVsbGVDbGFzc1plaWxlMSsiXCI+PHRkIGNsYXNzPVwiIit0YWJlbGxlQ2xhc3NTcGFsdGUxKyJcIiBhbGlnbj0iK0ZlbGQxbEFsaWduKyI+Iit2YWwwKyI8L3RkPjx0ZCBhbGlnbj0iK0ZlbGQybEFsaWduKyI+Iit2YWwxKyI8L3RkPjwvdHI+IjsgYnJlYWs7ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgIGh0bWxPdXQ9aHRtbE91dCsiPHRyIGNsYXNzPVwiIit0YWJlbGxlQ2xhc3NaZWlsZTIrIlwiPjx0ZCBjbGFzcz1cIiIrdGFiZWxsZUNsYXNzU3BhbHRlMSsiXCIgYWxpZ249IitGZWxkMWxBbGlnbisiPiIrdmFsMCsiPC90ZD48dGQgYWxpZ249IitGZWxkMmxBbGlnbisiPiIrdmFsMSsiPC90ZD48L3RyPiI7IGJyZWFrOyAgfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBjYXNlIDI6ICBpZihjb3VudGVyJTQ9PTApewogICAgICAgICAgICAgICAgIGlmKGNvdW50ZXIlMj09MCkgIHtodG1sT3V0ID0gaHRtbE91dCsiPHRyIGJnY29sb3I9XCIiK2ZhcmJlR2VyYWRlWmVpbGVuKyJcIiA+PHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIj4iK3ZhbDArIjwvdGQ+PHRkIHN0eWxlPVwiIGJvcmRlci1yaWdodDogIit0cmVubnVuZ3NMaW5pZSsicHggc29saWQgIitmYXJiZXRyZW5udW5nc0xpbmllKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7XCJhbGlnbj0iK0ZlbGQybEFsaWduKyI+Iit2YWwxKyI8L3RkPiI7IH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge2h0bWxPdXQgPSBodG1sT3V0KyI8dGQgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iK0ZlbGQybEFsaWduKyIgc3R5bGU9XCJjb2xvcjoiKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDErIjwvdGQ+PC90cj4iO30gYnJlYWs7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgaWYoY291bnRlciUyPT0wKSAge2h0bWxPdXQgPSBodG1sT3V0KyI8dHIgYmdjb2xvcj1cIiIrZmFyYmVVbmdlcmFkZVplaWxlbisiXCI+PHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIj4iK3ZhbDArIjwvdGQ+PHRkIHN0eWxlPVwiIGJvcmRlci1yaWdodDogIit0cmVubnVuZ3NMaW5pZSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHggc29saWQgIitmYXJiZXRyZW5udW5nc0xpbmllKyI7XCIgYWxpZ249IitGZWxkMmxBbGlnbisiPiIrdmFsMSsiPC90ZD4iOyB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtodG1sT3V0ID0gaHRtbE91dCsiPHRkICBhbGlnbj0iK0ZlbGQxbEFsaWduKyIgc3R5bGU9XCIgY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iK0ZlbGQybEFsaWduKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDErIjwvdGQ+PC90cj4iO30gYnJlYWs7fQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAKICAgICAgICBjYXNlIDM6IGlmKGNvdW50ZXIlMj09MCkgICB7CiAgICAgICAgCiAgICAgICAgICAgICAgICBpZihjb3VudGVyJTM9PTAgKSAge2h0bWxPdXQgPSBodG1sT3V0KyI8dHIgYmdjb2xvcj1cIiIrZmFyYmVHZXJhZGVaZWlsZW4rIlwiPjx0ZCBhbGlnbj0iK0ZlbGQxbEFsaWduKyI+Iit2YWwwKyI8L3RkPjx0ZCBzdHlsZT1cIiBib3JkZXItcmlnaHQ6ICIrdHJlbm51bmdzTGluaWUrInB4IHNvbGlkICIrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFyYmV0cmVubnVuZ3NMaW5pZSsiO1wiIGFsaWduPSIrRmVsZDJsQWxpZ24rIj4iK3ZhbDErIjwvdGQ+IjsgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IGlmKGNvdW50ZXIlMz09MSApICB7IGh0bWxPdXQgPSBodG1sT3V0KyI8dGQgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iK0ZlbGQybEFsaWduKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3R5bGU9XCJib3JkZXItcmlnaHQ6ICIrdHJlbm51bmdzTGluaWUrInB4IHNvbGlkICIrZmFyYmV0cmVubnVuZ3NMaW5pZSsiO2NvbG9yOiIraHRtbEZhcmJGZWxkZXJzY2hyaWZ0MisiXCI+Iit2YWwxKyI8L3RkPiI7fSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAgIHtodG1sT3V0ID0gaHRtbE91dCsiPHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIj4iK3ZhbDArIjwvdGQ+PHRkIGFsaWduPSIrRmVsZDJsQWxpZ24rIj4iK3ZhbDErIjwvdGQ+PC90cj4iO30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGJyZWFrOyB9ZWxzZXsKICAgICAgICAgICAgICAgIGlmKGNvdW50ZXIlMz09MCApICB7aHRtbE91dCA9IGh0bWxPdXQrIjx0ciBiZ2NvbG9yPVwiIitmYXJiZVVuZ2VyYWRlWmVpbGVuKyJcIj48dGQgYWxpZ249IitGZWxkMWxBbGlnbisiPiIrdmFsMCsiPC90ZD48dGQgc3R5bGU9XCIgYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcmJldHJlbm51bmdzTGluaWUrIjtcIiBhbGlnbj0iK0ZlbGQybEFsaWduKyI+Iit2YWwxKyI8L3RkPiI7IH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBpZihjb3VudGVyJTM9PTEgKSAgeyBodG1sT3V0ID0gaHRtbE91dCsiPHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIiBzdHlsZT1cImNvbG9yOiIraHRtbEZhcmJGZWxkZXJzY2hyaWZ0MisiXCI+Iit2YWwwKyI8L3RkPjx0ZCAgYWxpZ249IitGZWxkMmxBbGlnbisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0eWxlPVwiYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiK2ZhcmJldHJlbm51bmdzTGluaWUrIjtjb2xvcjoiK2h0bWxGYXJiRmVsZGVyc2NocmlmdDIrIlwiPiIrdmFsMSsiPC90ZD4iO30gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICB7aHRtbE91dCA9IGh0bWxPdXQrIjx0ZCBhbGlnbj0iK0ZlbGQxbEFsaWduKyI+Iit2YWwwKyI8L3RkPjx0ZCBhbGlnbj0iK0ZlbGQybEFsaWduKyI+Iit2YWwxKyI8L3RkPjwvdHI+Ijt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBicmVhazsgIH0gICAgICAgICAgICAgICAgICAgICAgIAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgY2FzZSA0OiAvL2NvdW50ZXI9Y291bnRlcis4IAogICAgICAgIGlmKGNvdW50ZXIlOD09MCkgICB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYoY291bnRlciU0PT0wKSAge2h0bWxPdXQgPSBodG1sT3V0KyI8dHIgYmdjb2xvcj1cIiIrZmFyYmVHZXJhZGVaZWlsZW4rIlwiPjx0ZCBhbGlnbj0iK0ZlbGQxbEFsaWduKyI+Iit2YWwwKyI8L3RkPjx0ZCBzdHlsZT1cIiBib3JkZXItcmlnaHQ6ICIrdHJlbm51bmdzTGluaWUrInB4IHNvbGlkICIrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFyYmV0cmVubnVuZ3NMaW5pZSsiO1wiIGFsaWduPSIrRmVsZDJsQWxpZ24rIj4iK3ZhbDErIjwvdGQ+IjsgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge2lmKGNvdW50ZXIlND09MSApICB7IGh0bWxPdXQgPSBodG1sT3V0KyI8dGQgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iK0ZlbGQybEFsaWduKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3R5bGU9XCJjb2xvcjoiK2h0bWxGYXJiRmVsZGVyc2NocmlmdDIrIlwiPiIrdmFsMSsiPC90ZD4iO30gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICB7aWYoY291bnRlciU0PT0zKSAgeyBodG1sT3V0PSBodG1sT3V0KyI8dGQgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWxkMmxBbGlnbisiIHN0eWxlPVwiYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiK2ZhcmJldHJlbm51bmdzTGluaWUrIjsgY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCI+Iit2YWwxKyI8L3RkPjwvdHI+Ijt9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgICAge2h0bWxPdXQgPSBodG1sT3V0ID0gaHRtbE91dCsiPHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIj4iK3ZhbDArIjwvdGQ+PHRkIHN0eWxlPVwiIGJvcmRlci1yaWdodDogIit0cmVubnVuZ3NMaW5pZSsicHggc29saWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtmYXJiZXRyZW5udW5nc0xpbmllKyI7XCIgYWxpZ249IitGZWxkMmxBbGlnbisiPiIrdmFsMSsiPC90ZD4iO319CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBicmVhazt9ZWxzZXsKICAgICAgICAgICAgICAgICBpZihjb3VudGVyJTQ9PTApICB7aHRtbE91dCA9IGh0bWxPdXQrIjx0ciBiZ2NvbG9yPVwiIitmYXJiZVVuZ2VyYWRlWmVpbGVuKyJcIj48dGQgYWxpZ249IitGZWxkMWxBbGlnbisiPiIrdmFsMCsiPC90ZD48dGQgc3R5bGU9XCIgYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcmJldHJlbm51bmdzTGluaWUrIjtcIiBhbGlnbj0iK0ZlbGQybEFsaWduKyI+Iit2YWwxKyI8L3RkPiI7IH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtpZihjb3VudGVyJTQ9PTEgKSAgeyBodG1sT3V0ID0gaHRtbE91dCsiPHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIiBzdHlsZT1cImNvbG9yOiIraHRtbEZhcmJGZWxkZXJzY2hyaWZ0MisiXCI+Iit2YWwwKyI8L3RkPjx0ZCAgYWxpZ249IitGZWxkMmxBbGlnbisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0eWxlPVwiYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiK2ZhcmJldHJlbm51bmdzTGluaWUrIjtjb2xvcjoiK2h0bWxGYXJiRmVsZGVyc2NocmlmdDIrIlwiPiIrdmFsMSsiPC90ZD4iO30gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICB7aWYoY291bnRlciU0PT0zKSAgeyBodG1sT3V0PSBodG1sT3V0KyI8dGQgYWxpZ249IitGZWxkMWxBbGlnbisiIHN0eWxlPVwiY29sb3I6IitodG1sRmFyYkZlbGRlcnNjaHJpZnQyKyJcIj4iK3ZhbDArIjwvdGQ+PHRkICBhbGlnbj0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtGZWxkMmxBbGlnbisiIHN0eWxlPVwiIGNvbG9yOiIraHRtbEZhcmJGZWxkZXJzY2hyaWZ0MisiXCI+Iit2YWwxKyI8L3RkPjwvdHI+Ijt9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgICAge2h0bWxPdXQgPSBodG1sT3V0ID0gaHRtbE91dCsiPHRkIGFsaWduPSIrRmVsZDFsQWxpZ24rIj4iK3ZhbDArIjwvdGQ+PHRkIHN0eWxlPVwiIGJvcmRlci1yaWdodDogIit0cmVubnVuZ3NMaW5pZSsicHggc29saWQgIisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJiZXRyZW5udW5nc0xpbmllKyI7XCIgYWxpZ249IitGZWxkMmxBbGlnbisiPiIrdmFsMSsiPC90ZD4iO319CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgYnJlYWs7ICAgfSAgICAgICAgICAgICAgICAgICAgIAoKICAgIH0gLy9zd2l0Y2ggZW5kZQoKfQoKZnVuY3Rpb24gdGFiZWxsZUZpbmlzaCgpIHsKCiAgICAgIHN3aXRjaCAobWVocmZhY2hUYWJlbGxlKSB7ICAKICAgICAgICBjYXNlIDE6ICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogICAgaWYoY291bnRlciUyPT0wKSAgaHRtbE91dCA9IGh0bWxPdXQucmVwbGFjZSgvPFwvdGQ+JC8sICc8L3RkPjx0ZD4mZW5zcDs8L3RkPjx0ZD4mZW5zcDs8L3RkPjwvdHI+Jyk7IAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMzogICAgaWYoY291bnRlciUzPT0yKSAgaHRtbE91dCA9IGh0bWxPdXQucmVwbGFjZSgvPFwvdGQ+JC8sICI8L3RkPjwvdHI+Iik7CiAgICAgICAgICAgICAgICAgICBpZihjb3VudGVyJTM9PTEpICBodG1sT3V0ID0gaHRtbE91dC5yZXBsYWNlKC88XC90ZD4kLywgICc8L3RkPjx0ZD50ZXN0JmVuc3A7PC90ZD48dGQ+JmVuc3A7PC90ZD48L3RyPicpOyAgICAgICAKICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ZXIlMz09MCkgIGh0bWxPdXQgPSBodG1sT3V0LnJlcGxhY2UoLzxcL3RkPiQvLCAiPC90ZD48dGQ+JmVuc3A7PC90ZD48dGQgc3R5bGU9XCIgYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiK2ZhcmJldHJlbm51bmdzTGluaWUrIlwiPiZlbnNwOzwvdGQ+PHRkPiZlbnNwOzwvdGQ+PHRkPiZlbnNwOzwvdGQ+PC90cj4iKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNDogICAgaWYoY291bnRlciU0PT0zKSAgaHRtbE91dCA9IGh0bWxPdXQucmVwbGFjZSgvPFwvdGQ+JC8sICI8L3RkPjwvdHI+Iik7CiAgICAgICAgICAgICAgICAgICBpZihjb3VudGVyJTQ9PTIpICBodG1sT3V0ID0gaHRtbE91dC5yZXBsYWNlKC88XC90ZD4kLywgIjwvdGQ+PHRkPiZlbnNwOzwvdGQ+PHRkPiZlbnNwOzwvdGQ+PC90cj4iKTsKICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ZXIlND09MSkgIGh0bWxPdXQgPSBodG1sT3V0LnJlcGxhY2UoLzxcL3RkPiQvLCAiPC90ZD48dGQ+JmVuc3A7PC90ZD48dGQgc3R5bGU9XCIgYm9yZGVyLXJpZ2h0OiAiK3RyZW5udW5nc0xpbmllKyJweCBzb2xpZCAiK2ZhcmJldHJlbm51bmdzTGluaWUrIlwiPiZlbnNwOzwvdGQ+PHRkPiZlbnNwOzwvdGQ+PHRkPiZlbnNwOzwvdGQ+PC90cj4iKTsgICAgCiAgICAgICAgICAgICAgICAgICBpZihjb3VudGVyJTQ9PTApICBodG1sT3V0ID0gaHRtbE91dC5yZXBsYWNlKC88XC90ZD4kLywgIjwvdGQ+PHRkPiZlbnNwOzwvdGQ+PHRkIHN0eWxlPVwiIGJvcmRlci1yaWdodDogIit0cmVubnVuZ3NMaW5pZSsicHggc29saWQgIitmYXJiZXRyZW5udW5nc0xpbmllKyJcIj4mZW5zcDs8L3RkPjx0ZD4mZW5zcDs8L3RkPjx0ZCBzdHlsZT1cIiBib3JkZXItcmlnaHQ6ICIrdHJlbm51bmdzTGluaWUrInB4IHNvbGlkICIrZmFyYmV0cmVubnVuZ3NMaW5pZSsiXCI+JmVuc3A7PC90ZD48dGQ+JmVuc3A7PC90ZD48dGQ+JmVuc3A7PC90ZD48L3RyPiIpOyAgIAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGJyZWFrOyB9CiAgICAgICAgIHZhciBodG1sVWViZXI9ICAgICI8cCBzdHlsZT1cImNvbG9yOiIraHRtbEZhcmJVYmVyKyI7IGZvbnQtZmFtaWx5OiIraHRtbFNjaHJpZnRhcnQrIjsgZm9udC1zaXplOiAiK2h0bWzDnGJlckZvbnRHcm9lc3NlKyI7IGZvbnQtd2VpZ2h0OiIraHRtbFNjaHJpZnRXZWl0ZSsgIlwiPiIraHRtbEZlbGRVZWJlcisiJmVuc3A7JmVuc3A7TGFzdCBVcGRhdGU6ICIrZm9ybWF0RGF0ZShnZXREYXRlT2JqZWN0KChwYXJzZUZsb2F0KChuZXcgRGF0ZSgpLmdldFRpbWUoKSkpKSksICJTUzptbTpzcyIpOysiPC9wPiI7IAogICAgICB2YXIgaHRtbFVudGVyPSAiPGRpdiAgc3R5bGU9XCJjb2xvcjoiK2h0bWxGYXJiVWJlcisiOyBmb250LWZhbWlseToiK2h0bWxTY2hyaWZ0YXJ0KyI7IGZvbnQtc2l6ZTogNzAlOyB0ZXh0LWFsaWduOiByaWdodDtcIiA+IitodG1sRmVsZFVlYmVyKyImZW5zcDsmZW5zcDtMYXN0IFVwZGF0ZTogIitmb3JtYXREYXRlKGdldERhdGVPYmplY3QoKHBhcnNlRmxvYXQoKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSkpKSwgIlNTOm1tOnNzIik7KyI8L2Rpdj4iCiAgICAgICAKICAgICAgIGlmICghaHRtbFNpZ25hdHVyZSkgaHRtbFVudGVyPSIiOwogICAgICAgICAvL0F1c2dhYmUgw7xiZXIgVklTIGh0bWwgd2lkZ2V0IC0gdGFiZWxsZSBpbiBkYXRlbnB1bmt0IHNjaHJlaWJlbiAtIGh0bWwgdGFiZWxsZSBvaG5lIGh0bWwgaGVhZGVyIHVuZCBib2R5CiAgICAgICAgICB2YXIgaHRtbE91dFZJUz0iIjsKICAgICAgICAvLyAgaHRtbFViZXJzY2hyaWZ0ID8gaHRtbE91dFZJUz1odG1sVWViZXIraHRtbFRhYlN0eWxlK2h0bWxUYWJVZWJlcitodG1sT3V0KyI8L3RhYmxlPiIgOiBodG1sT3V0VklTPWh0bWxUYWJTdHlsZStodG1sVGFiVWViZXIraHRtbE91dCsiPC90YWJsZT4iOwogICAgICAgICAgIGlmIChodG1sVWJlcnNjaHJpZnQpIAogICAgICAgICAgICAgICB7IHplbnRyaWVydCA/IGh0bWxPdXRWSVM9aHRtbFplbnRyaWVydCtodG1sVWViZXIraHRtbFRhYlN0eWxlK2h0bWxUYWJVZWJlcitodG1sT3V0KyI8L3RhYmxlPiIraHRtbFVudGVyKyBidXR0b25TY3JpcHQgOiBodG1sT3V0VklTPWh0bWxVZWJlcitodG1sVGFiU3R5bGUraHRtbFRhYlVlYmVyK2h0bWxPdXQrIjwvdGFibGU+IitodG1sVW50ZXIrIGJ1dHRvblNjcmlwdCA7CgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB6ZW50cmllcnQgPyAgaHRtbE91dFZJUz1odG1sWmVudHJpZXJ0K2h0bWxUYWJTdHlsZStodG1sVGFiVWViZXIraHRtbE91dCsiPC90YWJsZT4iK2h0bWxVbnRlcisgYnV0dG9uU2NyaXB0IDogIGh0bWxPdXRWSVM9aHRtbFRhYlN0eWxlK2h0bWxUYWJVZWJlcitodG1sT3V0KyI8L3RhYmxlPiIraHRtbFVudGVyKyBidXR0b25TY3JpcHQ7CgogICAgICAgICAgICAgICAgfQoKIC8vIGxvZygiYmluIHJhdXMgYXVzIHRhYmVsbGVCaW5kIik7CiAgICAgICAgICBpZiAoYnJhdWNoZUVpblZJU1dpZGdldCkgc2V0U3RhdGUoZHBWSVMsIGh0bWxPdXRWSVMgKTsKCnZhciBodG1sVW50ZXI9ICI8ZGl2ICBzdHlsZT1cImNvbG9yOiIraHRtbEZhcmJVYmVyKyI7IGZvbnQtZmFtaWx5OiIraHRtbFNjaHJpZnRhcnQrIjsgZm9udC1zaXplOiA4MCU7ICB0ZXh0LWFsaWduOiBjZW50ZXI7IFwiID4iK2h0bWxGZWxkVWViZXIrIiZlbnNwOyZlbnNwO0xhc3QgVXBkYXRlOiAiK2Zvcm1hdERhdGUoZ2V0RGF0ZU9iamVjdCgocGFyc2VGbG9hdCgobmV3IERhdGUoKS5nZXRUaW1lKCkpKSkpLCAiU1M6bW06c3MiKTsrIjwvZGl2PiIKCmlmICghaHRtbFNpZ25hdHVyZSkgaHRtbFVudGVyPSIiOwp2YXIgaHRtbEVuZD0iPC90YWJsZT4iK2h0bWxVbnRlcisiPC9kaXY+PC9ib2R5PiI7Ci8vbWl0IG9kZXIgb2huZSDDvGJlcnNjaHJpZnQgLSB6ZW50cmllcnQgb2RlciBsaW5rcwpodG1sVWJlcnNjaHJpZnQgPyBodG1sT3V0PWh0bWxTdGFydCtodG1sVWViZXIraHRtbFRhYlN0eWxlK2h0bWxUYWJVZWJlcitodG1sT3V0K2h0bWxFbmQgKyBidXR0b25TY3JpcHQ6IGh0bWxPdXQ9aHRtbFN0YXJ0K2h0bWxUYWJTdHlsZStodG1sVGFiVWViZXIraHRtbE91dCtodG1sRW5kKyBidXR0b25TY3JpcHQ7Ci8vbG9nKGh0bWxPdXQpOwoKCn0KCg==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="variables_set" id="q.Wv.Mg#DuGWoRHZKg6B" x="37" y="-262"> <field name="VAR" id="2GY!!q}efSWeJut|}*g?">tabelleClass</field> <value name="VALUE"> <block type="text" id="{3,N1cRWmzqXfkY)j#3~"> <field name="TEXT">ws_tabelle_lampen</field> </block> </value> <next> <block type="variables_set" id="^-ql]EH.:?,JtTZ*EJEQ"> <field name="VAR" id="zc}]z)HcoRF!Stu%L,1O">tabelleClassSpalte1</field> <value name="VALUE"> <block type="text" id="mBlW|GZOtd%B+B9FC3VY"> <field name="TEXT">ws_tabelle_lampen_name</field> </block> </value> <next> <block type="variables_set" id="CU#j/],[Z-liJ8Dki:IS"> <field name="VAR" id="$SQ+1P}hh0i}dM)i!l8Y">tabelleClassZeile1</field> <value name="VALUE"> <block type="text" id="|1*x$5KGnPCOpEw%g2_="> <field name="TEXT">ws_tabelle_zeile1</field> </block> </value> <next> <block type="variables_set" id="Bl?JT_QPz{MPE/.f*Y#V"> <field name="VAR" id="0$3)d1XO~32nM)5=R_{E">tabelleClassZeile2</field> <value name="VALUE"> <block type="text" id="F#^twe+8_N=7,p1v0Fwu"> <field name="TEXT">ws_tabelle_zeile2</field> </block> </value> <next> <block type="variables_set" id="6M0l#R(W?S~DV%3pIWF)"> <field name="VAR" id="@XCmXlbJ|}uQfG*Yj}BT">tabelleClassIcon</field> <value name="VALUE"> <block type="text" id="R=A,kBgJ`qPak{V0lUMk"> <field name="TEXT">ws_tabelle_icon</field> </block> </value> <next> <block type="variables_set" id="y5W4f8slFT+@4+/T?d=A"> <field name="VAR" id="[+@foafRz`m~/)FhPq0`">symbolSwitchOFF</field> <value name="VALUE"> <block type="text" id="UfmI|9f%z43Z%c6B.qz_"> <field name="TEXT">/vis.0/WS-Icons/Lampen/bulb-off.png</field> </block> </value> <next> <block type="variables_set" id="`(bYDvCf@Hp9C+ZCb:ab"> <field name="VAR" id="f`-]]z,}lIr/=i8^XP#h">symbolSwitchON</field> <value name="VALUE"> <block type="text" id="h4JJKGiY(hcotD(Yl3i%"> <field name="TEXT">/vis.0/WS-Icons/Lampen/bulb-on.png</field> </block> </value> <next> <block type="variables_set" id="o49kS_e$fcW9;rA(aT5$"> <field name="VAR" id="N8]TG{K`UGkh#8BWL|E)">symbolBreite</field> <value name="VALUE"> <block type="math_number" id="eKi.X5,+wui1bvHQvHHl"> <field name="NUM">35</field> </block> </value> <next> <block type="variables_set" id="Hv[c4#O+gucBahk)X.l*"> <field name="VAR" id="u,X-cS9u7+2)_f!kviiD">symbolHoehe</field> <value name="VALUE"> <block type="math_number" id="o,Sj,y{+**.O6wZ/M/KK"> <field name="NUM">35</field> </block> </value> <next> <block type="variables_set" id="S;%s,:Tt/KOgz{W,:lTc"> <field name="VAR" id="QZuXR_Vj:|w~;Y^wh/80">dpVIS</field> <value name="VALUE"> <block type="text" id="6sN0p?[P0:$-Jm]cFPVG"> <field name="TEXT">0_userdata.0.002_nurVIS.03_Tabellen.Tabelle-Lampen</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml> CSS-Klassen table.ws_tabelle_lampen { width: 100%; border-collapse: collapse; border-width: 1px; border-color: #ACAA20; border-style: solid; color: #C2C2C2; } table.ws_tabelle_lampen td { border-width: 1px; border-color: #ACAA20; border-style: solid; padding: 1px; } table.ws_tabelle_lampen .ws_tabelle_lampen_name { width: 85%; } table.ws_tabelle_lampen .ws_tabelle_zeile1 { background-color: #ff0000; } table.ws_tabelle_lampen .ws_tabelle_zeile2 { background-color: blue; } table.ws_tabelle_lampen .ws_tabelle_icon { width: 35px; height: 35px; }
  • Datenpunkt Attribut Wert ändern

    5
    0 Votes
    5 Posts
    350 Views
    paul53P
    @alj sagte in: Wie kann ich in Blockly jetzt die Daten setzen/verändern? Du meinst z.B. ein common-Attribut? Das ist aus gutem Grund Javascript-Programmierern vorbehalten.
  • JS automatisch beim Start des Dockers ausgeführt? Warum?

    11
    0 Votes
    11 Posts
    702 Views
    dslraserD
    @pipsen sagte in JS automatisch beim Start des Dockers ausgeführt? Warum?: Dafür hab ich leider keine wirklich gute Lösung, nur einen Workaround. Wenn ich einen Ablauf habe, der nur einen "true" trigger hat, aber false keinen Sinn macht, hab ichs das so gelöst: Du könntest einen Button dafür nehmen/erstellen und dann für den Trigger wurde aktualisiert, dann brauchst Du nicht wieder auf false zurück stellen. Das geht dann genau so mit der Routine in der Alexa App. Im iot ist es dann trotzdem ein SmartGerät als Switch.
  • Licht geht nach bewegungserkennung nicht mehr aus

    7
    1
    0 Votes
    7 Posts
    551 Views
    S
    @paul53 scheint echt daran gelegen zu haben. Hab’s aber nicht ganz verstanden. Also der gelbe Code wird doch ausgeführt wenn der Timer abgelaufen ist Und der Timer 2 stop sollte nur dazu dienen das er nicht ins unendliche läuft und alle 40 Sekunden versucht das auszuschalten. Aber egal, danke für deine Hilfe [image: 1611602626975-bildschirmfoto-2021-01-25-um-20.17.40.png]
  • Datenwerte umrechnen

    6
    0 Votes
    6 Posts
    258 Views
    A
    @robbi12 Du brauchst 2 separate Trigger: Bei Änderung Odometer, km-Stand umrechenen und in Deinem DP speichern und noch einmal für das selbe für Trip!
  • [gelöst] Datenpunkt erzeugen mit variabler ID?

    blockly javascript
    8
    1
    0 Votes
    8 Posts
    1k Views
    paul53P
    @newpicsel Man kann auch gleich dafür sorgen, dass die Datenpunkte unter "0_userdata.0" erstellt werden: createState('0_userdata.0.' + id, init, JSON.parse(common)); [image: 1611590868753-blockly_temp.jpg]
  • [gelöst]Türenabfrage Hilfe

    26
    1
    0 Votes
    26 Posts
    2k Views
    paul53P
    @kuessel25 sagte: verzögerung einzubauen falls ich die türe schließe und das licht zb noch 5min an bleiben soll? [image: 1611581858345-bild_2021-01-25_143736.png]
  • Nachkommastellen verschwunden?

    43
    7
    0 Votes
    43 Posts
    4k Views
    D
    @homoran okay, prima. Dann sage ich erstmal vielen Dank für die Hilfe! Auch an @paul53! Habe dann trotz allem auch hier wieder was lernen können und ich hoffe dem ein oder anderen hilft es ebenso weiter.
  • Licht über BWM und Fensterkontakt schalten

    blockly scenes
    6
    1
    0 Votes
    6 Posts
    531 Views
    C
    @mikemike Also "weitermachen" kann ich mir nicht vorstellen. Du könntest aber beim trigger am Fensterkontakt prüfen ob welchen Status das Licht hat und diesen Zwischenspeichern und nach Schließen des Fensters wieder aktivieren (Damit würeden dann aber deine Zeit wieder von vorne anfangen zu laufen). Zusätzlich wird es dann aber in sofern aufwendig, weil es eben einige Parameter zu beachten gibt. Was passiert bzw. soll passieren, wenn das Fenster erst nach deinem Aktivitätszeitfenster geschlossen wird? Zusätzliche hättest du dann für dein Licht 2 Trigger, nämlich einmel den BWM und zusätzlich noch den Fensterkontakt. Ob das dann im Ergebnis sinnvoll ist, kann ich nicht sagen.

340

Online

32.8k

Users

82.7k

Topics

1.3m

Posts