Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Skriptsammlung für den neuen ALEXA2.0 Adapter

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Skriptsammlung für den neuen ALEXA2.0 Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Belei last edited by

      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 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active last edited by

        @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 Reply Last reply Reply Quote 0
        • B
          Belei last edited by

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

          Screenshot:
          3799_objects1.jpg

          3799_scripte.jpg

          1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active last edited by

            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 Reply Last reply Reply Quote 0
            • B
              Belei last edited by

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

              3799_java.jpg

              1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active last edited by

                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 Reply Last reply Reply Quote 0
                • B
                  Belei last edited by

                  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 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active last edited by

                    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 Reply Last reply Reply Quote 0
                    • B
                      Belei last edited by

                      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 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active last edited by

                        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 Reply Last reply Reply Quote 0
                        • B
                          Belei last edited by

                          DANKE 😄

                          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 Reply Last reply Reply Quote 0
                          • B
                            Belei last edited by

                            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 Reply Last reply Reply Quote 0
                            • dslraser
                              dslraser Forum Testing Most Active last edited by

                              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 Reply Last reply Reply Quote 0
                              • B
                                Belei last edited by

                                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 Reply Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active last edited by

                                  freut mich das nun alles läuft<emoji seq="1f44d">👍</emoji>

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    lindi200000 last edited by

                                    Hallo,

                                    ich bin aktuell dabei mit Blockly und Alexa bisschen zu experimentieren.

                                    Die Funktion soll sehr Simpel sein. Ich habe eine Alexa, IOBroker und darüber Homatic Thermostate angeschloss. Ziel soll es sein, das Alexa mir die Temperatur sagt.

                                    Also: "Alexa wie warm ist es im Büro"

                                    Leider kommt als Antwort: "Tut mir leid, ich habe den Standort nicht verstanden"

                                    Hier mein Blockly Script. Kann mir wer Sagen wo der Fehler ist?

                                    Als Vergleichswert, nehme ich das summary aus der History.
                                    8844_tempblockly.png

                                    VG

                                    Lindi

                                    1 Reply Last reply Reply Quote 0
                                    • dslraser
                                      dslraser Forum Testing Most Active last edited by

                                      @lindi200000:

                                      Hallo,

                                      ich bin aktuell dabei mit Blockly und Alexa bisschen zu experimentieren.

                                      Die Funktion soll sehr Simpel sein. Ich habe eine Alexa, IOBroker und darüber Homatic Thermostate angeschloss. Ziel soll es sein, das Alexa mir die Temperatur sagt.

                                      Also: "Alexa wie warm ist es im Büro"

                                      Leider kommt als Antwort: "Tut mir leid, ich habe den Standort nicht verstanden"

                                      Hier mein Blockly Script. Kann mir wer Sagen wo der Fehler ist?

                                      Als Vergleichswert, nehme ich das summary aus der History.

                                      Tempblockly.PNG

                                      VG

                                      Lindi `

                                      Schau mal hier, habe ich da vorhin beschrieben…..

                                      viewtopic.php?f=37&t=15607#p179610

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        Belei last edited by

                                        Nochmal eine Frage zum Fenster Zähl Script.

                                        Ich habe ihn jetzt 2x in Benutzung.

                                        Fall 1 : Als automatische Ansage wenn meine Alarmanlage auf blockiert schaltet mit Lautstärke 60.

                                        Fall 2 : Als Antwort auf Alexa, sind noch Fenster geöffnet. Ohne Lautstärken Einstellung.

                                        Jetzt nutzt aber auch Fall 2 die Lautstärke 60?

                                        Also Alexa ist auf Läutstärke 20 ich frage welche Fenster sind geöffnet und sie antwortet leise, moment ich schaue mal nach und dann brüllt sie uns an

                                        welche Fenster noch auf sind. 🙂 Hier würde ich gerne die Lautstärke nutzen auf die Alexa momentan auch eingestellt ist!

                                        1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active last edited by

                                          dann zeige mal Dein Script/Blockly für Deine Anwendungen.

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            Belei last edited by

                                            Trigger CCU setzt Alarm auf blockiert
                                            3799_2.jpg

                                            Trigger Alexa wird gefragt
                                            3799_1.jpg

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            642
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            45
                                            184
                                            40605
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo