Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Skriptsammlung für den neuen ALEXA2.0 Adapter

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Skriptsammlung für den neuen ALEXA2.0 Adapter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
184 Beiträge 45 Kommentatoren 45.5k Aufrufe 19 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • sissiwupS Offline
    sissiwupS Offline
    sissiwup
    schrieb am zuletzt editiert von
    #102

    @Sven_hh:

    Guten Morgen an alle,

    Das was „dslraser“ angesprochen hat mit dem Neustart des Raspi und dem damit verbundenen ausführen der Scripte nervt mich bzw meine Frau auch <emoji seq="1f60c">😌</emoji> gibt es da generell eine Möglichkeit das zu unterbinden?

    Vg Sven `

    Hallo,

    Skripte sollten nie so geschrieben sein, das sie direkt beim Start (ausser Initialisierung, ON-Funktionen) etwas ausführen.

    Wie kann man das bei Alexa-Steuerung machen? So wie bei allen anderen Steuerungen auch:

    Man legt eine Hilfsvariable an, die dann von Alexa gesteuert wird und läßt das Skript darauf warten.

    Der Vorteil ist, man kann hier auch noch an und aus über eine Variable steuern.

    Variable anlegen:
    609_bildschirmfoto_2018-09-13_um_09.04.17.png
    609_bildschirmfoto_2018-09-13_um_09.04.02.png
    Das Skript reagiert auf jede Veränderung, nicht nur an und aus. Der Inhalt der Variablen ist mir hier egal:
    609_bildschirmfoto_2018-09-23_um_23.25.28.png
    Im Cloud-Adapter ein neues Gerät anlegen, Name hierbei egal, die heissen bei mir TriggerLetzterAnruf und mit der Variablen verbinden.

    Der Befehl wird so nicht verwendet.
    609_bildschirmfoto_2018-09-13_um_09.09.18.png
    Neue Geräte suchen lassen in Alexa.

    In der Alexa-App eine neue Routine anlegen, z.B.

    Alexa, Anrufliste und dann TriggerLetzterAnruf hinzufügen. Kann immer auf An gesetzt werden, da wir Aktualisierung horchen (s.o.)

    Wenn man die Werte an/aus z.B. verwenden möchte, dann anstelle TriggerLetzterAnruf einen

    vernünftigen Text verwenden, hier habe ich es nicht gemacht, da dann ja immer noch ein Attribut mit angegeben werden muss

    z.B. Alexa, TriggerLetzerAnruf "an". Deshalb habe ich die Routinen verwendet.

    MfG

    Sissi

    –-----------------------------------------

    1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


    1 Antwort Letzte Antwort
    0
    • dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #103

      genau so habe ich gestern angefangen alles bei mir umzustellen. (ich wußte es vorher auch nicht besser)

      Dann fährt auch der Staubsauger oder Rasenmäher (oder eben alle anderen geschalteten Geräte) nicht selbst los.

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        Belei
        schrieb am zuletzt editiert von
        #104

        @dslraser:

        Alexa, sind noch irgendwo Fenster auf…

        Ich habe meine Ansage/Abfrage über das Gewerk Fenster verändert und lasse mir nun Raumnamen mit geöffneten Fenstern ansagen.

        Das Gewerk für dieses Script heißt Fenster

        <u>Wenn bei Euch das Gewerk für Fensterkontakte anders heißt muss das im Script angepasst werden.</u>

        (mit der Ansage einzelner Fenster wurde bei mir das 250 Zeichen Limit von Alexa speak gesprengt.)

        Bei mehreren Echos/Alexas wird die Anfrage an dem Gerät beantwortet wo sie gestellt wurde. Ich habe hier mehrere Echos in mehreren Räumen im Blockly, zu sehen an den gelben Kommentaren.

        Script 1 zum Gewerk Fenster:

        -…........................... `

        An welchen Stellen muss ich das den genau ändern? Das Wort Fenster kommt ja ziemlich oft vor.

        Danke

        1 Antwort Letzte Antwort
        0
        • dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #105

          da![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 706729.jpg">https://uploads.tapatalk-cdn.com/20180922/2621ffd9f4619a5963c66ead45706729.jpg</link_text>" />

          1 Antwort Letzte Antwort
          0
          • B Offline
            B Offline
            Belei
            schrieb am zuletzt editiert von
            #106

            Danke für die schnelle Antwort, hab ich gefunden und geändert.

            Ich glaube aber irgentwas läuft bei mir noch nicht…

            Habe alle 3 Scripte erstellt und aktiviert.

            Unter Object steht bei Script 1 und 2: True aber bei Script 3 : False

            Und als ergebniss bei Objects/Fenster/Ansage hab ich alles doppelt:

            Fenster_Schlafzimmer_links, und Fenster_Schlafzimmer_links, und Fenster_Wohnzimmer_1, und Fenster_Wohnzimmer_1

            und es werden auch die doppelte Anzahl Fenster gezählt.

            Und im Log steht:
            3799_error.jpg

            1 Antwort Letzte Antwort
            0
            • dslraserD Offline
              dslraserD Offline
              dslraser
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #107

              Das Script zum entfernen doppelter Raumnamen muß unter global laufen, hast Du es da ?

              Und bitte anschließend den JS Adapter neu starten.

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                Belei
                schrieb am zuletzt editiert von
                #108

                Ja ist unter Global und ein neustart hat leider keine änderung gebracht.

                Script läuft jetzt ohne Fehler im Log durch aber ergebniss sind immer noch die doppelten Fenster.

                3799_objects.jpg

                1 Antwort Letzte Antwort
                0
                • dslraserD Offline
                  dslraserD Offline
                  dslraser
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #109

                  @Belei:

                  Ja ist unter Global und ein neustart hat leider keine änderung gebracht.

                  Script läuft jetzt ohne Fehler im Log durch aber ergebniss sind immer noch die doppelten Fenster.

                  filename="objects.JPG" index="0">~~ `

                  Im Screenshot kann man nicht alles sehen…(also rechts...)

                  Mach mal ein Fenster auf und zu und einen Screenshot wo alles drauf ist.

                  1 Antwort Letzte Antwort
                  0
                  • B Offline
                    B Offline
                    Belei
                    schrieb am zuletzt editiert von
                    #110

                    Hatte 1 Fenster zusätzlich geöffnet dann waren es 8 statt 6.

                    Screenshot:
                    3799_objects1.jpg

                    3799_scripte.jpg

                    1 Antwort Letzte Antwort
                    0
                    • dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #111

                      Hast Du nur das Script neu gestartet ?

                      (kommt mir so vor ?)

                      Starte bitte noch mal den JS Adapter neu, also Deine Instanz vom Adapter.

                      1 Antwort Letzte Antwort
                      0
                      • B Offline
                        B Offline
                        Belei
                        schrieb am zuletzt editiert von
                        #112

                        Doch hab schon alles neugestartet( script, js Adapter,Host und komplett den Pie)

                        3799_java.jpg

                        1 Antwort Letzte Antwort
                        0
                        • dslraserD Offline
                          dslraserD Offline
                          dslraser
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #113

                          Hm, dann weiß ich auch nicht was bei Dir schief läuft.

                          Bitte poste mal Dein Script hier in Code Tags. Dann schaue ich morgen (also heute Vormittag) mal drüber.

                          1 Antwort Letzte Antwort
                          0
                          • B Offline
                            B Offline
                            Belei
                            schrieb am zuletzt editiert von
                            #114

                            Super vielen Dank und Gute Nacht.

                            Scripts1

                            // Status Zahl Fenster
                            
                            var logging = true;
                            
                            var idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
                                idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
                                idText = 'javascript.0.Status.Fenster.Text',
                                idRaum = 'javascript.0.Status.Fenster.Raum',
                                idAnsage = 'javascript.0.Status.Fenster.Ansage';
                            
                            // Ab hier nix mehr ändern
                            createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Fenster
                                type: 'number',
                                name: 'Anzahl aller Fenster',
                                min: 0,
                                def: 0,
                                role: 'value'
                            });
                            createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                                type: 'number',
                                name: 'Anzahl der geoeffneten Fenster',
                                min: 0,
                                def: 0,
                                role: 'value'
                            });
                            createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                                type: 'string',
                                name: 'geoeffnete Fenster',
                                desc: 'Namen der geoeffneten Fenster',
                                def: ' ',
                                role: 'value'
                            });
                            createState(idAnsage, {
                                type: 'string',
                                name: 'geoeffnete Fenster (Ansage)',
                                desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
                                def: ' ',
                                role: 'value'
                            });
                            createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
                                type: 'string',
                                name: 'Räume mit geoeffneten Fenster',
                                desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
                                def: ' ',
                                role: 'value'
                            });
                            
                            var cacheSelectorState = $('channel[state.id=*.STATE](functions="Verschluss")'); // Gewerk Fenster
                            
                            function checkDevices(obj) {
                                // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                                var anzahlFensterAuf = 0;
                                var anzahlFenster = 0;
                                var textFensterAuf = [];
                                var textRaum = [];
                                if (logging) {
                                    log('++++++ Fenster Anzahl ++++ ');
                                    log('#### SCHALTER ##### ');
                                }
                                cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                                    var obj = getObject(id);
                                    var name = getObject(id).common.name;
                                    var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                    var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                    var raumname = getObject(id, "rooms");
                            
                                    if (logging) {
                                        log('-------');
                                        log('Kanal: ' + name);
                                        log('Status: ' + status);
                                    }
                                    if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
                                        ++anzahlFensterAuf;
                                        textFensterAuf.push(devicename); // Zu Array hinzufügen
                                        textRaum.push(raumname.enumNames); //
                                    }
                                    ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                                    });
                            
                            textRaum = deleteDuplicates(textRaum); 
                            
                                // Array mit Fensternamen sortieren
                                textFensterAuf.sort();
                                textRaum.sort();
                                // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
                                if (logging) log("Text: " + textFensterAuf);
                                if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
                                // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                setState(idText, textFensterAuf.join(', und ')); // Schreibt die aktuelle Namen der geoeffneten Fenster
                                setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
                                setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                                // setState(idRaum, textRaum.join(',
                            ')); // Räume, in denen Fenster geoeffnet sind
                                setState(idRaum, textRaum.join(', und ')); // Räume, in denen Fenster geoeffnet sind
                            }
                            
                            // Trigger
                            cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Fenster
                                if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                checkDevices();
                            });
                            
                            function main() {
                                setTimeout(function() {
                                    if (logging) log('Auslöser Skriptstart');
                                    checkDevices();
                                }, 2000);
                            }
                            
                            main(); // Skriptstart-Auslöser
                            
                            // Aufbereitung für Ansage
                            function strip_tags(data) {
                                var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                                return (rueckgabe);
                            }
                            
                            on(idText, function(obj) {
                                var text = obj.state.val;
                                text = (getState(idAnzahl).val > 0) ? '' + strip_tags(text) : 'Alle Fenster sind ausgeschaltet';
                                setState(idAnsage, text);
                            });
                            

                            Script2 (global)

                            // Funktion: Doppelte Einträge aus Array entfernen (für Räume) www.okco.de (c) codemaster
                            function deleteDuplicates(arr) { 
                                var temp = {}; 
                                for (var i = 0; i < arr.length; i++) temp[arr[i]] = true; 
                                var r = []; 
                                for (var k in temp) r.push(k); 
                                return r;
                            }
                            

                            Script3 (import in Blocky) und die Echos noch nicht angepasst

                            var Ausgabetext, timeout, timeout2;
                            
                            setState("alexa2.0.History.#trigger"/*Trigger/Rescan*/, true);
                            if (getState("javascript.0.Status.Fenster.Anzahl_auf").val == 0) {
                              Ausgabetext = String('aktuell sind') + String(getState("javascript.0.Status.Fenster.Ansage").val);
                              timeout = setTimeout(function () {
                                // Wohnzimmer
                                if (getState("alexa2.0.History.name").val == 'Wohnzimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Küche
                                if (getState("alexa2.0.History.name").val == 'Küche') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Badezimmer
                                if (getState("alexa2.0.History.name").val == 'Badezimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Gästezimmer
                                if (getState("alexa2.0.History.name").val == 'Gästezimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Flur
                                if (getState("alexa2.0.History.name").val == 'Flur') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Schlafzimmer
                                if (getState("alexa2.0.History.name").val == 'Schlafzimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Keller-Flur
                                if (getState("alexa2.0.History.name").val == 'Keller-Flur') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Werkstatt
                                if (getState("alexa2.0.History.name").val == 'Werkstatt') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                              }, 500);
                            }
                            if (getState("javascript.0.Status.Fenster.Anzahl_auf").val != 0) {
                              Ausgabetext = ['Im Moment sind im ',getState("javascript.0.Status.Fenster.Raum").val,'geöffnete Fenster'].join('');
                              timeout2 = setTimeout(function () {
                                // Wohnzimmer
                                if (getState("alexa2.0.History.name").val == 'Wohnzimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Küche
                                if (getState("alexa2.0.History.name").val == 'Küche') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Badezimmer
                                if (getState("alexa2.0.History.name").val == 'Badezimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Gästezimmer
                                if (getState("alexa2.0.History.name").val == 'Gästezimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Flur
                                if (getState("alexa2.0.History.name").val == 'Flur') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Schlafzimmer
                                if (getState("alexa2.0.History.name").val == 'Schlafzimmer') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                                // Keller-Flur
                                if (getState("alexa2.0.History.name").val == 'Keller-Flur') {
                                  setState("alexa2.0.Echo-Devices.xxx.speak", Ausgabetext);
                                }
                                // Werkstatt
                                if (getState("alexa2.0.History.name").val == 'Werkstatt') {
                                  setState("alexa2.0.Echo-Devices.xxx.Commands.speak", Ausgabetext);
                                }
                              }, 500);
                            }
                            
                            //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU0MEo3JTQwb2IlMkZyc1I5T0NZTiUyQiFoSTclMjIlMjB4JTNEJTIyLTUxMyUyMiUyMHklM0QlMjItMTA2MyUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuSGlzdG9yeS4lMjN0cmlnZ2VyJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyb0klNURLUy0lMjM3JTdCJTYwTGgoVyUyMyU1RE1CN0MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyJTdCX0pUJTdDM01wdip0U09WV0QzUHo2JTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyRCUzRiUyQypRR0JCd2F1Q20lMkNRdGUlM0RRLSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMiU1RGlyTHdMV0d1bCU1RC54JTdCbSU2MC4lMjMuJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLlN0YXR1cy5GZW5zdGVyLkFuemFobF9hdWYlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMjVMTDZ4aTRGXzclN0QtYUVpJTVFakhZJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyNVZGZkhZVEIhUzdBJTVFQSolM0ZTaWNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjI0JTNGayU1QjByZUNSbi5tamt4SGc0MX4lMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMiUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMjc1WilXbiU2MFlGJTQwJTNCMzh+YklNJTNCcEElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFYWt0dWVsbCUyMHNpbmQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJWaCUyRjhyeFUlNUR5RCEzbVQlN0QweSU1QmVDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLlN0YXR1cy5GZW5zdGVyLkFuc2FnZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZW91dHNfc2V0dGltZW91dCUyMiUyMGlkJTNEJTIyeEFfTUolNUUlNDAlM0RBQiUzRC1XdERUZSgzJTdEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRXRpbWVvdXQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZJTIyJTNFNTAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJzMzBiMiU3QmZTUSUzQWEwdUMzJTYwJTJCUVdVJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVdvaG56aW1tZXIlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIybChFMjQlM0RxJTVEbCU1RGIlMkNHSkRqNGRTaiUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMk1Ld0puMEMhTyU1RHhjIX4uOSU3Q0IlNjAqJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIycC1TSGJKNURtd3I2ZGp4ZzJvaEglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyJTNGJTdEQSUzQjgoSXlNRiUyNUYlNDAodCU1REtjfiUyQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VXb2huemltbWVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIpTSU1RWpMY1ohaENwaiUyQ1glM0QlN0ItJTYwblYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkVjaG8tRGV2aWNlcy54eHguQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJwKWJOT2RjWkZWb3ExZSU1RU01Vi0uJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJBcyUyQ2RHKHhPJTVCQiU0MHdJWWN5QUclM0ZoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUslQzMlQkNjaGUlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyd3JILSU3RFAoODRtbjdZJTJGcmc4QSU1Qi4lMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJrZy5RS0I3NTFOYVMlMjNJaGsxVmxnJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIycW5UejFPZTMxc3ElM0FOWGptYnhJSiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjIzJTNEVy4lM0ZjOEJaTiUyQlFyR1g0eEwlN0RoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUslQzMlQkNjaGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU3RCUzRmRLJTJCJTJCKlYuN0pRY2pHJTdCM3VoQiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5Db21tYW5kcy5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMnFIb04lNUR+dTFGSSU0MGlEUXMqMkMydiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyX2FteHo2QiUzRDlGJTdEXzJ1RUdzSyU3RCU2MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VCYWRlemltbWVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMi5uN0p0R3dESkRHZmFleWwhOCpCJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIySS0lNDA5JTI1JTdCTmchJTI1JTdEOXJFJTIzSUVTYyUzQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMmMlM0ZkU2VHIWZ1JTVEVzhVTyU0MCUzRkQ0STMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyTWl2R1YlNDAqa3QpM3JZOUNPS3BLQSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VCYWRlemltbWVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJ6VHdYY35yOExkdDB1LTVUTmNWbiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5Db21tYW5kcy5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMipYKn5xUUczJTVEfiU1Qk5DJTdCV01NbmRXJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJDSk5HNTklNUIlM0ZDSiU3Q1UtJTNEQmYlNURjKXolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFRyVDMyVBNHN0ZXppbW1lciUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJPQyU1RGsxXyU3RGlEbEV4UVBWYyUzRChpYiUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMk9CSVh3NmhKJTQwJTVEMlhyJTYwSEJJejVoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyJTNEeH41VylucyUyRlZWJTNCYyU3Q1JGcVFjRSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJJeFclM0FocGxJdkRRbTFheCUzRCU0MFglMkJNJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUclQzMlQTRzdGV6aW1tZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmclMkIyJTVEd3ZzcmhSOHZ4djdjJTJDa0pfJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMueHh4LkNvbW1hbmRzLnNwZWFrJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyNXE2JTJGen5TJTYwMERlSjZzWXJXaGoxJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJDNiUyQ3dTaCUzRkJFWiUyQ0clM0FCOVRsJTQwJTIzdyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VGbHVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMmwlMkZnJTQwVU53NnB6ZVE2XzY5OFIlM0EtJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTNEWilENnFyQ3pZMm9VJTJGZlZWOTNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyU3RzYUcyQ0IlM0IqNWY1d0l2SCUyQ2tFJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuSGlzdG9yeS5uYW1lJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMjdOJTNCeXk3Y0MlM0R0RSU2MCU3RE1ZT0ZmRjYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFRmx1ciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyNSUyMy1WODg3UWhDQ1NBekklMkJ0d29rJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMueHh4LkNvbW1hbmRzLnNwZWFrJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyTnVyRSUzQSUyNUtfeiElNUVWbGooZm41cUklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlM0VBdXNnYWJldGV4dCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMnFLRDNiRHhIViUzQk5CdHVGRnMlN0NlLiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VTY2hsYWZ6aW1tZXIlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyaU16KEglN0RjMSUyM05PJTQwS1ZObmhubFElMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJ6JTYwdnl5QVd2YVlkeHQ4WVp0JTJDME8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJtRUYpbmFxd0olMjN4TENlMU5lS08lM0ElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyRjclM0ElM0FmYjRjb2tlSkpEJTNBZmt+cFYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFU2NobGFmemltbWVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIlN0IycyUyRmglMkZ4cGttJTVERiUyQjFpay1mNG0lMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkVjaG8tRGV2aWNlcy54eHguQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJmdDdVZjMzJTQwSUIxenVfeGRUQXhuJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJ3SVlaMWJMT1NqRmklM0ROeFQ5V2NNJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUtlbGxlci1GbHVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMiUyNUVFSyhwS0olMjVsR28pMzJjUjdxRiUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMjdNYihhbk0lNURrUjkwNTYpZ3hxblclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJ4Rn5iNyU2MCU3QmZWJTdDJTdDNG4lN0R6Qi0lN0QudSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJWSCU1RTJDSnNQR09kITZoR29xZEs0JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUtlbGxlci1GbHVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJGXyU1QnhlelhleXJ+KihBJTNEcS5ZRkolMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkVjaG8tRGV2aWNlcy54eHguQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJTanRySUolM0ZnQTIwb2o4OE4lN0NzcmIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlM0VBdXNnYWJldGV4dCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMkUlMjNEMWElMkYlMkNyY0glNjBkbTMlM0ZOeCU1RSUzQXElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFV2Vya3N0YXR0JTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMiUzRHN+ZCUzQS1XSWcxJTIzVEUlNjAlNUV6ZjklNUI0JTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyKiUzQVglMjVWTSU1RSUyQjJNb1lsLSUzQXUhV0slNjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjI2Zm5SV3lLMCUzQlAoLnglM0JIJTdCKTIyVCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJTJTNBJTIza2VSRU53MWdHakhXTFVEIS0lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFV2Vya3N0YXR0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJxbCU0MCU2MDQoUE50alNfQU0wYkVxRCUyQiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5Db21tYW5kcy5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMlAlNUJvak1xUURWUm91dSUyM3ZOfiU3QiU1QiUyNSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJOJTJCRiUyQiUyRmZZYkRlTVpMJTIzKEhhRW8lN0MlMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJUJTJCKW5aKCU1RHc0TGdEWSUyRiU3QyUzRnA1NmclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRU5FUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyayUzREJYZEV1UW83JTNGTW8lMjViZGZkbmclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VqYXZhc2NyaXB0LjAuU3RhdHVzLkZlbnN0ZXIuQW56YWhsX2F1ZiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyai1ibEd5QyUzQlY0alRMSEt2aWtYciUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMm1rJTJDLS1uJTI1OHglN0RlMVdzaE9DQmMuJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjJFdzNWVHc3cUclN0NGeCUzQSU3RHZxM2hJUiUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIzJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyTG8wJTQwckdzTiU1RWd0MWlaJTIzJTQwfkElMkY3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUltJTIwTW9tZW50JTIwc2luZCUyMGltJTIwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyaSUzRiU1QlplJTJDVzIzJTdDTSU2MF9TNSU0MGQlM0YlM0JxJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLlN0YXR1cy5GZW5zdGVyLlJhdW0lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQyJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyTnFFb2I5JTNCOFVUMTF3VCU2MGRDUWklMjMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFZ2UlQzMlQjZmZm5ldGUlMjBGZW5zdGVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lb3V0c19zZXR0aW1lb3V0JTIyJTIwaWQlM0QlMjIlNUVjJTJDYlEpJTVFISU1QihIR3oyUXJXdyUyRnUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdGltZW91dDIlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZJTIyJTNFNTAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIzZTUlNUJjUi1sUTJQJTQwZzMtViU1RFQuKiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VXb2huemltbWVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMkthdXhXVUVKQVAyc3ApRCUyNUNkbTklMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJGNE1LKGZiWThXVSU1QnlXTyklNDBafk8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJPZSU0MClWTSUyQjFZJTYwXzFZSm4lM0Y2eHlsJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuSGlzdG9yeS5uYW1lJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMlE4JTQwVDhxJTdDUCU1REQqV1I2YUclMjMqajAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFV29obnppbW1lciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyciU3Q3clM0ZHS0YyUjhBJTI1V1NYJTQwQVAlNUIlN0MlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkVjaG8tRGV2aWNlcy54eHguQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJIVGNLZDJWOUYpJTNEayUzQUFlNG1TJTdERiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyTGclNDAlM0FoYS1hMnglMkMwcmZoQy4lNURfJTNEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUslQzMlQkNjaGUlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyRFRXRDNLS19mMkNtb3dXbCU3RER3JTJCJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyKnJ+ayUyNVBvIXZ6VVFIeWJVJTYwKXN2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyMjg1TCUyQ3FUJTQwZVdrWlMoJTIzaGdYbmwlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIydyFIdE0lMkNuYiUyQ0tJMWFxYU9lSTM2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUslQzMlQkNjaGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMl9IJTdCJTI1azRiJTdDc2ohJTNBUCU1RXJEdSUyNSU3RCUzQiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5Db21tYW5kcy5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMn41MUI4KDMlN0JzdHExQnBSMUp+cCUyNSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyMFklM0I4YyUzRFJHJTI1ZiUzQnFxUDJ5eWpibSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VCYWRlemltbWVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMkpTJTYwemZwcVp+TmlCaFd4YV8lM0JnSCUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMi03QVZXcHNhNDJMYWxKc2VxenYlN0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJjbTZzTXIlN0MqcENzeHglN0I5dUNNcm0lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyNyUyQnN6eUliQkJQIWR0Q35EMWgpTyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VCYWRlemltbWVyJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJIZyUzQkRxJTI1Z0pFWGclN0JTTFYlM0J0NiU3QjYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkVjaG8tRGV2aWNlcy54eHguQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjIqbFglN0JaTSU2MFZCVGMlN0RBJTYwMSFnTTlIJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIlM0FLYSUyQlcqdXdJViUzQWgocGp6cV9oJTJDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUclQzMlQTRzdGV6aW1tZXIlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyVWclMjM4bUgxRkkhaWNLJTJGKVFFWWpRJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyKSU0MDc2cTRNWiUyRiU3RG9DSF9tTEtXTzQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJpSS1Ia3ZVWEZDJTQwJTNCJTNCXyUyQiU1QlRjUlAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5IaXN0b3J5Lm5hbWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyJTIzJTNBJTNERHAlNUREdDFnaWwqV09QaiUyRmglN0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFRyVDMyVBNHN0ZXppbW1lciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyeW9IbnolNUVXRzU4JTNEJTJCWCklN0NTLXU4JTIzJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMueHh4LkNvbW1hbmRzLnNwZWFrJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyWThMSENQUEguLk9uRUpOJTVFc2pGUSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyITQwTW1ndSlUMEEzLXFQYUY5eU8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFRmx1ciUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJiJTJGU2dFMVlqVCUyQ2xkJTVCbm4lN0QlN0IlMjVSSCUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMmMpU2pXJTNCamVYJTdDJTIzRmglMkZDaGElMkMlMkMzJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIySDklM0QlN0RGJTJGIVhLWTlVQm5uYnJ+RCUyRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJyJTVFRWdJIUZRJTNCLURQV0ZGX0QhQzElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFRmx1ciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyJTNCN2p5b3U5ZiUyQlYoJTYwNSoqJTNCQ0RWJTNGJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMueHh4LkNvbW1hbmRzLnNwZWFrJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyUV9rOWtTSlZOUDVlJTI1YTgoKHhoZSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRUF1c2dhYmV0ZXh0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyJTYwJTNGazhZTCU1QiUzQiFtRTUlM0ItTmRkVlRjJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVNjaGxhZnppbW1lciUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJ6eWVBbjN3TWMhJTNCaFlaRGhLKWh5JTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyYnElM0RCLXJHJTdEc3clN0Q3Z0cxJTdCJTJGWS0uJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyWnIlNjBTLWw4RSElN0Q4LjQlN0IlMkNxTTkqaSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ0ZSUyQmdTd2hXaVZSNCUyQ3NjWVYlMjVjYSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VTY2hsYWZ6aW1tZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmdySDYlMjN3aFkxLk4tcSU1QnBMTTVYLiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5Db21tYW5kcy5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiU1QmhNZiU1RSUzQnAlN0MlMkNDYVpWeWQlMkJxVG1+JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJOMyU0MEsyQlJDN0M1TjlkYUJ5Y3ZfJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUtlbGxlci1GbHVyJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMkhQeE9keHM0TiUyNWoydW1XVGZVTkclMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJEWCUzRGtDUSUyRiUyQ0U2a3FZc1ElN0QlMkYlM0QlNUJlJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyWGlvblBSYTkxblExNk5LKE45JTJCLiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsZXhhMi4wLkhpc3RvcnkubmFtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJaQiU3RG1FV0VSS1olMkZmYn4qTHdkMUElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFS2VsbGVyLUZsdXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmtQTEclMkI5ZGVjZyppR1VtODclNjAtMiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLnh4eC5zcGVhayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiU3RC5JJTJCNy1Gcnc0ZmpqMS1OJTVCQWVQJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJDfkw5dyU1QkdfYi5IYiolMjU3b1R+YUUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFV2Vya3N0YXR0JTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMiU2MCUzQm90JTdDaSUzQSopSSU3Q0V3VyU0MHpTJTJDQjIlMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJIIWxkU1l0UiU3Q0MlN0MlNUVWY3F4UyUzQlh0JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIySSlvNkEyVTIoJTJDQTdlJTdDNC44bG8uJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuSGlzdG9yeS5uYW1lJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMnM0b3dTLld3KSU3QjZheWVrJTNGVnpGYiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VXZXJrc3RhdHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMjVHaCphVmwteChJUENuRiU0MDUlMkM1JTJGJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VhbGV4YTIuMC5FY2hvLURldmljZXMueHh4LkNvbW1hbmRzLnNwZWFrJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyZG1PJTdCeVIlM0IlN0NnJTQwKHJaSkUlMkNIWDRrJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFQXVzZ2FiZXRleHQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
                            
                            1 Antwort Letzte Antwort
                            0
                            • dslraserD Offline
                              dslraserD Offline
                              dslraser
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #115

                              Hier nochmal das Script was ich einsetze, abgeändert auf Verschluss.

                              ! ````
                              // Status Fenster. Das Script zählt alle Fenster im Gewerk Verschluss mit der id=*.STATE
                              ! var logging = true;
                              ! var
                              idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
                              idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
                              idText = 'javascript.0.Status.Fenster.Text',
                              idRaum = 'javascript.0.Status.Fenster.Raum',
                              idAnsage = 'javascript.0.Status.Fenster.Ansage';
                              ! // Ab hier nix mehr ändern
                              createState(idAnzahl, { // Anzahl der vorhandenen Fenster
                              type: 'number',
                              name: 'Anzahl aller Fenster',
                              min: 0,
                              def: 0,
                              role: 'value'
                              });
                              createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind
                              type: 'number',
                              name: 'Anzahl der geoeffneten Fenster',
                              min: 0,
                              def: 0,
                              role: 'value'
                              });
                              createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen
                              type: 'string',
                              name: 'geoeffnete Fenster',
                              desc: 'Namen der geoeffneten Fenster',
                              def: ' ',
                              role: 'value'
                              });
                              createState(idAnsage, {
                              type: 'string',
                              name: 'geoeffnete Fenster (Ansage)',
                              desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
                              def: ' ',
                              role: 'value'
                              });
                              createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
                              type: 'string',
                              name: 'Räume mit geoeffneten Fenster',
                              desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
                              def: ' ',
                              role: 'value'
                              });
                              ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Verschluss
                              ! function checkDevices(obj) {
                              // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Verschluss auf 0
                              var anzahlFensterAuf = 0;
                              var anzahlFenster = 0;
                              var textFensterAuf = [];
                              var textRaum = [];
                              if (logging) {
                              log('++++++ Fenster Anzahl ++++ ');
                              log('#### SCHALTER ##### ');
                              }
                              cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Verschluss
                              var obj = getObject(id);
                              var name = getObject(id).common.name;
                              var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                              var devicename = name.substring(0, name.indexOf(".STATE")); //.STATE aus Text entfernen
                              var raumname = getObject(id, "rooms");
                              ! if (logging) {
                              log('-------');
                              log('Kanal: ' + name);
                              log('Status: ' + status);
                              }
                              if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
                              ++anzahlFensterAuf;
                              textFensterAuf.push(devicename); // Zu Array hinzufügen
                              textRaum.push(raumname.enumNames); //
                              }
                              ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                              });

                              textRaum = deleteDuplicates(textRaum); 
                              
                              // Array mit Fensternamen sortieren
                              textFensterAuf.sort();
                              textRaum.sort();
                              // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
                              if (logging) log("Text: " + textFensterAuf);
                              if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
                              // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                              setState(idText, textFensterAuf.join(',\nund\n')); // Schreibt die aktuelle Namen der geoeffneten Fenster
                              setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
                              setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Verschluss
                              // setState(idRaum, textRaum.join(',
                              

                              ')); // Räume, in denen Fenster geoeffnet sind
                              setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Fenster geoeffnet sind
                              }

                              ! // Trigger
                              cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Verschluss
                              if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                              checkDevices();
                              });
                              ! function main() {
                              setTimeout(function() {
                              if (logging) log('Auslöser Skriptstart');
                              checkDevices();
                              }, 2000);
                              }
                              ! main(); // Skriptstart-Auslöser
                              ! // Aufbereitung für Ansage
                              function strip_tags(data) {
                              var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                              return (rueckgabe);
                              }
                              ! on(idText, function(obj) {
                              var text = obj.state.val;
                              text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
                              setState(idAnsage, text);
                              });

                              
                              Halte mal Dein Script an und lösche die erstellten Datenpunkte. Dann das Script hier einfügen und starten. Sollte wieder bzw. immer noch was doppelt sein dann starte noch einmal den JS Adapter neu.
                              
                               ![3822_js-adapter.jpg](/assets/uploads/files/3822_js-adapter.jpg) 
                              
                              Wenn es dann immer noch nicht läuft, zeige mal Deine Aufzählungen
                              
                               ![3822_funktion.jpg](/assets/uploads/files/3822_funktion.jpg) 
                              1 Antwort Letzte Antwort
                              0
                              • B Offline
                                B Offline
                                Belei
                                schrieb am zuletzt editiert von
                                #116

                                Funktioniert leider immer noch nicht…

                                Habe den Script gestopt ersetzt, die Datenpunkte Fenste gelöscht und js neugestartet.

                                Punkte wurden wieder neu angelegt.

                                Sollte denn bei Script2 auch true kommen?

                                Log von script1

                                12:06:55.830	[info]	javascript.0 Start javascript script.js.common.Skript1
                                12:06:55.830	[info]	javascript.0 script.js.common.Skript1: registered 27 subscriptions and 0 schedules
                                12:06:57.021	[info]	javascript.0 script.js.common.Skript1: Auslöser Skriptstart
                                12:06:57.022	[info]	javascript.0 script.js.common.Skript1: ++++++ Fenster Anzahl ++++
                                12:06:57.022	[info]	javascript.0 script.js.common.Skript1: #### SCHALTER #####
                                12:06:57.023	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.023	[info]	javascript.0 script.js.common.Skript1: Kanal: Test_Kontakt_oben_benni:1.STATE
                                12:06:57.024	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.025	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.026	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_2_links.STATE
                                12:06:57.026	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.027	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.028	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_1.STATE
                                12:06:57.028	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.029	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.030	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_2_rechts.STATE
                                12:06:57.030	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.031	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.031	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Schlafzimmer_rechts.STATE
                                12:06:57.032	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.033	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.034	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Schlafzimmer_links.STATE
                                12:06:57.034	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.035	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.035	[info]	javascript.0 script.js.common.Skript1: Kanal: Tür_Wohnzimmer_Wintergarten.STATE
                                12:06:57.036	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.037	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.037	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Hwr:1.STATE
                                12:06:57.040	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.041	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.042	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Kinderzimmer.STATE
                                12:06:57.043	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.044	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.044	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_4_links:1.STATE
                                12:06:57.045	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.045	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.046	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Badezimmer.STATE
                                12:06:57.047	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.047	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.048	[info]	javascript.0 script.js.common.Skript1: Kanal: Test_Kontakt_oben_benni:1.STATE
                                12:06:57.048	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.049	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.049	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_2_links.STATE
                                12:06:57.050	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.050	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.051	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_1.STATE
                                12:06:57.051	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.052	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.052	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_2_rechts.STATE
                                12:06:57.053	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.053	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.054	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Schlafzimmer_rechts.STATE
                                12:06:57.054	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.055	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.056	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Schlafzimmer_links.STATE
                                12:06:57.056	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.056	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.057	[info]	javascript.0 script.js.common.Skript1: Kanal: Tür_Wohnzimmer_Wintergarten.STATE
                                12:06:57.057	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.058	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.058	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Hwr:1.STATE
                                12:06:57.059	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.059	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.059	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Kinderzimmer.STATE
                                12:06:57.060	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.060	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.060	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Wohnzimmer_4_links:1.STATE
                                12:06:57.061	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.061	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.061	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Badezimmer.STATE
                                12:06:57.062	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.067	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.068	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Flur:1.STATE
                                12:06:57.069	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.071	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.071	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Flur:1.STATE
                                12:06:57.072	[info]	javascript.0 script.js.common.Skript1: Status: false
                                12:06:57.072	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.075	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Kueche:1.STATE
                                12:06:57.076	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.076	[info]	javascript.0 script.js.common.Skript1: -------
                                12:06:57.076	[info]	javascript.0 script.js.common.Skript1: Kanal: Fenster_Kueche:1.STATE
                                12:06:57.077	[info]	javascript.0 script.js.common.Skript1: Status: true
                                12:06:57.078	[info]	javascript.0 script.js.common.Skript1: Text: Fenster_Badezimmer,Fenster_Badezimmer,Fenster_Hwr:1,Fenster_Hwr:1,Fenster_Kueche:1,Fenster_Kueche:1,Fenster_Schlafzimmer_links,Fenster_Schlafzimmer_links,Fenster_Wohnzimmer_2_rechts,Fenster_Wohnzimmer_2_rechts
                                12:06:57.078	[info]	javascript.0 script.js.common.Skript1: Anzahl Fenster: 26 # davon Fenster auf: 10
                                

                                3799_dingens.jpg

                                1 Antwort Letzte Antwort
                                0
                                • dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #117

                                  Also bei Script2 steht bei mir auch false(spielt also keine Rolle)

                                  Die 26 Fenster scheinen ja zu stimmen, oder ?

                                  Nur warum die Fenster im Log immer zwei Mal erscheinen verstehe ich auch nicht ?

                                  Das einzige was mir jetzt noch einfällt wäre mal in den Aufzählungen die Funktion Verschluss zu löschen

                                  und Sie dann über einen Neustart des Rega Adapter neu einzulesen. Und dann noch mal den JS Aapter und das Script neu zu starten.

                                  (die Räume in den Aufzählungen werden ja wohl nicht doppelt da sein….)

                                  Vielleicht kann noch Jemand anderes was dazu sagen...

                                  1 Antwort Letzte Antwort
                                  0
                                  • B Offline
                                    B Offline
                                    Belei
                                    schrieb am zuletzt editiert von
                                    #118

                                    DANKE :D

                                    Ich glaub jetzt machts klick….

                                    Es sind eigentlich nur 13 Fenster, auch in der Aufzählung sind ja "alle" Fenster doppelt drin mit gleichem Namen?!!

                                    EDIT:

                                    Sie wurden doppelt eingelesen 1x über HM-RPC.0 und 1x über HM-RPC.2

                                    Hab sie jetzt mal einzeln gelöscht und jetzt stimmt auch die anzeige…..

                                    Jetzt an Alexa ran, da brauch ich bestimmt auch noch Hilfe :?

                                    1 Antwort Letzte Antwort
                                    0
                                    • B Offline
                                      B Offline
                                      Belei
                                      schrieb am zuletzt editiert von
                                      #119

                                      Sooom Alexa spricht jetzt auch mit mir aber sie sagt:

                                      ,undBadezimmer,undHauswirtschaftsraum,undKüche,undWohnzimmer (ist auch der text unterRäume mit geöffneten Fenstern)

                                      als es kommt zu anfang gleich ein und.

                                      1 Antwort Letzte Antwort
                                      0
                                      • dslraserD Offline
                                        dslraserD Offline
                                        dslraser
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #120

                                        Bei mir steht immer ein Raum zuerst, aber das ', \und\n', kannst Du ändern (ich habe das nur, damit Alexa nicht alles runter rattert und für mein Telegramm Menü) Das Komma lässt Alexa mit kurzer Pause sprechen.

                                        Dir sollte ein Komma reichen. ' ,' reichen

                                        Ändern kannst Du es in Zeile 92 und 96 (wie im Screenshot)

                                        3822_bildschirmfoto_2018-09-23_um_15.39.27.png

                                        3822_bildschirmfoto_2018-09-23_um_15.40.48.png

                                        1 Antwort Letzte Antwort
                                        0
                                        • B Offline
                                          B Offline
                                          Belei
                                          schrieb am zuletzt editiert von
                                          #121

                                          Ok jetzt gehts auch ohne Änderung, da war bei mir noch was in der Raum Zuordnung falsch. Der Badezimmerkontakt hatte kein Raum, daher hat er mit

                                          ("leer" und) angefangen.

                                          Super Vielen Dank an dich DSLRaser :!:

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          779

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe