diff --git a/app/resources/Android/src/main/res/values-da/strings.xml b/app/resources/Android/src/main/res/values-da/strings.xml new file mode 100644 index 00000000..7131f638 --- /dev/null +++ b/app/resources/Android/src/main/res/values-da/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Remove recipe from snacks?" + "Remove recipe from dinner?" + "Remove recipe from lunch?" + "Remove recipe from breakfast?" + "Untitled Recipe" + "Star rating" + "Created" + "Filtered result" + "OK" + "recipes updated" + "recipes already exists" + "recipes imported" + "recipes found" + "Import summary" + "separate with spaces" + "Tags" + "No tags available" + "All Tags" + "All Categories" + "Vietnamese" + "Turkish" + "Thai" + "Swedish" + "Sri Lankan" + "Spanish" + "Scottish" + "Russian" + "Portuguese" + "Nigerian" + "Mexican" + "Korean" + "Kenyan" + "Jewish" + "Japanese" + "Jamaican" + "Italian" + "Irish" + "Indian" + "Greek" + "German" + "French" + "Filipino" + "English" + "Egyptian" + "Danish" + "Chinese" + "British" + "Brazilian" + "American" + "All Cuisines" + "Cuisines" + "Cuisine" + "Are you sure you want to remove" + "Units" + "Remove unit?" + "Remove yield unit?" + "Remove category?" + "Remove cuisine?" + "New unit" + "New cuisine" + "Challenging" + "Moderate" + "Easy" + "Oldest first" + "Newest first" + "Last updated" + "Difficulty level" + "Rating" + "Slowest first" + "Quickest first" + "Your search did not match any recipes in the filtered result" + "Recipe not found" + "Reset successful" + "Reset units list" + "Reset yield units list" + "Reset categories list" + "Reset cuisines list" + "Resetting a list will NOT delete your existing entries but only restores the deleted default entries." + "Reset" + "Helps you choose what to cook when you can\'t decide" + "Shake to view random recipe" + "Options" + "User guide" + "Privacy policy" + "View on GitHub" + "Translator" + "Bidragyder" + "Deles via EnRecipes. Få det på Play Butik eller fra F-Droid." + "Tilladelse nægtet" + "Import vellykket" + "Check..." + "lang tid siden" + "Måneder før" + "Uger før" + "Dage før" + "i går" + "dag" + "Du har prøvet denne opskrift:" + "Snackbar" + "Aftensmad" + "Frokost" + "Morgenmad" + "Beskæring af et foto" + "UDSKIFT FOTO" + "Opskrift Foto" + "EnRecipes kræver opbevaring tilladelse til at sætte opskriften fotos." + "Nødvendig" + "Neue-kategori" + "Nyt Udbytte Enhed" + "Bemærk fjerne?" + "Kombination fjerne?" + "Forberedelse fjerne?" + "Ingredienser fjerne?" + "KASSERE" + "KASSERE" + "Vil du kassere ikke-gemte ændringer i denne opskrift?" + "Ikke-Gemte Ændringer" + "Søge" + "Vil du virkelig slette opskriften" + "SLETTE" + "Slet opskrift?" + "Fjernet fra senere prøve" + "Tilføjet i prøve senere" + "Fjernet fra favoritter" + "Tilføjet Til Favoritter" + "Tilføj mindst en opskrift for at udføre en sikkerhedskopi" + "EnRecipes kræver tilladelse til opbevaring for at sikkerhedskopiere dine data på denne enhed." + "FORTSÆTTE" + "IKKE NU" + "EnRecipes hukommelse krævede tilladelse til at importere dine data fra en tidligere sikkerhedskopi." + "Give tilladelse" + "EnRecipes skal genstartes, for at det nyligt indstillede sprog ændres" + "EnRecipes skal genstartes for at emneændringen kan træde i kraft." + "GENSTARTE" + "En genstart er påkrævet" + "INDSTILLE" + "OPRET NYE" + "Dele" + "Oversigt" + "Opskrift" + "Foto" + "min" + "h" + "Min Sunde Opskrift" + "Der er intet her! Tilføj nogle opskrifter og prøv igen." + "Opskrift vælg" + "TILFØJE" + "FJERNE" + "ANNULLERE" + "Sorter efter" + "Trin" + "Element" + "TILFØJ NOTER" + "Noter" + "Note" + "TILFØJE KOMBINATION" + "Kombinationer" + "TILFØJ TRIN" + "Forberedelser" + "Forberedelse" + "TILFØJE INGREDIENS" + "Ingredienser" + "Ingrediens" + "Udbytte målt i" + "Udbyttebeløb" + "Tilberedningstid" + "Forberedelsestid" + "kategori" + "Titel" + "Opskrift Rediger" + "Ny Opskrift" + "Vishnu Raghav B" + "Forfatter" + "til rapportering af problemer, forslag og Feedback" + "Deltag i telegram-gruppen" + "version" + "Understøtter fuld sikkerhedskopier eksporteret af denne App" + "Import fra Backup" + "Opretter en fileip-fil, der indeholder alle data. Denne fil kan importeres igen." + "Eksporter til en sikkerhedskopi" + "Database" + "Mørk" + "Lyst" + "Emne" + "Systemstandard" + "App Sprog" + "Interface" + "Din søgning matchede ikke Opskrifter i din senere prøveliste" + "Din søgning matchede ikke Opskrifter i dine favoritter" + "Din søgning stemte ikke overens med opskrifter i denne kategori" + "Din søgning stemte ikke overens med opskrifter" + "Ingen opskrifter fundet" + "Kategori er tom" + "Opskrifter, som du markerer som favoritter, er vist her" + "Ingen favoritter endnu" + "Opskrifter, der er markeret med try later, vises her" + "Alle gjort!" + "Brug pen-ikonet til at tilføje nogle noter" + "Brug pennikonet til at tilføje nogle kombinationer" + "Brug penikonet til at tilføje nogle forberedelser" + "Brug pen-ikonet til at tilføje nogle ingredienser" + "Brug plusknappen til at tilføje en" + "Begynd at tilføje dine opskrifter!" + "stor" + "medium" + "lille" + "stok" + "dusin" + "dråbe" + "klemme" + "stykke" + "spaltes" + "blad" + "in" + "cm" + "kg" + "g" + "mg" + "Pf" + "oz" + "l" + "ml" + "gal" + "qt" + "pt" + "Kop" + "fl" + "EL" + "SL" + "TL" + "Enhed" + "enhed" + "Brød" + "Patty" + "Roller" + "Liter" + "Ml" + "Gallon" + "Kop" + "Kilo" + "Gram" + "Pund" + "Ounce" + "Flydende Ounce" + "EL" + "TL" + "Stykke" + "Serverer" + "Vegetarisk" + "Vegetarisk" + "Ikke defineret" + "Suppe" + "Snackbar" + "Side retter" + "Skaldyr" + "Sauce" + "Salater" + "Ris" + "Fjerkræ" + "Pasta" + "Noodle" + "Kød" + "Hovedret" + "Mittag" + "Sund" + "Drink" + "Abendessen" + "Dessertbuffet" + "Morgenmad" + "Brød" + "Drink" + "Grill" + "Forret" + "Om" + "Indstilling" + "Kategori" + "Måltid planner" + "Favorit" + "Prøv senere" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "Import failed" + diff --git a/app/resources/Android/src/main/res/values-de/strings.xml b/app/resources/Android/src/main/res/values-de/strings.xml new file mode 100644 index 00000000..c96f458f --- /dev/null +++ b/app/resources/Android/src/main/res/values-de/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Import failed" + "Entferne Rezept von Imbiss?" + "Entferne Rezept von Abendessen?" + "Entferne Rezept von Mittagessen?" + "Entferne Rezept von Frühstück?" + "Unbenanntes Rezept" + "Sternebewertung" + "Erstellt" + "gefiltertes Ergebnis" + "OK" + "Rezepte aktualisiert" + "Rezept existiert bereits" + "Rezepte importiert" + "Rezepte gefunden" + "Import Zusammenfassung" + "trennen mit Leerzeichen" + "Tags" + "Keine Tags vorhanden" + "Alle Tags" + "Alle Kategorien" + "Vietnamesisch" + "Türkisch" + "Thailändisch" + "Swedisch" + "Sri Lankisch" + "Spanisch" + "Schottisch" + "Russisch" + "Portugiesisch" + "Nigerianisch" + "Mexikanisch" + "Koreanisch" + "Kenianisch" + "Jüdisch" + "Japanisch" + "Jamaikanisch" + "Italienisch" + "Irisch" + "Indisch" + "Griechisch" + "Deutsch" + "Französisch" + "Philipinisch" + "English" + "Ägyptisch" + "Dänisch" + "Chinesisch" + "Britisch" + "Brazilianisch" + "Amerikanisch" + "Alle Küchen" + "Küchen" + "Küche" + "Bist du sicher, dass du löschen möchtest" + "Einheiten" + "Einheit löschen?" + "Ertragseinheit löschen?" + "Kategorie löschen?" + "Küche löschen?" + "Neue Einheit" + "Neue Küche" + "Herausfordernd" + "Moderat" + "Einfach" + "Älteste zuerst" + "Neueste zuerst" + "Zuletzt aktualisiert" + "Schwierigkeitsgrad" + "Bewertung" + "Langsamste zuerst" + "Schnellste zuerst" + "Deine Suche ergab keine Übereinstimmung mit den Rezepten im gefilterten Ergebnis" + "Rezept nicht gefunden" + "Zurücksetzen erfolgreich" + "Einheiten Liste zurücksetzen" + "Ertragseinheiten Liste zurücksetzen" + "Kategorien Liste zurücksetzen" + "Küchen Liste zurücksetzen" + "Das Zurücksetzen einer Liste löscht NICHT deine vorhandenen Einträge, sondern stellt nur die gelöschten Standardeinträge wieder her" + "Zurücksetzen" + "Hilft dir wenn du dich nicht entscheiden kannst, was gekocht werden soll" + "Schütteln um zufälliges Rezept anzuzeigen" + "Optionen" + "Anleitung" + "Datenschutz" + "Auf GitHub ansehen" + "Übersetzer" + "Mitwirkende" + "Geteilt über EnRecipes. Hole es Dir aus dem Play Store oder von F-Droid." + "Berechtigung verweigert" + "Import erfolgreich" + "Überprüfen..." + "vor langer Zeit" + "Monate zuvor" + "Wochen zuvor" + "Tage zuvor" + "gestern" + "heute" + "Du hast dieses Rezept ausprobiert:" + "Imbiss" + "Abendessen" + "Mittag" + "Frühstück" + "Foto zuschneiden" + "FOTO ERSETZEN" + "Rezept Foto" + "EnRecipes erfordert Speicherberechtigung, um Rezept Fotos zu setzen." + "Erforderlich" + "Neue Kategorie" + "Neue Ertragseinheit" + "Notiz entfernen?" + "Kombination entfernen?" + "Zubereitung entfernen?" + "Zutaten entfernen?" + "WEITER BEARBEITEN" + "VERWERFEN" + "Möchtest Du nicht gespeicherte Änderungen an diesem Rezept verwerfen?" + "Nicht gespeicherte Änderungen" + "Suche" + "Möchtest Du das Rezept wirklich löschen" + "LÖSCHEN" + "Rezept löschen?" + "Aus Später ausprobieren entfernt" + "In Später ausprobieren hinzugefügt" + "Aus Favoriten entfernt" + "Zu Favoriten Hinzugefügt" + "Füge mindestens ein Rezept hinzu, um eine Sicherung durchzuführen" + "EnRecipes benötigt Speicherberechtigung, um Deine Daten auf diesem Gerät zu sichern." + "FORTSETZEN" + "NICHT JETZT" + "EnRecipes benötigt Speicherberechtigung, um Deine Daten aus einer früheren Sicherung zu importieren." + "Erlaubnis erteilen" + "EnRecipes muss neu gestartet werden, damit die neu eingestellte Sprache geändert wird" + "EnRecipes muss neu gestartet werden, damit der Themenwechsel wirksam wird." + "NEUSTARTEN" + "Neustart erforderlich" + "EINSTELLEN" + "NEU ANLEGEN" + "Teilen" + "Überblick" + "Rezept" + "Foto" + "min" + "h" + "Mein Gesundes Rezept" + "Hier ist nichts! Füge einige Rezepte hinzu und versuche es erneut." + "Rezept auswählen" + "HINZUFÜGEN" + "ENTFERNEN" + "ABBRECHEN" + "Sortieren nach" + "Schritt" + "Posten" + "NOTIZEN HINZUFÜGEN" + "Notizen" + "Notiz" + "KOMBINATION HINZUFÜGEN" + "Kombinationen" + "SCHRITT HINZUFÜGEN" + "Zubereitungen" + "Zubereitung" + "ZUTAT HINZUFÜGEN" + "Zutaten" + "Zutat" + "Ertrag gemessen in" + "Ertragsmenge" + "Kochzeit" + "Vorbereitungszeit" + "Kategorie" + "Titel" + "Rezept bearbeiten" + "Neues Rezept" + "Vishnu Raghav B" + "Autor" + "für die Meldung von Problemen, Anregungen und Feedback" + "Tritt der Telegrammgruppe bei" + "Version" + "Unterstützt vollständige Backups, die von dieser App exportiert werden" + "Importieren vom Backup" + "Erzeugt eine zip-Datei, die alle Daten enthält. Diese Datei kann wieder importiert werden." + "Exportieren in ein Backup" + "Datenbank" + "Dunkel" + "Hell" + "Thema" + "System Standard" + "App Sprache" + "Benutzeroberfläche" + "Deine Suche stimmte nicht mit Rezepten in Deiner Später versuchen Liste überein" + "Deine Suche stimmte nicht mit Rezepten in Deinen Favoriten überein" + "Deine Suche stimmte nicht mit Rezepten in dieser Kategorie überein" + "Deine Suche stimmte nicht mit Rezepten überein" + "Keine Rezepte gefunden" + "Kategorie ist leer" + "Rezepte, die Du als Favorit markierst, werden hier aufgelistet" + "Noch keine Favoriten" + "Rezepte, die mit Später ausprobieren markiert sind, werden hier aufgelistet" + "Alles fertig!" + "Verwende das Stift-Symbol, um einige Notizen hinzuzufügen" + "Verwende das Stift-Symbol, um einige Kombinationen hinzuzufügen" + "Verwende das Stift-Symbol, um einige Zubereitungen hinzuzufügen" + "Verwende das Stift-Symbol, um einige Zutaten hinzuzufügen" + "Verwende das Plus-Symbol, um eins hinzuzufügen" + "Beginne deine Rezepte hinzuzufügen!" + "groß" + "medium" + "klein" + "Stange" + "Dutzend" + "Tropfen" + "Prise" + "Stück" + "Nelke" + "Blatt" + "in" + "cm" + "kg" + "g" + "mg" + "Pf" + "oz" + "l" + "ml" + "gal" + "qt" + "pt" + "Tasse" + "fl" + "EL" + "SL" + "TL" + "Einheit" + "Einheit" + "Laib" + "Pastete" + "Rolle" + "Liter" + "Milliliter" + "Gallone" + "Tasse" + "Kilogramm" + "Gramm" + "Pfund" + "Unze" + "Flüssige Unze" + "EL" + "TL" + "Stück" + "Portion" + "Vegetarisch" + "Vegan" + "Unsortiert" + "Suppen" + "Snacks" + "Beilagen" + "Meeresfrüchte" + "Soßen" + "Salate" + "Reis" + "Geflügel" + "Pasta" + "Nudeln" + "Fleisch" + "Hauptspeisen" + "Mittag" + "Gesund" + "Getränke" + "Abendessen" + "Nachspeisen" + "Frühstück" + "Brote" + "Getränke" + "Grill" + "Vorspeisen" + "Über" + "Einstellungen" + "Kategorien" + "Essensplaner" + "Favoriten" + "Später versuchen" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + diff --git a/app/resources/Android/src/main/res/values-es/strings.xml b/app/resources/Android/src/main/res/values-es/strings.xml new file mode 100644 index 00000000..862a455e --- /dev/null +++ b/app/resources/Android/src/main/res/values-es/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Remove recipe from snacks?" + "Remove recipe from dinner?" + "Remove recipe from lunch?" + "Remove recipe from breakfast?" + "Receta sin título" + "Valoración por estrellas" + "Creado" + "Resultados filtrados" + "OK" + "recetas actualizadas" + "la receta ya existe" + "recetas importadas" + "recetas encontradas" + "Resumen de importación" + "separar con espacios" + "Etiquetas" + "No hay etiquetas disponibles" + "Todas las etiquetas" + "Todas las categorías" + "Vietnamita" + "Turca" + "Thai" + "Sueca" + "Sri Lankiana" + "Española" + "Escocesa" + "Rusa" + "Portuguesa" + "Nigeriana" + "Mejicana" + "Coreana" + "Keniata" + "Judía" + "Japonés" + "Jamaiquino" + "Italiano" + "Irlandés" + "Hindú" + "Griega" + "Alemana" + "Francesa" + "Filipina" + "Inglesa" + "Egipcia" + "Danesa" + "China" + "Británica" + "Brasileña" + "Americana" + "Todas las cocinas" + "Comidas" + "Comida" + "Seguro deseas eliminar" + "Unidades" + "¿Remover unidad?" + "¿Remover unidad de medida?" + "¿Remover categoría?" + "¿Remover comida?" + "Nueva unidad" + "Nueva comida" + "Desafiante" + "Moderada" + "Fácil" + "Más antiguas primero" + "Más nuevas primero" + "Última actualización" + "Nivel de dificultad" + "Rating" + "La más lenta primero" + "La más rápida primero" + "Tu búsqueda no encajó con ninguna receta de los resultados filtrados" + "Receta no encontrada" + "Reseteo satisfactorio" + "Resetea el listado de unidades" + "Resetea el listado de unidad de medidas" + "Resetea el listado de categorías" + "Resetea el listado de comidas" + "Resetear un listado NO borrará tus entradas existentes pero restaurará las eliminadas por default." + "Reiniciar" + "Ayuda a decidir que cocinar cuando no sabes que cocinar" + "Sacude para ver una receta aleatoria" + "Opciones" + "Guía de usuario" + "Política de privacidad" + "Visita en GitHub" + "Traductor" + "Contribuyentes" + "Compartido via EnRecipes. Consíguela en Play Store o F-Droid." + "Permiso denegado" + "Importado satisfactoriamente" + "Verificando..." + "hace mucho tiempo" + "hace meses" + "semanas atrás" + "algunos dias atrás" + "ayer" + "hoy" + "Haz intentado esta receta:" + "bocadillos" + "cena" + "almuerzo" + "desayuno" + "Recortar foto" + "REEMPLAZAR FOTO" + "Foto de receta" + "EnRecipes requiere el permiso de almacenamiento para colocar la foto de receta." + "Requerido" + "Nueva categoría" + "Nueva unidad de medida" + "¿Remover nota?" + "¿Remover combinación?" + "¿Remover instrucción?" + "¿Remover ingrediente?" + "CONTINUAR EDITANDO" + "DESCARTAR" + "¿Seguro que quieres descartar los cambios no guardados de esta receta?" + "Cambios no guardados" + "Buscar" + "Seguro que quieres borrar la receta" + "BORRAR" + "¿Borrar receta?" + "Remueve de Intentar luego" + "Agrega a Intentar luego" + "Remover de favoritos" + "Agregar a favoritos" + "Agrega al menos una receta para realizar un respaldo" + "EnRecipes requiere el permiso de almacenamiento para respaldar los datos en este dispositivo" + "CONTINUAR" + "NO AHORA" + "EnRecipes requiere el permiso de almacenamiento para importar tus datos de un respaldo previo." + "Dar permmiso" + "EnRecipes debe reiniciarse para que el cambio de lenguaje surta efecto." + "EnRecipes debe reiniciarse para que el cambio de tema surta efecto." + "REINICIAR" + "Reinicio requerido" + "ESTABLECER" + "AGREGAR NUEVA" + "Compartir" + "Resumen" + "Receta" + "Foto" + "min" + "hr" + "Mi receta saludable" + "¡Nada por aquí! Agregar algunas recetas e intenta nuevamente." + "Elegir una receta" + "AGREGAR" + "REMOVER" + "CANCELAR" + "Ordenada por" + "Paso" + "Item" + "AGREGAR NOTA" + "Notas" + "Nota" + "AGREGA COMBINACIÓN" + "Combinaciones" + "AGREGAR PASO" + "Instrucciones" + "Instrucción" + "AGREGAR INGREDIENTE" + "Ingredientes" + "Ingrediente" + "Cantidad medida en" + "Cantidad" + "Tiempo de cocción" + "Tiempo de preparación" + "Categoria" + "Titulo" + "Editar receta" + "Nueva receta" + "Vishnu Raghav B" + "Autor" + "para reportar problemas, sugerencias y devoluciones" + "Únete al grupo de Telegram" + "Version" + "Soporta respaldos completos exportados por esta app" + "Importar de un respaldo" + "Generar un archivo zip con tus datos. Este puede ser importado nuevamente." + "Exportar un respaldo completo" + "Base de datos" + "Oscuro" + "Claro" + "Tema" + "Default del sistema" + "Lenguaje" + "Interfaz" + "Tu búsqueda no concuerda con recetas en tu listado de intentar luego" + "Tu búsqueda no concuerda con recetas en tus favoritos" + "Tu búsqueda no concuerda con recetas de esta categoría" + "Tu búsqueda no concuerda con recetas" + "No se encontraron recetas" + "Categoría vacía" + "Las recetas que marques como favoritas serán listadas aquí" + "No tienes favoritos todavía" + "Las recetas que marques como intentar luego serán listadas aquí" + "¡Listo!" + "Usa el botón del lapiz para agregar notas" + "Usa el botón del lapiz para agregar mezclas" + "Usa el boton del lapiz para agregar instrucciones" + "Usa el lapiz para agregar ingredientes" + "Usa el botón más para agregar una" + "¡Comienza a agregar tus recetas!" + "grande" + "mediano" + "pequeño" + "rama" + "docena" + "gota" + "pizca" + "porción" + "clavo" + "hoja" + "pulg" + "cm" + "kg" + "g" + "mg" + "lb" + "onz" + "l" + "ml" + "gal" + "cuarto" + "parte" + "taza" + "oz liq" + "tbsp" + "dsp" + "tsp" + "Unidad" + "unidad" + "Hogaza" + "Empanada" + "Enrollar" + "Litro" + "Mililitro" + "Galon" + "Taza" + "Kilogramo" + "Gramo" + "Libra" + "Onza" + "Onza líquida" + "Cucharada" + "Cucharadita" + "Pieza" + "Servicio" + "Vegetariano" + "Vegano" + "Indefinido" + "Sopas" + "Bocadillo" + "Platos de acompañamiento" + "Comida del mar" + "Salsas" + "Ensaladas" + "Arroz" + "Pollería" + "Pasta" + "Fideos" + "Carnes" + "Platos principales" + "Almuerzo" + "Saludable" + "Drinks" + "Cena" + "Postres" + "Desayuno" + "Panes" + "Bebidas" + "Barbacoa" + "Aperitivos" + "Acerca de" + "Ajustes" + "Categorías" + "Planificador de comida" + "Favoritos" + "Probar luego" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "Import failed" + diff --git a/app/resources/Android/src/main/res/values-nl/strings.xml b/app/resources/Android/src/main/res/values-nl/strings.xml new file mode 100644 index 00000000..a7bef2a3 --- /dev/null +++ b/app/resources/Android/src/main/res/values-nl/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Remove recipe from snacks?" + "Remove recipe from dinner?" + "Remove recipe from lunch?" + "Remove recipe from breakfast?" + "Untitled Recipe" + "Star rating" + "Created" + "Filtered result" + "OK" + "recipes updated" + "recipes already exists" + "recipes imported" + "recipes found" + "Import summary" + "separate with spaces" + "Tags" + "No tags available" + "All Tags" + "All Categories" + "Vietnamese" + "Turkish" + "Thai" + "Swedish" + "Sri Lankan" + "Spanish" + "Scottish" + "Russian" + "Portuguese" + "Nigerian" + "Mexican" + "Korean" + "Kenyan" + "Jewish" + "Japanese" + "Jamaican" + "Italian" + "Irish" + "Indian" + "Greek" + "German" + "French" + "Filipino" + "English" + "Egyptian" + "Danish" + "Chinese" + "British" + "Brazilian" + "American" + "All Cuisines" + "Cuisines" + "Cuisine" + "Are you sure you want to remove" + "Units" + "Remove unit?" + "Remove yield unit?" + "Remove category?" + "Remove cuisine?" + "New unit" + "New cuisine" + "Challenging" + "Moderate" + "Easy" + "Oldest first" + "Newest first" + "Last updated" + "Difficulty level" + "Rating" + "Slowest first" + "Quickest first" + "Your search did not match any recipes in the filtered result" + "Recipe not found" + "Reset successful" + "Reset units list" + "Reset yield units list" + "Reset categories list" + "Reset cuisines list" + "Resetting a list will NOT delete your existing entries but only restores the deleted default entries." + "Reset" + "Helps you choose what to cook when you can\'t decide" + "Shake to view random recipe" + "Options" + "User guide" + "Privacy policy" + "View on GitHub" + "Translator" + "Medewerkers" + "Gedeeld via EnRecipes. Haal het in de Play Store of bij F-Droid." + "toestemming geweigerd" + "Succesvol importeren" + "Het controleren..." + "lang geleden" + "voorgaande maanden" + "voorgaande weken" + "voorgaande dagen" + "Gisteren" + "vandaag" + "Je probeerde dit recept:" + "Hapje" + "Diner" + "Middag" + "Ontbijt" + "Een foto afknippen" + "FOTO REPLAATSEN" + "Receptfoto" + "EnRecipes heeft toestemming nodig om receptfoto\'s in te stellen." + "Benodigd" + "Nieuwe categorie" + "Nieuwe opbrengsteenheid" + "Noot verwijderen?" + "Combinatie verwijderen?" + "Voorbereiding verwijderen?" + "Ingrediënten verwijderen?" + "VERDERE VERWERKING" + "AFBREKENING" + "Wilt u niet opgeslagen wijzigingen in dit recept weggooien?" + "Onopgeslagen veranderingen" + "Zoeken" + "Wil je echt het recept verwijderen" + "VERWIJDEREN" + "Recept verwijderen?" + "Verwijderd uit Probeer Later" + "Toegevoegd in Later proberen" + "Uit favorieten verwijderd" + "Toegevoegd aan favorieten" + "Voeg ten minste één recept toe om een back-up te maken" + "EnRecipes heeft toestemming nodig om uw gegevens op dit apparaat op te slaan." + "CONTINUE" + "NIET NU" + "EnRecipes heeft toestemming nodig om uw gegevens uit een eerdere back-up te importeren." + "Toestemming" + "EnRecipes moeten opnieuw worden opgestart om de nieuw ingestelde taal te wijzigen" + "EnRecipes moeten opnieuw worden opgestart om de wijziging van het onderwerp in werking te laten treden." + "HERSTART" + "Herstart nodig" + "SETUP" + "NIEUW BIJLAGE" + "Deel" + "Overzicht" + "Recept" + "FOTO" + "min" + "h" + "Mijn Gezond Recept" + "Niets hier! Voeg wat recepten toe en probeer het opnieuw." + "Recept selecteren" + "TOEVOEGEN" + "VERWIJDEREN" + "ANNULEREN" + "Sorteren op" + "Stap" + "Artikel" + "OPMERKINGEN TOEVOEGEN" + "Opmerkingen" + "Opmerking" + "COMBINATIE TOEVOEGEN" + "Combinaties" + "STAPPEN TOEVOEGEN" + "Voorbereidingen" + "Voorbereiding" + "INGREDIENTE TOEVOEGEN" + "Ingrediënten" + "Ingrediënt" + "Opbrengst gemeten in" + "Opbrengstbedrag" + "Kooktijd" + "Voorbereidingstijd" + "Categorie" + "Titel" + "Recept aanpassen" + "Nieuw recept" + "Vishnu Raghav B" + "Auteur" + "voor het melden van problemen, suggesties en feedback" + "Sluit zich aan bij de telegrammengroep" + "Versie" + "Ondersteunt volledige back-ups die vanuit deze app worden geëxporteerd" + "Importieren vom Backup" + "Maakt een zip-bestand aan met alle gegevens. Dit bestand kan opnieuw worden geïmporteerd." + "Exporteren naar backup" + "Databank" + "Donker" + "Helder" + "Thema" + "Systeem Standaard" + "App taal" + "Gebruikersinterface" + "Uw zoekopdracht kwam niet overeen met de recepten in uw Try Later-lijst" + "Uw zoekopdracht kwam niet overeen met de recepten in uw favorieten" + "Uw zoekopdracht kwam niet overeen met recepten in deze categorie" + "Uw zoekopdracht kwam niet overeen met recepten" + "Geen recepten gevonden" + "Categorie is leeg" + "Recepten die u als favoriet markeert staan hier vermeld" + "Nog geen favorieten" + "Recepten die gemarkeerd zijn met \'Try later\' staan hier vermeld." + "Alles klaar!" + "Gebruik het potloodicoon om wat aantekeningen toe te voegen" + "Gebruik het potloodicoon om enkele combinaties toe te voegen" + "Gebruik het potloodicoon om wat voorbereidingen toe te voegen" + "Gebruik het potloodicoon om wat ingrediënten toe te voegen" + "Gebruik het plusteken om er een toe te voegen" + "Begin met het toevoegen van uw recepten!" + "groot" + "middelgroot" + "kleine" + "stiksel" + "tientallen" + "druppel" + "knijpen" + "deel" + "kruidnagel" + "blad" + "in" + "cm" + "kg" + "g" + "mg" + "Pf" + "oz" + "l" + "ml" + "gal" + "qt" + "pt" + "Beker" + "fl" + "EL" + "SL" + "TL" + "Eenheid" + "eenheid" + "Brood" + "Pasteitje" + "Rol" + "Liter" + "Milliliter" + "Galon" + "Beker" + "Kilogram" + "Oproep" + "Pond" + "Ounce" + "Vloeibare Ounce" + "EL" + "TL" + "Stukje" + "Portie" + "Vegetarisch" + "Veganistisch" + "Onbekend" + "Soepen" + "Hapje" + "Bijgerechten" + "Zeevruchten" + "Sausen" + "Salades" + "Rijst" + "Gevogelte" + "Deegwaren" + "Noedels" + "Vlees" + "Hoofdgerechten" + "Lunchen" + "Gezond" + "Drankjes" + "Diner" + "Toetsen" + "Ontbijt" + "Broodjes" + "Drankjes" + "Barbecue" + "Voorgerechten" + "Over" + "Instellingen" + "Categorieën" + "Maaltijdenplanner" + "Favoriten" + "Later proberen" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "Import failed" + diff --git a/app/resources/Android/src/main/res/values-pt/strings.xml b/app/resources/Android/src/main/res/values-pt/strings.xml new file mode 100644 index 00000000..2f4cc561 --- /dev/null +++ b/app/resources/Android/src/main/res/values-pt/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Remove recipe from snacks?" + "Remove recipe from dinner?" + "Remove recipe from lunch?" + "Remove recipe from breakfast?" + "Receita Sem Título" + "Classificação por estrelas" + "Criado" + "Resultados filtrados" + "OK" + "receitas atualizadas" + "receita já existe" + "receitas importadas" + "receitas encontradas" + "Importar sumário" + "separa com espaços" + "Etiquetas" + "Sem etiquetas disponíveis" + "Todas as Etiquetas" + "Todas as Categorias" + "Vietnamita" + "Turca" + "Tailandesa" + "Sueca" + "Cingalês" + "Espanhola" + "Escocêsa" + "Russa" + "Portuguesa" + "Nigeriana" + "Mexicana" + "Coreana" + "Queniana" + "Judaica" + "Japonêsa" + "Jamaicana" + "Italiana" + "Irlândesa" + "Indiana" + "Grega" + "Alemã" + "Francesa" + "Filipina" + "Inglêsa" + "Egípcia" + "Dinamarquêsa" + "Chinesa" + "Britânica" + "Brasileira" + "Americana" + "Todas as Cozinhas" + "Cozinhas" + "Cozinha" + "Tem certeza que pretende remover" + "Unidades" + "Remover unidade?" + "Remover unidade de porção?" + "Remover categoria?" + "Remover cozinha?" + "Nova unidade" + "Nova cozinha" + "Desafiadora" + "Moderada" + "Fácil" + "Mais antiga primeiro" + "Mais recente primeiro" + "Ultima atualização" + "Nível de dificuldade" + "Avaliação" + "Mais lentas primeiro" + "Mais rápidas primeiro" + "A sua pesquisa não encontrou nenhuma receita no resultado filtrado" + "Receita não encontrada" + "Redefinição com sucesso" + "Redefinir lista de unidades" + "Redefinir lista de porções" + "Redefinir lista de categorias" + "Redefinir lista de cozinhas" + "A redefinição de uma lista NÃO excluirá as entradas existentes, mas apenas restaurará as entradas padrão excluídas." + "Redefinir" + "Ajuda a escolher o que cozinhar quando não consegue decidir" + "Agite para ver receita aleatória" + "Opções" + "Guia de Utilização" + "Política de Privacidade" + "Ver no GitHub" + "Tradutor" + "Contribuidores" + "Partilhado via EnRecipes. Download na Play Store ou F-Droid." + "Permissão recusada" + "Importado com sucesso" + "A Verificar..." + "há muito tempo" + "meses atrás" + "semanas atrás" + "dias atrás" + "ontem" + "hoje" + "Tentou esta receita:" + "lanches" + "jantar" + "almoço" + "café da manhã" + "Cortar foto" + "SUBSTITUIR FOTO" + "Foto da receita" + "EnRecipes requer permissão de armazenamento para definir a foto da receita." + "Requerido" + "Nova categoria" + "Nova unidade de porção" + "Remover nota?" + "Remover combinação?" + "Remover instrução?" + "Remover ingrediente?" + "CONTINUAR EDIÇÃO" + "DESCARTAR" + "Tem certeza que deseja descartar as alterações não salvas nesta receita?" + "Alterações não salvas" + "Procurar" + "Tem certeza que deseja eliminar a receita" + "APAGAR" + "Eliminar Receita?" + "Removida de Tentar Mais Tarde" + "Adicionada a Tentar Mais Tarde" + "Removido dos Favoritos" + "Adicionado aos Favoritos" + "Adicione pelo menos uma receita para fazer um backup" + "EnRecipes requer permissão de armazenamento para fazer backup de seus dados neste dispositivo." + "CONTINUAR" + "AGORA NÃO" + "EnRecipes requer permissão de armazenamento para importar seus dados de um backup anterior." + "Garantir permissão" + "EnRecipes precisa ser reiniciada para que a alteração da lingua tenha efeito." + "EnRecipes precisa ser reiniciada para que a alteração do tema tenha efeito." + "REINICIAR" + "É necessário reiniciar" + "SET" + "ADICIONAR NOVA" + "Partilhar" + "Visão Global" + "Receita" + "Foto" + "min" + "hr" + "A Minha Receita Saudável" + "Nada aqui! Adicione algumas receitas e tente novamente." + "Selecionar a receita" + "ADICIONAR" + "REMOVER" + "CANCELAR" + "Ordenar por" + "Passo" + "Item" + "ADICIONAR NOTA" + "Notas" + "Nota" + "ADICIONAR COMBINAÇÕES" + "Combinações" + "ADICIONAR PASSO" + "Instruções" + "Instrução" + "ADICIONAR INGREDIENTE" + "Ingredientes" + "Ingredientes" + "Porções medidas em" + "Quantidade de porções" + "Tempo de cozimento" + "Tempo de preparação" + "Categoria" + "Título" + "Editar receita" + "Nova receita" + "Vishnu Raghav B" + "Autor" + "para reportar problemas, sugestões e feedback" + "Entrar no grupo do Telegram" + "Versão" + "Suporta backups completos exportados por este aplicativo" + "Importar do backup" + "Gera um arquivo zip que contém todos os seus dados. Este arquivo pode ser importado de volta." + "Exportar um backup completo" + "Base de Dados" + "Escuro" + "Claro" + "Tema" + "Padrão do sistema" + "Linguagem da App" + "Interface" + "A sua pesquisa não encontrou nenhuma receita na sua lista tentar mais tarde" + "A sua pesquisa não encontrou nenhuma receita em seus favoritos" + "A sua pesquisa não encontrou nenhuma receita nesta categoria" + "A sua pesquisa não encontrou nenhuma receita" + "Nenhuma receita encontrada" + "Categoria parece vazia" + "As receitas que marcar como favoritas serão listadas aqui" + "Ainda não há favoritos" + "As receitas que você marcar como tentativa mais tarde serão listadas aqui" + "Tudo feito!" + "Use o botão lápis para adicionar algumas notas" + "Use o botão lápis para adicionar algumas combinações" + "Use o botão lápis para adicionar algumas instruções" + "Use o botão lápis para adicionar alguns ingredientes" + "Use o botão de adição para adicionar uma" + "Comece a adicionar suas receitas!" + "grande" + "médio" + "pequeno" + "galho" + "dúzia" + "solta" + "pitada" + "peça" + "bulbo" + "folha" + "in" + "cm" + "kg" + "g" + "mg" + "lb" + "oz" + "l" + "ml" + "gal" + "qt" + "pt" + "copo" + "fl oz" + "colher de sopa" + "colher de sobremesa" + "colher de chá" + "Unidade" + "unidade" + "Loaf" + "Empada" + "Rolo" + "Litro" + "Mililitro" + "Gallon" + "Copo" + "Quilograma" + "Grama" + "Pound" + "Ounce" + "Fluid Ounce" + "Colher de sopa" + "Colher de chá" + "Peça" + "Porção" + "Vegetariano" + "Vegan" + "Indefinido" + "Sopas" + "Lanches" + "Acompanhamentos" + "Marisco" + "Molhos" + "Saladas" + "Arroz" + "Aves" + "Massa" + "Macarrão" + "Carne" + "Pratos principais" + "Almoço" + "Saudável" + "Bebidas" + "Jantar" + "Sobremesas" + "Café da manhã" + "Pães" + "Bebidas" + "Churrasco" + "Aperitivos" + "Sobre" + "Definições" + "Categorias" + "Planeador de Refeições" + "Favoritos" + "Tente Depois" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "Import failed" + diff --git a/app/resources/Android/src/main/res/values-ru/strings.xml b/app/resources/Android/src/main/res/values-ru/strings.xml new file mode 100644 index 00000000..75a34b67 --- /dev/null +++ b/app/resources/Android/src/main/res/values-ru/strings.xml @@ -0,0 +1,291 @@ + + + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Убрать рецепт из закусок?" + "Убрать рецепт из ужиныов?" + "Убрать рецепт из обедов?" + "Убрать рецепт из завтраков?" + "Рецепт без названия" + "Оценка" + "Создано" + "Отфильтрованный результат" + "ОК" + "рецепты обновлены" + "рецепты уже существуют" + "рецепты импортированы" + "рецепты найдены" + "Общая информация про импорт" + "разделяйте пробелами" + "Теги" + "Нету доступных тегов" + "Все теги" + "Все категории" + "Вьетнамская" + "Турецкая" + "Тайская" + "Шведская" + "Шри-ланкийская" + "Испанская" + "Шотландская" + "Русская" + "Нигерийская" + "Нигерийская" + "Мексиканская" + "Корейская" + "Кенийская" + "Еврейская" + "Японская" + "Ямайская" + "Итальянская" + "Ирландская" + "Индийская" + "Греческая" + "Немецкая" + "Французская" + "Филиппинская" + "Английская" + "Египетская" + "Датская" + "Китайская" + "Британская" + "Бразильская кухня" + "Американская" + "Все кухни" + "Кухни" + "Кухня" + "Вы уверены что хотите удалить" + "Единицы измерения" + "Удалить единицу измерения?" + "Удалить единицу измерения подачи?" + "Удалить категорию?" + "Удалить кухню?" + "Новая единица измерения" + "Новая кухня" + "Сложный" + "Средний" + "Легкий" + "Сначала старые" + "Сначала новое" + "Последнее обновление" + "Уровень сложности" + "Рейтинг" + "Сначала самые медленные" + "Самый быстрый сначала" + "По вашему запросу не найдено ни одного рецепта в отфильтрованном результате" + "Рецепт не найден" + "Сброс выполнен успешно" + "Сбросить список единиц измерения" + "Сбросить список единиц измерения подачи" + "Сбросить список категорий" + "Сбросить список кухонь" + "Сброс списка НЕ удалит ваши существующие записи, а только восстановит удаленные записи по умолчанию." + "Сброс" + "Помогает выбрать, что приготовить, когда вы не можете решить" + "Встряхнуть, чтобы показать случайный рецепт" + "Параметры" + "Руководство пользователя" + "Политика конфиденциальности" + "Проект на GitHub" + "Переводчик" + "Участники" + "Отправлено через EnRecipes. Скачайте его в Play Store или F-Droid." + "В доступе отказано" + "Импортировано успешно" + "Проверка ..." + "давно" + "несколько месяцев назад" + "несколько недель назад" + "несколько дней назад" + "вчера" + "сегодня" + "Вы пробовали этот рецепт:" + "закуски" + "ужин" + "обед" + "завтрак" + "Обрезать фотографию" + "ЗАМЕНИТЬ ФОТО" + "Фото для рецепта" + "EnRecipes требует доступ к файлам, чтобы установить фото для рецепта." + "Требуется" + "Новая категория" + "Новая единица измерения подачи" + "Удалить заметку?" + "Удалить комбинацию?" + "Удалить инструкцию?" + "Удалить ингредиент?" + "ПРОДОЛЖИТЬ РЕДАКТИРОВАНИЕ" + "ОТМЕНИТЬ" + "Вы уверены, что хотите отменить несохраненные изменения этого рецепта?" + "Несохраненные изменения" + "Поиск" + "Вы уверены, что хотите удалить рецепт" + "УДАЛИТЬ" + "Удалить рецепт?" + "Удалено из \"Попробовать позже\"" + "Добавлено в \"Попробовать позже\"" + "Удалено из избранного" + "Добавлено в избранное" + "Добавьте хотя бы один рецепт для резервного копирования" + "EnRecipes требует доступ к файлам для резервного копирования ваших данных на это устройство." + "ПРОДОЛЖИТЬ" + "НЕ СЕЙЧАС" + "EnRecipes требует доступ к файлам, чтобы импортировать ваши данные из предыдущей резервной копии." + "Предоставить разрешение" + "Необходимо перезапустить приложение, чтобы изменение языка вступило в силу." + "Необходимо перезапустить приложение, чтобы изменение темы вступило в силу." + "ПЕРЕЗАПУСТИТЬ" + "Требуется перезапуск" + "УСТАНОВИТЬ" + "ДОБАВИТЬ НОВОЕ" + "Поделиться" + "Краткое описание" + "Рецепт" + "Фото" + "мин" + "ч" + "Мой полезный рецепт" + "Здесь ничего! Добавьте рецепты и попробуйте еще раз." + "Выберите рецепт" + "ДОБАВИТЬ" + "УДАЛИТЬ" + "ОТМЕНИТЬ" + "Сортировать по" + "Шаг" + "Ингредиент" + "ДОБАВИТЬ ЗАМЕТКУ" + "Заметки" + "Заметка" + "ДОБАВИТЬ КОМБИНАЦИЮ" + "Комбинации" + "ДОБАВИТЬ ШАГ" + "Инструкции" + "Инструкция" + "ДОБАВИТЬ ИНГРЕДИЕНТ" + "Ингредиенты" + "Ингредиент" + "Подавать в" + "Подавать в количестве" + "Время готовки" + "Время подготовки" + "Категория" + "Заголовок" + "Редактировать рецепт" + "Новый рецепт" + "Vishnu Raghav B" + "Автор" + "для сообщения о проблемах, предложений и отзывов" + "Присоединяйтесь к группе в Telegram" + "Версия" + "Поддерживает полные резервные копии, созданные этим приложением" + "Импорт из резервной копии" + "Создает zip-файл, содержащий все ваши данные. Этот файл можно импортировать обратно." + "Экспорт полной резервной копии" + "База данных" + "Темная" + "Светлая" + "Тема" + "По умолчанию" + "Язык приложения" + "Интерфейс" + "В списке \"Попробовать позже\" по вашему запросу ничего не найдено" + "В избранном по вашему запросу ничего не найдено " + "По вашему запросу ничего не найдено в этой категории" + "По вашему запросу ничего не найдено" + "Рецептов не найдено" + "Похоже что в категории нет рецептов" + "Здесь будут перечислены рецепты, которые вы отметили как любимые." + "Пока что нет любимых рецептов" + "Здесь будут перечислены рецепты, которые вы хотите попробовать позже" + "Все сделано!" + "Используйте кнопку карандаша, чтобы добавить заметки" + "Используйте кнопку карандаша, чтобы добавить несколько комбинаций" + "Используйте кнопку карандаша, чтобы добавить инструкции" + "Используйте кнопку карандаша, чтобы добавить ингредиенты" + "Используйте кнопку плюса, чтобы добавить рецепт" + "Начните добавлять свои рецепты!" + "большой" + "средний" + "маленький" + "палочка" + "дюжина" + "капля" + "щепотка" + "кусок" + "долька" + "лист" + "дюйм" + "см" + "кг" + "г" + "мг" + "фунт" + "унция" + "л" + "мл" + "галлон" + "кварта" + "пинта" + "чашка" + "жидкая унция" + "ст.л." + "д.л." + "ч.л.." + "Единица измерения" + "единица измерения" + "Буханка" + "Лепешка" + "Рулет" + "Литр" + "Миллилитр" + "Галлон" + "Чашка" + "Килограмм" + "Грамм" + "Фунт" + "Унция" + "Жидкая унция" + "Столовая ложка" + "Чайная ложка" + "Кусок" + "Порция" + "Вегетарианский" + "Веганский" + "Не указано" + "Супы" + "Закуски" + "Гарнир" + "Морепродукты" + "Соусы" + "Салаты" + "Рис" + "Птица" + "Макаронные изделия" + "Лапша" + "Мясо" + "Основные блюда" + "Обед" + "Здоровая пища" + "Напитки" + "Ужин" + "Десерты" + "Завтрак" + "Выпечка" + "Напитки" + "Барбекю" + "Закуски" + "О приложении" + "Настройки" + "Категории" + "Планировщик питания" + "Избранное" + "Попробовать позже" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "EnRecipes" + "Import failed" + diff --git a/app/resources/Android/src/main/res/values-ta/strings.xml b/app/resources/Android/src/main/res/values-ta/strings.xml new file mode 100644 index 00000000..0f1a0449 --- /dev/null +++ b/app/resources/Android/src/main/res/values-ta/strings.xml @@ -0,0 +1,291 @@ + + + "தவறான கோப்பு:" + "காப்பு கோப்பு வெளிப்புறமாக மாற்றப்பட்டுள்ளது." + "காப்பு கோப்பு காலியாக உள்ளது." + "காப்பு கோப்பு தவறானது அல்லது சிதைந்துள்ளது." + "இறக்குமதி தோல்வியுற்றது" + "தின்பண்டங்களிலிருந்து சமையல் குறிப்பை அகற்றவா?" + "இரவு உணவில் இருந்து சமையல் குறிப்பை அகற்றவா?" + "மதிய உணவில் இருந்து சமையல் குறிப்பை அகற்றவா?" + "காலை உணவில் இருந்து சமையல் குறிப்பை அகற்றவா?" + "பெயரிடப்படாத சமையல் குறிப்பு" + "நட்சத்திர மதிப்பீடு" + "உருவாக்கப்பட்டது" + "வடிகட்டப்பட்ட முடிவு" + "சரி" + "சமையல் குறிப்புகள் புதுப்பிக்கப்பட்டது" + "சமையல் குறிப்புகள் ஏற்கனவே உள்ளது" + "சமையல் குறிப்புகள் இறக்குமதி செய்யப்பட்டது" + "சமையல் குறிப்புகள் கண்டறியப்பட்டது" + "இறக்குமதி சுருக்கம்" + "இடைவெளிகளுடன் பிரிக்கவும்" + "குறிச்சொற்கள்" + "குறிச்சொற்கள் எதுவுமில்லை" + "அனைத்து குறிச்சொற்கள்" + "அனைத்து பகுப்புகள்" + "வியட்நாமிய" + "துருக்கிய" + "தாய்" + "ஸ்வீடிஷ்" + "இலங்கை" + "ஸ்பானிஷ்" + "ஸ்காட்டிஷ்" + "ரஷ்ய" + "போர்த்துகீசியம்" + "நைஜீரிய" + "மெக்சிகன்" + "கொரிய" + "கென்ய" + "யூத" + "ஜப்பானிய" + "ஜமைக்கா" + "இத்தாலிய" + "ஐரிஷ்" + "இந்திய" + "கிரேக்க" + "ஜெர்மன்" + "பிரஞ்சு" + "பிலிப்பைன்ஸ்" + "ஆங்கில" + "எகிப்திய" + "டேனிஷ்" + "சீன" + "பிரிட்டிஷ்" + "பிரேசிலிய" + "அமெரிக்க" + "அனைத்து உணவு வகைகள்" + "உணவு வகைகள்" + "உணவு வகை" + "இதை நிச்சயமாக அகற்ற விரும்புகிறீர்களா" + "அலகுகள்" + "அலகை அகற்றவா?" + "மகசூல் அலகை அகற்றவா?" + "பகுப்பை அகற்றவா?" + "உணவு வகையை அகற்றவா?" + "புதிய அலகு" + "புதிய உணவு வகை" + "சவாலானது" + "மிதமானது" + "எளிது" + "பழையன முதலில்" + "புதியது முதலில்" + "கடைசியாக புதுப்பிக்கப்பட்டது" + "சிரமநிலை" + "மதிப்பீடு" + "மெதுவானவை முதலில்" + "விரைவானவை முதலில்" + "உங்கள் தேடல் வடிகட்டப்பட்ட முடிவில் எந்த சமையல் குறிப்புகளுடனும் பொருந்தவில்லை" + "சமையல் குறிப்பு கிடைக்கவில்லை" + "வெற்றிகரமாக மீட்டமைக்கப்பட்டது" + "அலகுகள் பட்டியலை மீட்டமை" + "மகசூல் அலகுகள் பட்டியலை மீட்டமை" + "பகுப்புகள் பட்டியலை மீட்டமை" + "உணவு வகைகள் பட்டியலை மீட்டமை" + "பட்டியலை மீட்டமைப்பது உங்கள் இருக்கும் உள்ளீடுகளை நீக்காது, ஆனால் நீக்கப்பட்ட இயல்புநிலை உள்ளீடுகளை மட்டுமே மீட்டமைக்கும்." + "மீட்டமை" + "நீங்கள் தீர்மானிக்க முடியாதபோது என்ன சமைக்க வேண்டும் என்பதைத் தேர்வுசெய்ய உதவும்" + "சாதனத்தை அசைத்து சீரற்ற சமையல் குறிப்பை காண்க" + "விருப்பங்கள்" + "பயனர் வழிகாட்டி" + "தனியுரிமைக் கொள்கை" + "கிட்ஹப்பில் காண்க" + "மொழிபெயர்ப்பாளர்" + "பங்களிப்பாளர்கள்" + "என்ரெசிபீஸ் வழியாக பகிரப்பட்டது. அதை ப்ளே ஸ்டோர் அல்லது எஃப்-டிரயோடு இருந்து பெறுங்கள்." + "அனுமதி மறுக்கப்பட்டது" + "வெற்றிகரமாக இறக்குமதி செய்யப்பட்டது" + "சரிபார்க்கிறது..." + "வெகுகாலத்திற்கு முன்பு" + "மாதங்களுக்கு முன்பு" + "வாரங்களுக்கு முன்பு" + "நாட்களுக்கு முன்பு" + "நேற்று" + "இன்று" + "இச்சமையல் குறிப்பை முயற்சித்தீர்கள்:" + "சிற்றிடை உணவு" + "இரவு உணவு" + "மதிய உணவு" + "காலை உணவு" + "படத்தை வெட்டு" + "புகைப்படத்தை மாற்று" + "சமையல் குறிப்பு புகைப்படம்" + "சமையல் குறிப்பு புகைப்படத்தை அமைக்க என்ரெசிபீஸ்க்கு சேமிப்பு அனுமதி தேவை." + "தேவையான" + "புதிய பகுப்பு" + "புதிய மகசூல் அலகு" + "குறிப்பை அகற்றவா?" + "சேர்க்கையை அகற்றவா?" + "செய்முறையை அகற்றவா?" + "பொருளை அகற்றவா?" + "தொடர்ந்து திருத்து" + "நிராகரி" + "இந்த சமையல் குறிப்பில் சேமிக்கப்படாத மாற்றங்களை நிராகரிக்க விரும்புகிறீர்களா?" + "சேமிக்கப்படாத மாற்றங்கள்" + "தேடு" + "இந்த சமையல் குறிப்பை நீக்க விரும்புகிறீர்களா" + "நீக்கு" + "சமையல் குறிப்பை நீக்கவா?" + "பின்னர் முயற்சிப்பதில் இருந்து நீக்கப்பட்டது" + "பின்னர் முயற்சிக்க சேர்க்கப்பட்டது" + "பிடித்தவற்றிலிருந்து அகற்றப்பட்டது" + "பிடித்தவையில் சேர்க்கப்பட்டது" + "காப்புப்பிரதி செய்ய குறைந்தபட்சம் ஒரு சமையல் குறிப்பு சேர்க்கவும்" + "இந்தச் சாதனத்தில் உங்கள் தரவை காப்புப் பிரதி எடுக்க என்ரெசிபீஸ்க்கு சேமிப்பக அனுமதி தேவைப்படுகிறது." + "தொடர்" + "இப்போது இல்லை" + "முந்தைய காப்புப்பிரதியிலிருந்து உங்கள் தரவை இறக்குமதி செய்ய என்ரெசிபீஸ்க்கு சேமிப்பு அனுமதி தேவைப்படுகிறது." + "அனுமதி வழங்கவும்" + "பயன்பாட்டு மொழி நடைமுறைக்கு வருவதற்கு என்ரெசிபீஸ் ஐ மீண்டும் தொடங்க வேண்டும்." + "தீம் மாற்றம் நடைமுறைக்கு வருவதற்கு என்ரெசிபீஸ் ஐ மீண்டும் தொடங்க வேண்டும்." + "மறுதொடக்கம்" + "மறுதொடக்கம் தேவை" + "அமை" + "புதியனவற்றை சேர்" + "பகிர்" + "கண்ணோட்டம்" + "சமையல் குறிப்பு" + "புகைப்படம்" + "நிமிடம்" + "மணி" + "எனது ஆரோக்கியமான சமையல் குறிப்பு" + "இங்கு எதுவுமில்லை! சில சமையல் குறிப்பிப்புகளை சேர்த்து மீண்டும் முயற்சிக்கவும்." + "ஒரு சமையல் குறிப்பை தேர்ந்தெடுக்கவும்" + "சேர்" + "அகற்று" + "ரத்துசெய்" + "வரிசை விதி" + "செயஂமுறை" + "பொருள்" + "குறிப்பைச் சேர்" + "குறிப்புகள்" + "குறிப்பு" + "சேர்க்கையைச் சேர்" + "சேர்க்கைகள்" + "செய்முறையைச் சேர்" + "செய்முறைகள்" + "செய்முறை" + "பொருளைச் சேர்" + "தேவையான பொருட்கள்" + "தேவையான பொருள்" + "மகசூல் அலகு" + "மகசூல் அளவு" + "சமைக்கும் நேரம்" + "தயாரிப்பு நேரம்" + "பகுப்பு" + "தலைப்பு" + "சமையல் குறிப்பை திருத்து" + "புதிய சமையல் குறிப்பு" + "பா. விஷ்ணு ராகவ்" + "ஆக்கியோன்" + "சிக்கல்கள், பரிந்துரைகள் மற்றும் கருத்துக்களைப் புகாரளிக்க" + "டெலிகிராம் குழுவில் சேரவும்" + "பதிப்பு" + "இந்த பயன்பாட்டின் மூலம் ஏற்றுமதி செய்யப்பட்ட முழு காப்புப்பிரதிகளை ஆதரிக்கும்" + "காப்புப்பிரதியிலிருந்து இறக்குமதி செய்க" + "இது உங்கள் எல்லா தரவையும் கொண்ட ஒரு ஜிப் கோப்பை உருவாக்குகிறது. இந்த கோப்பை மீண்டும் இறக்குமதி செய்யலாம்." + "முழு காப்புப்பிரதியை ஏற்றுமதி செய்க" + "தரவுத்தளம்" + "இருள்" + "வெளிச்சம்" + "தீம்" + "கணினி இயல்புநிலை" + "பயன்பாட்டு மொழி" + "இடைமுகம்" + "உங்கள் தேடல் நீங்கள் முயற்சிக்க வேண்டிய பட்டியலில் உள்ள எந்த சமையல் குறிப்புகளுடனும் பொருந்தவில்ல" + "உங்கள் தேடல் உங்களுக்கு பிடித்தவற்றில் எந்த சமையல் குறிப்புகளுடனும் பொருந்தவில்லைை" + "உங்கள் தேடல் இப்பகுப்பில் எந்த சமையல் குறிப்புகளுடனும் பொருந்தவில்லை" + "உங்கள் தேடல் எந்த சமையல் குறிப்புகளுடனும் பொருந்தவில்லை" + "எந்த சமையல் குறிப்புகளும் இல்லை" + "இந்த பகுப்பில் எந்த சமையல் குறிப்புகளும் இல்லை" + "நீங்கள் பிடித்ததாகக் குறிக்கும் சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்" + "இன்னும் பிடித்தவை எதுவும் இல்லை" + "முயற்சிக்க வேண்டும் என நீங்கள் குறிக்கும் சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்" + "அனைத்தும் செய்யப்பட்டுள்ளன!" + "சில குறிப்புகளைச் சேர்க்க பென்சில் பொத்தானைப் பயன்படுத்தவும்" + "சில சேர்க்கைகளைச் சேர்க்க பென்சில் பொத்தானைப் பயன்படுத்தவும்" + "செய்முறைகளைச் சேர்க்க பென்சில் பொத்தானைப் பயன்படுத்தவும்" + "தேவையான பொருட்களைச் சேர்க்க பென்சில் பொத்தானைப் பயன்படுத்தவும்" + "ஒரு சமையல் குறிப்பைச் சேர்க்க பிளஸ் பொத்தானைப் பயன்படுத்தவும்" + "உங்கள் சமையல் குறிப்புகளைச் சேர்க்கத் தொடங்குங்கள்!" + "பெரிய" + "நடுத்தர" + "சிறிய" + "குச்சி" + "டஜன்" + "துளி" + "கிள்ளு" + "துண்டு" + "பல்" + "இலை" + "அங்குலம்" + "சென்டிமீட்டர்" + "கிலோகிராம்" + "கிராம்" + "மில்லிகிராம்" + "பவுண்டு" + "அவுன்ஸ்" + "லிட்டர்" + "மில்லிலிட்டர்" + "கேலன்" + "குவிண்ட்" + "பைண்ட்" + "கோப்பை" + "திரவ அவுன்ஸ" + "தேக்கரண்டி" + "இனிப்பு ஸ்பூன்" + "டீஸ்பூன்" + "அலகு" + "அலகு" + "ரொட்டித் துண்டு" + "வடை" + "ரோல்" + "லிட்டர்" + "மில்லிலிட்டர்" + "கேலன்" + "கோப்பை" + "கிலோகிராம்" + "கிராம்" + "பவுண்டு" + "அவுன்ஸ்" + "திரவ அவுன்ஸ்" + "தேக்கரண்டி" + "டீஸ்பூன்" + "துண்டு" + "கூறு" + "சைவம்" + "வேகன்" + "வரையறுக்கப்படாதவை" + "சூப்கள்" + "தின்பண்டங்கள்" + "தொடு கறிகள்" + "கடல் உணவு" + "சாஸ்கள்" + "சாலடுகள்" + "சோறு" + "கோழி" + "பாஸ்தா" + "நூடுல்ஸ்" + "இறைச்சி" + "முக்கிய உணவுகள்" + "மதிய உணவு" + "ஆரோக்கியமானவை" + "மதுபானம்" + "இரவு உணவு" + "இனிப்புகள்" + "காலை உணவு" + "ரொட்டிகள்" + "பானங்கள்" + "பார்பிக்யூ" + "பசித்தூண்டி" + "பற்றி" + "அமைப்புகள்" + "பகுப்புகள்" + "உணவுத் திட்டம்" + "பிடித்தவை" + "பின்னர் முயற்சிக்க" + "என்ரெசிபீஸ்" + "என்ரெசிபீஸ்" + "என்ரெசிபீஸ்" + "என்ரெசிபீஸ்" + diff --git a/app/resources/Android/src/main/res/values/strings.xml b/app/resources/Android/src/main/res/values/strings.xml index 0df84bce..a57a1f20 100644 --- a/app/resources/Android/src/main/res/values/strings.xml +++ b/app/resources/Android/src/main/res/values/strings.xml @@ -1,5 +1,291 @@ + "Invalid file:" + "Backup file has been modified externally." + "Backup file seems empty." + "Backup file is incorrect or corrupt." + "Import failed" + "Remove recipe from snacks?" + "Remove recipe from dinner?" + "Remove recipe from lunch?" + "Remove recipe from breakfast?" + "Untitled Recipe" + "Star rating" + "Created" + "Filtered result" + "OK" + "recipes updated" + "recipes already exists" + "recipes imported" + "recipes found" + "Import summary" + "separate with spaces" + "Tags" + "No tags available" + "All Tags" + "All Categories" + "Vietnamese" + "Turkish" + "Thai" + "Swedish" + "Sri Lankan" + "Spanish" + "Scottish" + "Russian" + "Portuguese" + "Nigerian" + "Mexican" + "Korean" + "Kenyan" + "Jewish" + "Japanese" + "Jamaican" + "Italian" + "Irish" + "Indian" + "Greek" + "German" + "French" + "Filipino" + "English" + "Egyptian" + "Danish" + "Chinese" + "British" + "Brazilian" + "American" + "All Cuisines" + "Cuisines" + "Cuisine" + "Are you sure you want to remove" + "Units" + "Remove unit?" + "Remove yield unit?" + "Remove category?" + "Remove cuisine?" + "New unit" + "New cuisine" + "Challenging" + "Moderate" + "Easy" + "Oldest first" + "Newest first" + "Last updated" + "Difficulty level" + "Rating" + "Slowest first" + "Quickest first" + "Your search did not match any recipes in the filtered result" + "Recipe not found" + "Reset successful" + "Reset units list" + "Reset yield units list" + "Reset categories list" + "Reset cuisines list" + "Resetting a list will NOT delete your existing entries but only restores the deleted default entries." + "Reset" + "Helps you choose what to cook when you can\'t decide" + "Shake to view random recipe" + "Options" + "User guide" + "Privacy policy" + "View on GitHub" + "Translator" + "Contributors" + "Shared via EnRecipes. Get it on Play Store or F-Droid." + "Permission denied" + "Import successful" + "Verifying..." + "long time ago" + "months ago" + "weeks ago" + "days ago" + "yesterday" + "today" + "You tried this recipe:" + "snacks" + "dinner" + "lunch" + "breakfast" + "Crop photo" + "REPLACE PHOTO" + "Recipe photo" + "EnRecipes requires storage permission in order to set recipe photo." + "Required" + "New category" + "New yield unit" + "Remove note?" + "Remove combination?" + "Remove instruction?" + "Remove ingredient?" + "KEEP EDITING" + "DISCARD" + "Are you sure you want to discard unsaved changes to this recipe?" + "Unsaved changes" + "Search" + "Are you sure you want to delete the recipe" + "DELETE" + "Delete recipe?" + "Removed from Try Later" + "Added to Try Later" + "Removed from Favourites" + "Added to Favourites" + "Add at least one recipe to perform a backup" + "EnRecipes requires storage permission in order to backup your data to this device." + "CONTINUE" + "NOT NOW" + "EnRecipes requires storage permission in order to import your data from a previous backup." + "Grant permission" + "EnRecipes needs to be restarted for the app language to take effect." + "EnRecipes needs to be restarted for the theme change to take effect." + "RESTART" + "Restart required" + "SET" + "ADD NEW" + "Share" + "Overview" + "Recipe" + "Photo" + "min" + "hr" + "My Healthy Recipe" + "Nothing here! Add some recipes and try again." + "Select a recipe" + "ADD" + "REMOVE" + "CANCEL" + "Sort by" + "Step" + "Item" + "ADD NOTE" + "Notes" + "Note" + "ADD COMBINATION" + "Combinations" + "ADD STEP" + "Instructions" + "Instruction" + "ADD INGREDIENT" + "Ingredients" + "Ingredient" + "Yield measured in" + "Yield quantity" + "Cooking time" + "Preparation time" + "Category" + "Title" + "Edit recipe" + "New recipe" + "Vishnu Raghav B" + "Author" + "for reporting issues, suggestions and feedback" + "Join the Telegram group" + "Version" + "Supports full backups exported by this app" + "Import from backup" + "Generates a zip file that contains all your data. This file can be imported back." + "Export a full backup" + "Database" + "Dark" + "Light" + "Theme" + "System default" + "App language" + "Interface" + "Your search did not match any recipes in your try later list" + "Your search did not match any recipes in your favourites" + "Your search did not match any recipes in this category" + "Your search did not match any recipes" + "No recipes found" + "Category looks empty" + "Recipes you mark as favourite will be listed here" + "No favourites yet" + "Recipes you mark as try later will be listed here" + "All done!" + "Use the pencil button to add some notes" + "Use the pencil button to add some combinations" + "Use the pencil button to add some instructions" + "Use the pencil button to add some ingredients" + "Use the plus button to add one" + "Start adding your recipes!" + "large" + "medium" + "small" + "stick" + "dozen" + "drop" + "pinch" + "piece" + "clove" + "leaf" + "in" + "cm" + "kg" + "g" + "mg" + "lb" + "oz" + "l" + "ml" + "gal" + "qt" + "pt" + "cup" + "fl oz" + "tbsp" + "dsp" + "tsp" + "Unit" + "unit" + "Loaf" + "Patty" + "Roll" + "Litre" + "Millilitre" + "Gallon" + "Cup" + "Kilogram" + "Gram" + "Pound" + "Ounce" + "Fluid Ounce" + "Tablespoon" + "Teaspoon" + "Piece" + "Serving" + "Vegetarian" + "Vegan" + "Undefined" + "Soups" + "Snacks" + "Side dishes" + "Seafood" + "Sauces" + "Salads" + "Rice" + "Poultry" + "Pasta" + "Noodles" + "Meat" + "Main dishes" + "Lunch" + "Healthy" + "Drinks" + "Dinner" + "Desserts" + "Breakfast" + "Breads" + "Beverages" + "Barbecue" + "Appetizers" + "About" + "Settings" + "Categories" + "Meal Planner" + "Favourites" + "Try Later" + "EnRecipes" + "EnRecipes" "EnRecipes" "EnRecipes" diff --git a/platforms/android/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/android/.gradle/6.4/executionHistory/executionHistory.bin index e3cc3891..fda69899 100644 Binary files a/platforms/android/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/android/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/android/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/android/.gradle/6.4/executionHistory/executionHistory.lock index abe4f782..d9d32efa 100644 Binary files a/platforms/android/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/android/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/android/.gradle/6.4/fileContent/fileContent.lock b/platforms/android/.gradle/6.4/fileContent/fileContent.lock index bd68107c..2c0ea3e8 100644 Binary files a/platforms/android/.gradle/6.4/fileContent/fileContent.lock and b/platforms/android/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/android/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/android/.gradle/6.4/fileHashes/fileHashes.bin index 1940cabf..c96df8bf 100644 Binary files a/platforms/android/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/android/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/android/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/android/.gradle/6.4/fileHashes/fileHashes.lock index 3e9a61e2..23c5afbe 100644 Binary files a/platforms/android/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/android/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/android/.gradle/6.4/fileHashes/resourceHashesCache.bin b/platforms/android/.gradle/6.4/fileHashes/resourceHashesCache.bin index 52c8dc16..116984ce 100644 Binary files a/platforms/android/.gradle/6.4/fileHashes/resourceHashesCache.bin and b/platforms/android/.gradle/6.4/fileHashes/resourceHashesCache.bin differ diff --git a/platforms/android/.gradle/6.4/javaCompile/classAnalysis.bin b/platforms/android/.gradle/6.4/javaCompile/classAnalysis.bin index 01e7e13f..f4b82a24 100644 Binary files a/platforms/android/.gradle/6.4/javaCompile/classAnalysis.bin and b/platforms/android/.gradle/6.4/javaCompile/classAnalysis.bin differ diff --git a/platforms/android/.gradle/6.4/javaCompile/jarAnalysis.bin b/platforms/android/.gradle/6.4/javaCompile/jarAnalysis.bin index 24fa6943..d366b18d 100644 Binary files a/platforms/android/.gradle/6.4/javaCompile/jarAnalysis.bin and b/platforms/android/.gradle/6.4/javaCompile/jarAnalysis.bin differ diff --git a/platforms/android/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/android/.gradle/6.4/javaCompile/javaCompile.lock index 930424b6..4be20809 100644 Binary files a/platforms/android/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/android/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/android/.gradle/6.4/javaCompile/taskHistory.bin b/platforms/android/.gradle/6.4/javaCompile/taskHistory.bin index 7680a6e4..e28c7c30 100644 Binary files a/platforms/android/.gradle/6.4/javaCompile/taskHistory.bin and b/platforms/android/.gradle/6.4/javaCompile/taskHistory.bin differ diff --git a/platforms/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 1e696b19..d8a279b7 100644 Binary files a/platforms/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/android/.gradle/buildOutputCleanup/cache.properties b/platforms/android/.gradle/buildOutputCleanup/cache.properties index 2b4015e1..d52b03ba 100644 --- a/platforms/android/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/android/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:27:03 IST 2020 +#Wed Dec 30 13:12:10 IST 2020 gradle.version=6.4 diff --git a/platforms/android/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/android/.gradle/buildOutputCleanup/outputFiles.bin index 3b40e635..47ded199 100644 Binary files a/platforms/android/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/android/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/android/.gradle/checksums/checksums.lock b/platforms/android/.gradle/checksums/checksums.lock index 3a67ba62..abef8ba1 100644 Binary files a/platforms/android/.gradle/checksums/checksums.lock and b/platforms/android/.gradle/checksums/checksums.lock differ diff --git a/platforms/android/.ns-plugins-build-data.json b/platforms/android/.ns-plugins-build-data.json index 3cc81d3c..634095e4 100644 --- a/platforms/android/.ns-plugins-build-data.json +++ b/platforms/android/.ns-plugins-build-data.json @@ -38,8 +38,8 @@ }, "nativescript-plugin-filepicker": { "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-plugin-filepicker/platforms/android/README.md": "45f2f63427be0a461a7e2dfd5ff0ad5bab64068f", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-plugin-filepicker/platforms/android/include.gradle": "06e7e1be49eb6d614094596003280aa7eea789f3", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-plugin-filepicker/platforms/android/nativescript_plugin_filepicker.aar": "e53441dd997d4849f45247b4b4eda20fac860b5d" + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-plugin-filepicker/platforms/android/nativescript_plugin_filepicker.aar": "e53441dd997d4849f45247b4b4eda20fac860b5d", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-plugin-filepicker/platforms/android/include.gradle": "06e7e1be49eb6d614094596003280aa7eea789f3" }, "nativescript-ui-calendar": { "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/nativescript-ui-calendar/platforms/android/typings/calendar.d.ts": "6e196553478b7d7fbe92645b60d0ac7bfa5339db", @@ -68,8 +68,8 @@ }, "@nativescript-community/text": { "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/AndroidManifest.xml": "b80912f909195692d3bd071566274feba0b37660", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/CustomBackgroundSpan.java": "ae9e0e6d699e669f96ed7042f2145a1ab0bf6727", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/CustomTypefaceSpan.java": "421f984280aa806183057f2ddd53febdbc32d2b1", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/CustomBackgroundSpan.java": "ae9e0e6d699e669f96ed7042f2145a1ab0bf6727", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/Font.java": "fb4d246ad367d178e11ef08c34ec182418d30890", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/HtmlToSpannedConverter.java": "38643430e4b8cac690b89a07adc3a86f7060f93d", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/URLSpanNoUnderline.java": "b3da85c1d16eff30c54fb5725e1e46fea265d7ce", diff --git a/platforms/android/.nsprepareinfo b/platforms/android/.nsprepareinfo index 02c468e0..cd3d0f31 100644 --- a/platforms/android/.nsprepareinfo +++ b/platforms/android/.nsprepareinfo @@ -1,7 +1,7 @@ { - "time": "Tue Dec 29 2020 11:28:21 GMT+0530 (India Standard Time)", + "time": "Wed Dec 30 2020 14:50:17 GMT+0530 (India Standard Time)", "nativePlatformStatus": "3", "changesRequireBuild": true, "projectFileHash": "de8936b04a8811e04d93e9717fc4448bf88e2e84157623dd6556d8a57dadf3a1", - "changesRequireBuildTime": "Tue Dec 29 2020 11:28:21 GMT+0530 (India Standard Time)" + "changesRequireBuildTime": "Wed Dec 30 2020 14:50:17 GMT+0530 (India Standard Time)" } \ No newline at end of file diff --git a/platforms/android/app/build/outputs/apk/.nsbuildinfo b/platforms/android/app/build/outputs/apk/.nsbuildinfo index 80f371a9..65ff5035 100644 --- a/platforms/android/app/build/outputs/apk/.nsbuildinfo +++ b/platforms/android/app/build/outputs/apk/.nsbuildinfo @@ -1,4 +1,4 @@ { - "prepareTime": "Tue Dec 29 2020 11:28:21 GMT+0530 (India Standard Time)", - "buildTime": "Tue Dec 29 2020 11:28:48 GMT+0530 (India Standard Time)" + "prepareTime": "Wed Dec 30 2020 14:50:17 GMT+0530 (India Standard Time)", + "buildTime": "Wed Dec 30 2020 14:50:40 GMT+0530 (India Standard Time)" } \ No newline at end of file diff --git a/platforms/android/app/build/outputs/apk/.nshashes b/platforms/android/app/build/outputs/apk/.nshashes index b5c67cea..0e43eaf9 100644 --- a/platforms/android/app/build/outputs/apk/.nshashes +++ b/platforms/android/app/build/outputs/apk/.nshashes @@ -50,8 +50,8 @@ "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/resources/Android/src/main/res/drawable-xxxhdpi/photo.png": "6500603c21d7cc1738db44ba26157ab47b621747", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/resources/Android/src/main/res/drawable-xxxhdpi/plus.png": "02eab956eabbe68bb27973582c569b822f130d2a", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/resources/Android/src/main/res/drawable-xxxhdpi/share.png": "ebe8381c0e77d40abd5f41daf94532248caaa9dc", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/runtime.js": "af307a469f93a9d332e8d059f5929677c4505e47", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/runtime.js": "e46a5b846bc23d10ebce68cde16be7cd70e102f4", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/fonts/boxicons.ttf": "6c9944326ed3c901afcb78a9ed07906f04f9cbb2", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/bundle.js": "d75efaec53f7fc6e02d8ac82ac0c6532f07e86a3", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/bundle.js": "3fbfd0ad9e7ca4368f83a8f1900ecb003c11948a", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/android/app/src/main/assets/app/vendor.js": "cfe29102f0c4d6f7ff8d95a4194ca064f5444a3a" } \ No newline at end of file diff --git a/platforms/android/app/src/main/assets/app/runtime.js b/platforms/android/app/src/main/assets/app/runtime.js index 381fe27b..4e3f0718 100644 --- a/platforms/android/app/src/main/assets/app/runtime.js +++ b/platforms/android/app/src/main/assets/app/runtime.js @@ -83,7 +83,7 @@ /******/ /******/ var hotApplyOnUpdate = true; /******/ // eslint-disable-next-line no-unused-vars -/******/ var hotCurrentHash = "1906ceddfce82e674abc"; +/******/ var hotCurrentHash = "b0b35382a88677fade81"; /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentChildModule; @@ -892,4 +892,4 @@ /******/ }) /************************************************************************/ /******/ ([]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxRQUFRLG9CQUFvQjtRQUM1QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLDRCQUE0QjtRQUM3QztRQUNBO1FBQ0Esa0JBQWtCLDJCQUEyQjtRQUM3QztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsV0FBVztRQUNYO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGVBQWU7UUFDZjtRQUNBO1FBQ0E7UUFDQTtRQUNBLFdBQVc7UUFDWDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLE1BQU07UUFDTjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7O1FBRUw7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsNkJBQTZCO1FBQzdCLDZCQUE2QjtRQUM3QjtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHFCQUFxQixnQkFBZ0I7UUFDckM7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQSxxQkFBcUIsZ0JBQWdCO1FBQ3JDO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0EsS0FBSztRQUNMO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7O1FBRUw7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsS0FBSztRQUNMO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0EsS0FBSzs7UUFFTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0Esa0JBQWtCLDhCQUE4QjtRQUNoRDtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsSUFBSTtRQUNKOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsSUFBSTtRQUNKO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTTtRQUNOO1FBQ0E7UUFDQTtRQUNBLE9BQU87UUFDUDtRQUNBO1FBQ0E7UUFDQTtRQUNBLElBQUk7UUFDSjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxvQkFBb0IsMkJBQTJCO1FBQy9DO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxPQUFPO1FBQ1A7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLG1CQUFtQixjQUFjO1FBQ2pDO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSxnQkFBZ0IsS0FBSztRQUNyQjtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGdCQUFnQixZQUFZO1FBQzVCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0EsY0FBYyw0QkFBNEI7UUFDMUM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxJQUFJOztRQUVKO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTs7UUFFQTtRQUNBO1FBQ0EsZUFBZSw0QkFBNEI7UUFDM0M7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQSxlQUFlLDRCQUE0QjtRQUMzQztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLHVDQUF1QztRQUN4RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLHVDQUF1QztRQUN4RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGlCQUFpQixzQkFBc0I7UUFDdkM7UUFDQTtRQUNBO1FBQ0EsUUFBUTtRQUNSO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFVBQVU7UUFDVjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxjQUFjLHdDQUF3QztRQUN0RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0EsT0FBTztRQUNQO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFNBQVM7UUFDVDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFFBQVE7UUFDUjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTTtRQUNOO1FBQ0EsS0FBSztRQUNMOztRQUVBO1FBQ0E7UUFDQTtRQUNBLElBQUk7UUFDSjs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsZUFBZTtRQUNmO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOztRQUVBO1FBQ0Esc0NBQXNDLHVCQUF1Qjs7UUFFN0Q7UUFDQTtRQUNBO1FBQ0E7UUFDQSxnQkFBZ0IsdUJBQXVCO1FBQ3ZDOzs7UUFHQTtRQUNBIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGRhdGEpIHtcbiBcdFx0dmFyIGNodW5rSWRzID0gZGF0YVswXTtcbiBcdFx0dmFyIG1vcmVNb2R1bGVzID0gZGF0YVsxXTtcbiBcdFx0dmFyIGV4ZWN1dGVNb2R1bGVzID0gZGF0YVsyXTtcbiBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4gXHRcdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdO1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbiBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbiBcdFx0XHR9XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oZGF0YSk7XG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aCkge1xuIFx0XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbiBcdFx0fVxuXG4gXHRcdC8vIGFkZCBlbnRyeSBtb2R1bGVzIGZyb20gbG9hZGVkIGNodW5rIHRvIGRlZmVycmVkIGxpc3RcbiBcdFx0ZGVmZXJyZWRNb2R1bGVzLnB1c2guYXBwbHkoZGVmZXJyZWRNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyB8fCBbXSk7XG5cbiBcdFx0Ly8gcnVuIGRlZmVycmVkIG1vZHVsZXMgd2hlbiBhbGwgY2h1bmtzIHJlYWR5XG4gXHRcdHJldHVybiBjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIFx0fTtcbiBcdGZ1bmN0aW9uIGNoZWNrRGVmZXJyZWRNb2R1bGVzKCkge1xuIFx0XHR2YXIgcmVzdWx0O1xuIFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0dmFyIGRlZmVycmVkTW9kdWxlID0gZGVmZXJyZWRNb2R1bGVzW2ldO1xuIFx0XHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuIFx0XHRcdGZvcih2YXIgaiA9IDE7IGogPCBkZWZlcnJlZE1vZHVsZS5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGRlcElkID0gZGVmZXJyZWRNb2R1bGVbal07XG4gXHRcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbZGVwSWRdICE9PSAwKSBmdWxmaWxsZWQgPSBmYWxzZTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYoZnVsZmlsbGVkKSB7XG4gXHRcdFx0XHRkZWZlcnJlZE1vZHVsZXMuc3BsaWNlKGktLSwgMSk7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGRlZmVycmVkTW9kdWxlWzBdKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH1cbiBcdGZ1bmN0aW9uIGhvdERpc3Bvc2VDaHVuayhjaHVua0lkKSB7XG4gXHQgICAgZGVsZXRlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdH1cbiBcdHZhciBwYXJlbnRIb3RVcGRhdGVDYWxsYmFjayA9IGdsb2JhbFtcIndlYnBhY2tIb3RVcGRhdGVcIl07XG4gXHRnbG9iYWxbXCJ3ZWJwYWNrSG90VXBkYXRlXCJdID0gICAgIGZ1bmN0aW9uIHdlYnBhY2tIb3RVcGRhdGVDYWxsYmFjayhjaHVua0lkLCBtb3JlTW9kdWxlcykge1xuIFx0ICAgICAgICBob3RBZGRVcGRhdGVDaHVuayhjaHVua0lkLCBtb3JlTW9kdWxlcyk7XG4gXHQgICAgICAgIGlmIChwYXJlbnRIb3RVcGRhdGVDYWxsYmFjaykge1xuIFx0ICAgICAgICAgICAgcGFyZW50SG90VXBkYXRlQ2FsbGJhY2soY2h1bmtJZCwgbW9yZU1vZHVsZXMpO1xuIFx0ICAgICAgICB9XG4gXHQgICAgfVxuXG4gXHQgICAgZnVuY3Rpb24gaG90RG93bmxvYWRVcGRhdGVDaHVuayhjaHVua0lkKSB7XG4gXHQgICAgICAgIGNvbnN0IHJlcXVlc3RQYXRoID0gJy4vJyArIFwiXCIgKyBjaHVua0lkICsgXCIuXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNcIjtcbiBcdCAgICAgICAgdHJ5IHtcbiBcdCAgICAgICAgICAgIHJlcXVpcmUocmVxdWVzdFBhdGgpO1xuIFx0ICAgICAgICB9IGNhdGNoIChlKSB7XG4gXHQgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkhvdCBkb3dubG9hZCBmb3IgdXBkYXRlIGNodW5rIGZhaWxlZC5cIik7XG4gXHQgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuIFx0ICAgICAgICB9XG4gXHQgICAgfVxuXG4gXHQgICAgZnVuY3Rpb24gaG90RG93bmxvYWRNYW5pZmVzdCgpIHtcbiBcdCAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiBcdCAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RQYXRoID0gJy4vJyArIFwiXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNvblwiO1xuIFx0ICAgICAgICAgICAgdHJ5IHtcbiBcdCAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGUgPSByZXF1aXJlKHJlcXVlc3RQYXRoKTtcbiBcdCAgICAgICAgICAgICAgICByZXNvbHZlKHVwZGF0ZSk7XG4gXHQgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gXHQgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJIb3QgZG93bmxvYWQgZm9yIG1hbmlmZXN0IGZhaWxlZC5cIik7XG4gXHQgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiBcdCAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gXHQgICAgICAgICAgICB9XG4gXHQgICAgICAgIH0pO1xuIFx0ICAgIH1cblxuIFx0dmFyIGhvdEFwcGx5T25VcGRhdGUgPSB0cnVlO1xuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHR2YXIgaG90Q3VycmVudEhhc2ggPSBcIjE5MDZjZWRkZmNlODJlNjc0YWJjXCI7XG4gXHR2YXIgaG90UmVxdWVzdFRpbWVvdXQgPSAxMDAwMDtcbiBcdHZhciBob3RDdXJyZW50TW9kdWxlRGF0YSA9IHt9O1xuIFx0dmFyIGhvdEN1cnJlbnRDaGlsZE1vZHVsZTtcbiBcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0dmFyIGhvdEN1cnJlbnRQYXJlbnRzID0gW107XG4gXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiBcdHZhciBob3RDdXJyZW50UGFyZW50c1RlbXAgPSBbXTtcblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSB7XG4gXHRcdHZhciBtZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRpZiAoIW1lKSByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXztcbiBcdFx0dmFyIGZuID0gZnVuY3Rpb24ocmVxdWVzdCkge1xuIFx0XHRcdGlmIChtZS5ob3QuYWN0aXZlKSB7XG4gXHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XSkge1xuIFx0XHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpID09PSAtMSkge1xuIFx0XHRcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0ucGFyZW50cy5wdXNoKG1vZHVsZUlkKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xuIFx0XHRcdFx0XHRob3RDdXJyZW50Q2hpbGRNb2R1bGUgPSByZXF1ZXN0O1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKG1lLmNoaWxkcmVuLmluZGV4T2YocmVxdWVzdCkgPT09IC0xKSB7XG4gXHRcdFx0XHRcdG1lLmNoaWxkcmVuLnB1c2gocmVxdWVzdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGNvbnNvbGUud2FybihcbiBcdFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgK1xuIFx0XHRcdFx0XHRcdHJlcXVlc3QgK1xuIFx0XHRcdFx0XHRcdFwiKSBmcm9tIGRpc3Bvc2VkIG1vZHVsZSBcIiArXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWRcbiBcdFx0XHRcdCk7XG4gXHRcdFx0XHRob3RDdXJyZW50UGFyZW50cyA9IFtdO1xuIFx0XHRcdH1cbiBcdFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhyZXF1ZXN0KTtcbiBcdFx0fTtcbiBcdFx0dmFyIE9iamVjdEZhY3RvcnkgPSBmdW5jdGlvbiBPYmplY3RGYWN0b3J5KG5hbWUpIHtcbiBcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG4gXHRcdFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fW25hbWVdO1xuIFx0XHRcdFx0fSxcbiBcdFx0XHRcdHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiBcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfX1tuYW1lXSA9IHZhbHVlO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH07XG4gXHRcdH07XG4gXHRcdGZvciAodmFyIG5hbWUgaW4gX193ZWJwYWNrX3JlcXVpcmVfXykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfX3dlYnBhY2tfcmVxdWlyZV9fLCBuYW1lKSAmJlxuIFx0XHRcdFx0bmFtZSAhPT0gXCJlXCIgJiZcbiBcdFx0XHRcdG5hbWUgIT09IFwidFwiXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIG5hbWUsIE9iamVjdEZhY3RvcnkobmFtZSkpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRmbi5lID0gZnVuY3Rpb24oY2h1bmtJZCkge1xuIFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicmVhZHlcIikgaG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbiBcdFx0XHRob3RDaHVua3NMb2FkaW5nKys7XG4gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZShjaHVua0lkKS50aGVuKGZpbmlzaENodW5rTG9hZGluZywgZnVuY3Rpb24oZXJyKSB7XG4gXHRcdFx0XHRmaW5pc2hDaHVua0xvYWRpbmcoKTtcbiBcdFx0XHRcdHRocm93IGVycjtcbiBcdFx0XHR9KTtcblxuIFx0XHRcdGZ1bmN0aW9uIGZpbmlzaENodW5rTG9hZGluZygpIHtcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmctLTtcbiBcdFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicHJlcGFyZVwiKSB7XG4gXHRcdFx0XHRcdGlmICghaG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRcdFx0aG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0aWYgKGhvdENodW5rc0xvYWRpbmcgPT09IDAgJiYgaG90V2FpdGluZ0ZpbGVzID09PSAwKSB7XG4gXHRcdFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRmbi50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0XHRpZiAobW9kZSAmIDEpIHZhbHVlID0gZm4odmFsdWUpO1xuIFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLnQodmFsdWUsIG1vZGUgJiB+MSk7XG4gXHRcdH07XG4gXHRcdHJldHVybiBmbjtcbiBcdH1cblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVNb2R1bGUobW9kdWxlSWQpIHtcbiBcdFx0dmFyIGhvdCA9IHtcbiBcdFx0XHQvLyBwcml2YXRlIHN0dWZmXG4gXHRcdFx0X2FjY2VwdGVkRGVwZW5kZW5jaWVzOiB7fSxcbiBcdFx0XHRfZGVjbGluZWREZXBlbmRlbmNpZXM6IHt9LFxuIFx0XHRcdF9zZWxmQWNjZXB0ZWQ6IGZhbHNlLFxuIFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxuIFx0XHRcdF9zZWxmSW52YWxpZGF0ZWQ6IGZhbHNlLFxuIFx0XHRcdF9kaXNwb3NlSGFuZGxlcnM6IFtdLFxuIFx0XHRcdF9tYWluOiBob3RDdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkLFxuXG4gXHRcdFx0Ly8gTW9kdWxlIEFQSVxuIFx0XHRcdGFjdGl2ZTogdHJ1ZSxcbiBcdFx0XHRhY2NlcHQ6IGZ1bmN0aW9uKGRlcCwgY2FsbGJhY2spIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmQWNjZXB0ZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJmdW5jdGlvblwiKSBob3QuX3NlbGZBY2NlcHRlZCA9IGRlcDtcbiBcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBkZXAgPT09IFwib2JqZWN0XCIpXG4gXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKVxuIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0XHRlbHNlIGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0fSxcbiBcdFx0XHRkZWNsaW5lOiBmdW5jdGlvbihkZXApIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmRGVjbGluZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIilcbiBcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZXAubGVuZ3RoOyBpKyspXG4gXHRcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBbaV1dID0gdHJ1ZTtcbiBcdFx0XHRcdGVsc2UgaG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBdID0gdHJ1ZTtcbiBcdFx0XHR9LFxuIFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gXHRcdFx0XHRob3QuX2Rpc3Bvc2VIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTtcbiBcdFx0XHR9LFxuIFx0XHRcdGFkZERpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xuIFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XG4gXHRcdFx0fSxcbiBcdFx0XHRyZW1vdmVEaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiBcdFx0XHRcdHZhciBpZHggPSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5pbmRleE9mKGNhbGxiYWNrKTtcbiBcdFx0XHRcdGlmIChpZHggPj0gMCkgaG90Ll9kaXNwb3NlSGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0fSxcbiBcdFx0XHRpbnZhbGlkYXRlOiBmdW5jdGlvbigpIHtcbiBcdFx0XHRcdHRoaXMuX3NlbGZJbnZhbGlkYXRlZCA9IHRydWU7XG4gXHRcdFx0XHRzd2l0Y2ggKGhvdFN0YXR1cykge1xuIFx0XHRcdFx0XHRjYXNlIFwiaWRsZVwiOlxuIFx0XHRcdFx0XHRcdGhvdFVwZGF0ZSA9IHt9O1xuIFx0XHRcdFx0XHRcdGhvdFVwZGF0ZVttb2R1bGVJZF0gPSBtb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdFx0XHRob3RTZXRTdGF0dXMoXCJyZWFkeVwiKTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcInJlYWR5XCI6XG4gXHRcdFx0XHRcdFx0aG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZShtb2R1bGVJZCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJwcmVwYXJlXCI6XG4gXHRcdFx0XHRcdGNhc2UgXCJjaGVja1wiOlxuIFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZVwiOlxuIFx0XHRcdFx0XHRjYXNlIFwiYXBwbHlcIjpcbiBcdFx0XHRcdFx0XHQoaG90UXVldWVkSW52YWxpZGF0ZWRNb2R1bGVzID1cbiBcdFx0XHRcdFx0XHRcdGhvdFF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcyB8fCBbXSkucHVzaChtb2R1bGVJZCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGRlZmF1bHQ6XG4gXHRcdFx0XHRcdFx0Ly8gaWdub3JlIHJlcXVlc3RzIGluIGVycm9yIHN0YXRlc1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH0sXG5cbiBcdFx0XHQvLyBNYW5hZ2VtZW50IEFQSVxuIFx0XHRcdGNoZWNrOiBob3RDaGVjayxcbiBcdFx0XHRhcHBseTogaG90QXBwbHksXG4gXHRcdFx0c3RhdHVzOiBmdW5jdGlvbihsKSB7XG4gXHRcdFx0XHRpZiAoIWwpIHJldHVybiBob3RTdGF0dXM7XG4gXHRcdFx0XHRob3RTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuIFx0XHRcdH0sXG4gXHRcdFx0YWRkU3RhdHVzSGFuZGxlcjogZnVuY3Rpb24obCkge1xuIFx0XHRcdFx0aG90U3RhdHVzSGFuZGxlcnMucHVzaChsKTtcbiBcdFx0XHR9LFxuIFx0XHRcdHJlbW92ZVN0YXR1c0hhbmRsZXI6IGZ1bmN0aW9uKGwpIHtcbiBcdFx0XHRcdHZhciBpZHggPSBob3RTdGF0dXNIYW5kbGVycy5pbmRleE9mKGwpO1xuIFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBob3RTdGF0dXNIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbiBcdFx0XHR9LFxuXG4gXHRcdFx0Ly9pbmhlcml0IGZyb20gcHJldmlvdXMgZGlzcG9zZSBjYWxsXG4gXHRcdFx0ZGF0YTogaG90Q3VycmVudE1vZHVsZURhdGFbbW9kdWxlSWRdXG4gXHRcdH07XG4gXHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IHVuZGVmaW5lZDtcbiBcdFx0cmV0dXJuIGhvdDtcbiBcdH1cblxuIFx0dmFyIGhvdFN0YXR1c0hhbmRsZXJzID0gW107XG4gXHR2YXIgaG90U3RhdHVzID0gXCJpZGxlXCI7XG5cbiBcdGZ1bmN0aW9uIGhvdFNldFN0YXR1cyhuZXdTdGF0dXMpIHtcbiBcdFx0aG90U3RhdHVzID0gbmV3U3RhdHVzO1xuIFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGhvdFN0YXR1c0hhbmRsZXJzLmxlbmd0aDsgaSsrKVxuIFx0XHRcdGhvdFN0YXR1c0hhbmRsZXJzW2ldLmNhbGwobnVsbCwgbmV3U3RhdHVzKTtcbiBcdH1cblxuIFx0Ly8gd2hpbGUgZG93bmxvYWRpbmdcbiBcdHZhciBob3RXYWl0aW5nRmlsZXMgPSAwO1xuIFx0dmFyIGhvdENodW5rc0xvYWRpbmcgPSAwO1xuIFx0dmFyIGhvdFdhaXRpbmdGaWxlc01hcCA9IHt9O1xuIFx0dmFyIGhvdFJlcXVlc3RlZEZpbGVzTWFwID0ge307XG4gXHR2YXIgaG90QXZhaWxhYmxlRmlsZXNNYXAgPSB7fTtcbiBcdHZhciBob3REZWZlcnJlZDtcblxuIFx0Ly8gVGhlIHVwZGF0ZSBpbmZvXG4gXHR2YXIgaG90VXBkYXRlLCBob3RVcGRhdGVOZXdIYXNoLCBob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXM7XG5cbiBcdGZ1bmN0aW9uIHRvTW9kdWxlSWQoaWQpIHtcbiBcdFx0dmFyIGlzTnVtYmVyID0gK2lkICsgXCJcIiA9PT0gaWQ7XG4gXHRcdHJldHVybiBpc051bWJlciA/ICtpZCA6IGlkO1xuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RDaGVjayhhcHBseSkge1xuIFx0XHRpZiAoaG90U3RhdHVzICE9PSBcImlkbGVcIikge1xuIFx0XHRcdHRocm93IG5ldyBFcnJvcihcImNoZWNrKCkgaXMgb25seSBhbGxvd2VkIGluIGlkbGUgc3RhdHVzXCIpO1xuIFx0XHR9XG4gXHRcdGhvdEFwcGx5T25VcGRhdGUgPSBhcHBseTtcbiBcdFx0aG90U2V0U3RhdHVzKFwiY2hlY2tcIik7XG4gXHRcdHJldHVybiBob3REb3dubG9hZE1hbmlmZXN0KGhvdFJlcXVlc3RUaW1lb3V0KS50aGVuKGZ1bmN0aW9uKHVwZGF0ZSkge1xuIFx0XHRcdGlmICghdXBkYXRlKSB7XG4gXHRcdFx0XHRob3RTZXRTdGF0dXMoaG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZXMoKSA/IFwicmVhZHlcIiA6IFwiaWRsZVwiKTtcbiBcdFx0XHRcdHJldHVybiBudWxsO1xuIFx0XHRcdH1cbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcCA9IHt9O1xuIFx0XHRcdGhvdFdhaXRpbmdGaWxlc01hcCA9IHt9O1xuIFx0XHRcdGhvdEF2YWlsYWJsZUZpbGVzTWFwID0gdXBkYXRlLmM7XG4gXHRcdFx0aG90VXBkYXRlTmV3SGFzaCA9IHVwZGF0ZS5oO1xuXG4gXHRcdFx0aG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbiBcdFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdFx0aG90RGVmZXJyZWQgPSB7XG4gXHRcdFx0XHRcdHJlc29sdmU6IHJlc29sdmUsXG4gXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG4gXHRcdFx0XHR9O1xuIFx0XHRcdH0pO1xuIFx0XHRcdGhvdFVwZGF0ZSA9IHt9O1xuIFx0XHRcdGZvcih2YXIgY2h1bmtJZCBpbiBpbnN0YWxsZWRDaHVua3MpXG4gXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvbmUtYmxvY2tzXG4gXHRcdFx0e1xuIFx0XHRcdFx0aG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0fVxuIFx0XHRcdGlmIChcbiBcdFx0XHRcdGhvdFN0YXR1cyA9PT0gXCJwcmVwYXJlXCIgJiZcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmcgPT09IDAgJiZcbiBcdFx0XHRcdGhvdFdhaXRpbmdGaWxlcyA9PT0gMFxuIFx0XHRcdCkge1xuIFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xuIFx0XHRcdH1cbiBcdFx0XHRyZXR1cm4gcHJvbWlzZTtcbiBcdFx0fSk7XG4gXHR9XG5cbiBcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0ZnVuY3Rpb24gaG90QWRkVXBkYXRlQ2h1bmsoY2h1bmtJZCwgbW9yZU1vZHVsZXMpIHtcbiBcdFx0aWYgKCFob3RBdmFpbGFibGVGaWxlc01hcFtjaHVua0lkXSB8fCAhaG90UmVxdWVzdGVkRmlsZXNNYXBbY2h1bmtJZF0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSA9IGZhbHNlO1xuIFx0XHRmb3IgKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0aG90VXBkYXRlW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0aWYgKC0taG90V2FpdGluZ0ZpbGVzID09PSAwICYmIGhvdENodW5rc0xvYWRpbmcgPT09IDApIHtcbiBcdFx0XHRob3RVcGRhdGVEb3dubG9hZGVkKCk7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCkge1xuIFx0XHRpZiAoIWhvdEF2YWlsYWJsZUZpbGVzTWFwW2NodW5rSWRdKSB7XG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdID0gdHJ1ZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSA9IHRydWU7XG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzKys7XG4gXHRcdFx0aG90RG93bmxvYWRVcGRhdGVDaHVuayhjaHVua0lkKTtcbiBcdFx0fVxuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RVcGRhdGVEb3dubG9hZGVkKCkge1xuIFx0XHRob3RTZXRTdGF0dXMoXCJyZWFkeVwiKTtcbiBcdFx0dmFyIGRlZmVycmVkID0gaG90RGVmZXJyZWQ7XG4gXHRcdGhvdERlZmVycmVkID0gbnVsbDtcbiBcdFx0aWYgKCFkZWZlcnJlZCkgcmV0dXJuO1xuIFx0XHRpZiAoaG90QXBwbHlPblVwZGF0ZSkge1xuIFx0XHRcdC8vIFdyYXAgZGVmZXJyZWQgb2JqZWN0IGluIFByb21pc2UgdG8gbWFyayBpdCBhcyBhIHdlbGwtaGFuZGxlZCBQcm9taXNlIHRvXG4gXHRcdFx0Ly8gYXZvaWQgdHJpZ2dlcmluZyB1bmNhdWdodCBleGNlcHRpb24gd2FybmluZyBpbiBDaHJvbWUuXG4gXHRcdFx0Ly8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ2NTY2NlxuIFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG4gXHRcdFx0XHQudGhlbihmdW5jdGlvbigpIHtcbiBcdFx0XHRcdFx0cmV0dXJuIGhvdEFwcGx5KGhvdEFwcGx5T25VcGRhdGUpO1xuIFx0XHRcdFx0fSlcbiBcdFx0XHRcdC50aGVuKFxuIFx0XHRcdFx0XHRmdW5jdGlvbihyZXN1bHQpIHtcbiBcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gXHRcdFx0XHRcdH0sXG4gXHRcdFx0XHRcdGZ1bmN0aW9uKGVycikge1xuIFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdChlcnIpO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbiBcdFx0XHRmb3IgKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcbiBcdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaG90VXBkYXRlLCBpZCkpIHtcbiBcdFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzLnB1c2godG9Nb2R1bGVJZChpZCkpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKG91dGRhdGVkTW9kdWxlcyk7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90QXBwbHkob3B0aW9ucykge1xuIFx0XHRpZiAoaG90U3RhdHVzICE9PSBcInJlYWR5XCIpXG4gXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiYXBwbHkoKSBpcyBvbmx5IGFsbG93ZWQgaW4gcmVhZHkgc3RhdHVzXCIpO1xuIFx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiBcdFx0cmV0dXJuIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucyk7XG4gXHR9XG5cbiBcdGZ1bmN0aW9uIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucykge1xuIFx0XHRob3RBcHBseUludmFsaWRhdGVkTW9kdWxlcygpO1xuXG4gXHRcdHZhciBjYjtcbiBcdFx0dmFyIGk7XG4gXHRcdHZhciBqO1xuIFx0XHR2YXIgbW9kdWxlO1xuIFx0XHR2YXIgbW9kdWxlSWQ7XG5cbiBcdFx0ZnVuY3Rpb24gZ2V0QWZmZWN0ZWRTdHVmZih1cGRhdGVNb2R1bGVJZCkge1xuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xuIFx0XHRcdHZhciBvdXRkYXRlZERlcGVuZGVuY2llcyA9IHt9O1xuXG4gXHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLm1hcChmdW5jdGlvbihpZCkge1xuIFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXG4gXHRcdFx0XHRcdGlkOiBpZFxuIFx0XHRcdFx0fTtcbiBcdFx0XHR9KTtcbiBcdFx0XHR3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuIFx0XHRcdFx0dmFyIHF1ZXVlSXRlbSA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xuIFx0XHRcdFx0dmFyIGNoYWluID0gcXVldWVJdGVtLmNoYWluO1xuIFx0XHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRpZiAoXG4gXHRcdFx0XHRcdCFtb2R1bGUgfHxcbiBcdFx0XHRcdFx0KG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZCAmJiAhbW9kdWxlLmhvdC5fc2VsZkludmFsaWRhdGVkKVxuIFx0XHRcdFx0KVxuIFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdGlmIChtb2R1bGUuaG90Ll9zZWxmRGVjbGluZWQpIHtcbiBcdFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtZGVjbGluZWRcIixcbiBcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4sXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4gXHRcdFx0XHRcdH07XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpZiAobW9kdWxlLmhvdC5fbWFpbikge1xuIFx0XHRcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0XHRcdHR5cGU6IFwidW5hY2NlcHRlZFwiLFxuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcbiBcdFx0XHRcdFx0fTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlLnBhcmVudHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdFx0dmFyIHBhcmVudElkID0gbW9kdWxlLnBhcmVudHNbaV07XG4gXHRcdFx0XHRcdHZhciBwYXJlbnQgPSBpbnN0YWxsZWRNb2R1bGVzW3BhcmVudElkXTtcbiBcdFx0XHRcdFx0aWYgKCFwYXJlbnQpIGNvbnRpbnVlO1xuIFx0XHRcdFx0XHRpZiAocGFyZW50LmhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGVjbGluZWRcIixcbiBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXG4gXHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXG4gXHRcdFx0XHRcdFx0XHRwYXJlbnRJZDogcGFyZW50SWRcbiBcdFx0XHRcdFx0XHR9O1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGlmIChvdXRkYXRlZE1vZHVsZXMuaW5kZXhPZihwYXJlbnRJZCkgIT09IC0xKSBjb250aW51ZTtcbiBcdFx0XHRcdFx0aWYgKHBhcmVudC5ob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSkge1xuIFx0XHRcdFx0XHRcdGlmICghb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdKVxuIFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdID0gW107XG4gXHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdLCBbbW9kdWxlSWRdKTtcbiBcdFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRkZWxldGUgb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdO1xuIFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaChwYXJlbnRJZCk7XG4gXHRcdFx0XHRcdHF1ZXVlLnB1c2goe1xuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXG4gXHRcdFx0XHRcdFx0aWQ6IHBhcmVudElkXG4gXHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cblxuIFx0XHRcdHJldHVybiB7XG4gXHRcdFx0XHR0eXBlOiBcImFjY2VwdGVkXCIsXG4gXHRcdFx0XHRtb2R1bGVJZDogdXBkYXRlTW9kdWxlSWQsXG4gXHRcdFx0XHRvdXRkYXRlZE1vZHVsZXM6IG91dGRhdGVkTW9kdWxlcyxcbiBcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzOiBvdXRkYXRlZERlcGVuZGVuY2llc1xuIFx0XHRcdH07XG4gXHRcdH1cblxuIFx0XHRmdW5jdGlvbiBhZGRBbGxUb1NldChhLCBiKSB7XG4gXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHR2YXIgaXRlbSA9IGJbaV07XG4gXHRcdFx0XHRpZiAoYS5pbmRleE9mKGl0ZW0pID09PSAtMSkgYS5wdXNoKGl0ZW0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIGF0IGJlZ2luIGFsbCB1cGRhdGVzIG1vZHVsZXMgYXJlIG91dGRhdGVkXG4gXHRcdC8vIHRoZSBcIm91dGRhdGVkXCIgc3RhdHVzIGNhbiBwcm9wYWdhdGUgdG8gcGFyZW50cyBpZiB0aGV5IGRvbid0IGFjY2VwdCB0aGUgY2hpbGRyZW5cbiBcdFx0dmFyIG91dGRhdGVkRGVwZW5kZW5jaWVzID0ge307XG4gXHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbiBcdFx0dmFyIGFwcGxpZWRVcGRhdGUgPSB7fTtcblxuIFx0XHR2YXIgd2FyblVuZXhwZWN0ZWRSZXF1aXJlID0gZnVuY3Rpb24gd2FyblVuZXhwZWN0ZWRSZXF1aXJlKCkge1xuIFx0XHRcdGNvbnNvbGUud2FybihcbiBcdFx0XHRcdFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgcmVzdWx0Lm1vZHVsZUlkICsgXCIpIHRvIGRpc3Bvc2VkIG1vZHVsZVwiXG4gXHRcdFx0KTtcbiBcdFx0fTtcblxuIFx0XHRmb3IgKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcbiBcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhvdFVwZGF0ZSwgaWQpKSB7XG4gXHRcdFx0XHRtb2R1bGVJZCA9IHRvTW9kdWxlSWQoaWQpO1xuIFx0XHRcdFx0LyoqIEB0eXBlIHtUT0RPfSAqL1xuIFx0XHRcdFx0dmFyIHJlc3VsdDtcbiBcdFx0XHRcdGlmIChob3RVcGRhdGVbaWRdKSB7XG4gXHRcdFx0XHRcdHJlc3VsdCA9IGdldEFmZmVjdGVkU3R1ZmYobW9kdWxlSWQpO1xuIFx0XHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdFx0cmVzdWx0ID0ge1xuIFx0XHRcdFx0XHRcdHR5cGU6IFwiZGlzcG9zZWRcIixcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogaWRcbiBcdFx0XHRcdFx0fTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdC8qKiBAdHlwZSB7RXJyb3J8ZmFsc2V9ICovXG4gXHRcdFx0XHR2YXIgYWJvcnRFcnJvciA9IGZhbHNlO1xuIFx0XHRcdFx0dmFyIGRvQXBwbHkgPSBmYWxzZTtcbiBcdFx0XHRcdHZhciBkb0Rpc3Bvc2UgPSBmYWxzZTtcbiBcdFx0XHRcdHZhciBjaGFpbkluZm8gPSBcIlwiO1xuIFx0XHRcdFx0aWYgKHJlc3VsdC5jaGFpbikge1xuIFx0XHRcdFx0XHRjaGFpbkluZm8gPSBcIlxcblVwZGF0ZSBwcm9wYWdhdGlvbjogXCIgKyByZXN1bHQuY2hhaW4uam9pbihcIiAtPiBcIik7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRzd2l0Y2ggKHJlc3VsdC50eXBlKSB7XG4gXHRcdFx0XHRcdGNhc2UgXCJzZWxmLWRlY2xpbmVkXCI6XG4gXHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25EZWNsaW5lZCkgb3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxuIFx0XHRcdFx0XHRcdFx0YWJvcnRFcnJvciA9IG5ldyBFcnJvcihcbiBcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2Ugb2Ygc2VsZiBkZWNsaW5lOiBcIiArXG4gXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm1vZHVsZUlkICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRjaGFpbkluZm9cbiBcdFx0XHRcdFx0XHRcdCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJkZWNsaW5lZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRGVjbGluZWQpIG9wdGlvbnMub25EZWNsaW5lZChyZXN1bHQpO1xuIFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVEZWNsaW5lZClcbiBcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXG4gXHRcdFx0XHRcdFx0XHRcdFwiQWJvcnRlZCBiZWNhdXNlIG9mIGRlY2xpbmVkIGRlcGVuZGVuY3k6IFwiICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQubW9kdWxlSWQgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdFwiIGluIFwiICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQucGFyZW50SWQgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdGNoYWluSW5mb1xuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcInVuYWNjZXB0ZWRcIjpcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vblVuYWNjZXB0ZWQpIG9wdGlvbnMub25VbmFjY2VwdGVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZVVuYWNjZXB0ZWQpXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuIFx0XHRcdFx0XHRcdFx0XHRcIkFib3J0ZWQgYmVjYXVzZSBcIiArIG1vZHVsZUlkICsgXCIgaXMgbm90IGFjY2VwdGVkXCIgKyBjaGFpbkluZm9cbiBcdFx0XHRcdFx0XHRcdCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJhY2NlcHRlZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uQWNjZXB0ZWQpIG9wdGlvbnMub25BY2NlcHRlZChyZXN1bHQpO1xuIFx0XHRcdFx0XHRcdGRvQXBwbHkgPSB0cnVlO1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZWRcIjpcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRpc3Bvc2VkKSBvcHRpb25zLm9uRGlzcG9zZWQocmVzdWx0KTtcbiBcdFx0XHRcdFx0XHRkb0Rpc3Bvc2UgPSB0cnVlO1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0XHRkZWZhdWx0OlxuIFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuZXhjZXB0aW9uIHR5cGUgXCIgKyByZXN1bHQudHlwZSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpZiAoYWJvcnRFcnJvcikge1xuIFx0XHRcdFx0XHRob3RTZXRTdGF0dXMoXCJhYm9ydFwiKTtcbiBcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGFib3J0RXJyb3IpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKGRvQXBwbHkpIHtcbiBcdFx0XHRcdFx0YXBwbGllZFVwZGF0ZVttb2R1bGVJZF0gPSBob3RVcGRhdGVbbW9kdWxlSWRdO1xuIFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIHJlc3VsdC5vdXRkYXRlZE1vZHVsZXMpO1xuIFx0XHRcdFx0XHRmb3IgKG1vZHVsZUlkIGluIHJlc3VsdC5vdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdFx0XHRcdGlmIChcbiBcdFx0XHRcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChcbiBcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzLFxuIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZFxuIFx0XHRcdFx0XHRcdFx0KVxuIFx0XHRcdFx0XHRcdCkge1xuIFx0XHRcdFx0XHRcdFx0aWYgKCFvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pXG4gXHRcdFx0XHRcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSA9IFtdO1xuIFx0XHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQoXG4gXHRcdFx0XHRcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSxcbiBcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXVxuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGlmIChkb0Rpc3Bvc2UpIHtcbiBcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWRNb2R1bGVzLCBbcmVzdWx0Lm1vZHVsZUlkXSk7XG4gXHRcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdID0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIFN0b3JlIHNlbGYgYWNjZXB0ZWQgb3V0ZGF0ZWQgbW9kdWxlcyB0byByZXF1aXJlIHRoZW0gbGF0ZXIgYnkgdGhlIG1vZHVsZSBzeXN0ZW1cbiBcdFx0dmFyIG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcyA9IFtdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIDwgb3V0ZGF0ZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0bW9kdWxlSWQgPSBvdXRkYXRlZE1vZHVsZXNbaV07XG4gXHRcdFx0aWYgKFxuIFx0XHRcdFx0aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gJiZcbiBcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkFjY2VwdGVkICYmXG4gXHRcdFx0XHQvLyByZW1vdmVkIHNlbGYtYWNjZXB0ZWQgbW9kdWxlcyBzaG91bGQgbm90IGJlIHJlcXVpcmVkXG4gXHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSAhPT0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlICYmXG4gXHRcdFx0XHQvLyB3aGVuIGNhbGxlZCBpbnZhbGlkYXRlIHNlbGYtYWNjZXB0aW5nIGlzIG5vdCBwb3NzaWJsZVxuIFx0XHRcdFx0IWluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkludmFsaWRhdGVkXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMucHVzaCh7XG4gXHRcdFx0XHRcdG1vZHVsZTogbW9kdWxlSWQsXG4gXHRcdFx0XHRcdHBhcmVudHM6IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLnBhcmVudHMuc2xpY2UoKSxcbiBcdFx0XHRcdFx0ZXJyb3JIYW5kbGVyOiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5ob3QuX3NlbGZBY2NlcHRlZFxuIFx0XHRcdFx0fSk7XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXG4gXHRcdGhvdFNldFN0YXR1cyhcImRpc3Bvc2VcIik7XG4gXHRcdE9iamVjdC5rZXlzKGhvdEF2YWlsYWJsZUZpbGVzTWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGNodW5rSWQpIHtcbiBcdFx0XHRpZiAoaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0gPT09IGZhbHNlKSB7XG4gXHRcdFx0XHRob3REaXNwb3NlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0fVxuIFx0XHR9KTtcblxuIFx0XHR2YXIgaWR4O1xuIFx0XHR2YXIgcXVldWUgPSBvdXRkYXRlZE1vZHVsZXMuc2xpY2UoKTtcbiBcdFx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiBcdFx0XHRtb2R1bGVJZCA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdGlmICghbW9kdWxlKSBjb250aW51ZTtcblxuIFx0XHRcdHZhciBkYXRhID0ge307XG5cbiBcdFx0XHQvLyBDYWxsIGRpc3Bvc2UgaGFuZGxlcnNcbiBcdFx0XHR2YXIgZGlzcG9zZUhhbmRsZXJzID0gbW9kdWxlLmhvdC5fZGlzcG9zZUhhbmRsZXJzO1xuIFx0XHRcdGZvciAoaiA9IDA7IGogPCBkaXNwb3NlSGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcbiBcdFx0XHRcdGNiID0gZGlzcG9zZUhhbmRsZXJzW2pdO1xuIFx0XHRcdFx0Y2IoZGF0YSk7XG4gXHRcdFx0fVxuIFx0XHRcdGhvdEN1cnJlbnRNb2R1bGVEYXRhW21vZHVsZUlkXSA9IGRhdGE7XG5cbiBcdFx0XHQvLyBkaXNhYmxlIG1vZHVsZSAodGhpcyBkaXNhYmxlcyByZXF1aXJlcyBmcm9tIHRoaXMgbW9kdWxlKVxuIFx0XHRcdG1vZHVsZS5ob3QuYWN0aXZlID0gZmFsc2U7XG5cbiBcdFx0XHQvLyByZW1vdmUgbW9kdWxlIGZyb20gY2FjaGVcbiBcdFx0XHRkZWxldGUgaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG5cbiBcdFx0XHQvLyB3aGVuIGRpc3Bvc2luZyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgZGlzcG9zZSBoYW5kbGVyXG4gXHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcblxuIFx0XHRcdC8vIHJlbW92ZSBcInBhcmVudHNcIiByZWZlcmVuY2VzIGZyb20gYWxsIGNoaWxkcmVuXG4gXHRcdFx0Zm9yIChqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGNoaWxkID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGUuY2hpbGRyZW5bal1dO1xuIFx0XHRcdFx0aWYgKCFjaGlsZCkgY29udGludWU7XG4gXHRcdFx0XHRpZHggPSBjaGlsZC5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpO1xuIFx0XHRcdFx0aWYgKGlkeCA+PSAwKSB7XG4gXHRcdFx0XHRcdGNoaWxkLnBhcmVudHMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cbiBcdFx0dmFyIGRlcGVuZGVuY3k7XG4gXHRcdHZhciBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcztcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdGlmIChtb2R1bGUpIHtcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRcdGZvciAoaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbiBcdFx0XHRcdFx0XHRpZHggPSBtb2R1bGUuY2hpbGRyZW4uaW5kZXhPZihkZXBlbmRlbmN5KTtcbiBcdFx0XHRcdFx0XHRpZiAoaWR4ID49IDApIG1vZHVsZS5jaGlsZHJlbi5zcGxpY2UoaWR4LCAxKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIE5vdyBpbiBcImFwcGx5XCIgcGhhc2VcbiBcdFx0aG90U2V0U3RhdHVzKFwiYXBwbHlcIik7XG5cbiBcdFx0aWYgKGhvdFVwZGF0ZU5ld0hhc2ggIT09IHVuZGVmaW5lZCkge1xuIFx0XHRcdGhvdEN1cnJlbnRIYXNoID0gaG90VXBkYXRlTmV3SGFzaDtcbiBcdFx0XHRob3RVcGRhdGVOZXdIYXNoID0gdW5kZWZpbmVkO1xuIFx0XHR9XG4gXHRcdGhvdFVwZGF0ZSA9IHVuZGVmaW5lZDtcblxuIFx0XHQvLyBpbnNlcnQgbmV3IGNvZGVcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBhcHBsaWVkVXBkYXRlKSB7XG4gXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcHBsaWVkVXBkYXRlLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gYXBwbGllZFVwZGF0ZVttb2R1bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gY2FsbCBhY2NlcHQgaGFuZGxlcnNcbiBcdFx0dmFyIGVycm9yID0gbnVsbDtcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdGlmIChtb2R1bGUpIHtcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRcdHZhciBjYWxsYmFja3MgPSBbXTtcbiBcdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRcdFx0ZGVwZW5kZW5jeSA9IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzW2ldO1xuIFx0XHRcdFx0XHRcdGNiID0gbW9kdWxlLmhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwZW5kZW5jeV07XG4gXHRcdFx0XHRcdFx0aWYgKGNiKSB7XG4gXHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tzLmluZGV4T2YoY2IpICE9PSAtMSkgY29udGludWU7XG4gXHRcdFx0XHRcdFx0XHRjYWxsYmFja3MucHVzaChjYik7XG4gXHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGZvciAoaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdFx0XHRjYiA9IGNhbGxiYWNrc1tpXTtcbiBcdFx0XHRcdFx0XHR0cnkge1xuIFx0XHRcdFx0XHRcdFx0Y2IobW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMpO1xuIFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImFjY2VwdC1lcnJvcmVkXCIsXG4gXHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3lJZDogbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXNbaV0sXG4gXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxuIFx0XHRcdFx0XHRcdFx0XHR9KTtcbiBcdFx0XHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuIFx0XHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIExvYWQgc2VsZiBhY2NlcHRlZCBtb2R1bGVzXG4gXHRcdGZvciAoaSA9IDA7IGkgPCBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHR2YXIgaXRlbSA9IG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlc1tpXTtcbiBcdFx0XHRtb2R1bGVJZCA9IGl0ZW0ubW9kdWxlO1xuIFx0XHRcdGhvdEN1cnJlbnRQYXJlbnRzID0gaXRlbS5wYXJlbnRzO1xuIFx0XHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IG1vZHVsZUlkO1xuIFx0XHRcdHRyeSB7XG4gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKTtcbiBcdFx0XHR9IGNhdGNoIChlcnIpIHtcbiBcdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xuIFx0XHRcdFx0XHR0cnkge1xuIFx0XHRcdFx0XHRcdGl0ZW0uZXJyb3JIYW5kbGVyKGVycik7XG4gXHRcdFx0XHRcdH0gY2F0Y2ggKGVycjIpIHtcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbiBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcbiBcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXG4gXHRcdFx0XHRcdFx0XHR9KTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyMjtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuIFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1hY2NlcHQtZXJyb3JlZFwiLFxuIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxuIFx0XHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cblxuIFx0XHQvLyBoYW5kbGUgZXJyb3JzIGluIGFjY2VwdCBoYW5kbGVycyBhbmQgc2VsZiBhY2NlcHRlZCBtb2R1bGUgbG9hZFxuIFx0XHRpZiAoZXJyb3IpIHtcbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJmYWlsXCIpO1xuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gXHRcdH1cblxuIFx0XHRpZiAoaG90UXVldWVkSW52YWxpZGF0ZWRNb2R1bGVzKSB7XG4gXHRcdFx0cmV0dXJuIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucykudGhlbihmdW5jdGlvbihsaXN0KSB7XG4gXHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMuZm9yRWFjaChmdW5jdGlvbihtb2R1bGVJZCkge1xuIFx0XHRcdFx0XHRpZiAobGlzdC5pbmRleE9mKG1vZHVsZUlkKSA8IDApIGxpc3QucHVzaChtb2R1bGVJZCk7XG4gXHRcdFx0XHR9KTtcbiBcdFx0XHRcdHJldHVybiBsaXN0O1xuIFx0XHRcdH0pO1xuIFx0XHR9XG5cbiBcdFx0aG90U2V0U3RhdHVzKFwiaWRsZVwiKTtcbiBcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiBcdFx0XHRyZXNvbHZlKG91dGRhdGVkTW9kdWxlcyk7XG4gXHRcdH0pO1xuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RBcHBseUludmFsaWRhdGVkTW9kdWxlcygpIHtcbiBcdFx0aWYgKGhvdFF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuIFx0XHRcdGlmICghaG90VXBkYXRlKSBob3RVcGRhdGUgPSB7fTtcbiBcdFx0XHRob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMuZm9yRWFjaChob3RBcHBseUludmFsaWRhdGVkTW9kdWxlKTtcbiBcdFx0XHRob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgPSB1bmRlZmluZWQ7XG4gXHRcdFx0cmV0dXJuIHRydWU7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZShtb2R1bGVJZCkge1xuIFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChob3RVcGRhdGUsIG1vZHVsZUlkKSlcbiBcdFx0XHRob3RVcGRhdGVbbW9kdWxlSWRdID0gbW9kdWxlc1ttb2R1bGVJZF07XG4gXHR9XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHRcInJ1bnRpbWVcIjogMFxuIFx0fTtcblxuIFx0dmFyIGRlZmVycmVkTW9kdWxlcyA9IFtdO1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRob3Q6IGhvdENyZWF0ZU1vZHVsZShtb2R1bGVJZCksXG4gXHRcdFx0cGFyZW50czogKGhvdEN1cnJlbnRQYXJlbnRzVGVtcCA9IGhvdEN1cnJlbnRQYXJlbnRzLCBob3RDdXJyZW50UGFyZW50cyA9IFtdLCBob3RDdXJyZW50UGFyZW50c1RlbXApLFxuIFx0XHRcdGNoaWxkcmVuOiBbXVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gX193ZWJwYWNrX2hhc2hfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gZnVuY3Rpb24oKSB7IHJldHVybiBob3RDdXJyZW50SGFzaDsgfTtcblxuIFx0dmFyIGpzb25wQXJyYXkgPSBnbG9iYWxbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBnbG9iYWxbXCJ3ZWJwYWNrSnNvbnBcIl0gfHwgW107XG4gXHR2YXIgb2xkSnNvbnBGdW5jdGlvbiA9IGpzb25wQXJyYXkucHVzaC5iaW5kKGpzb25wQXJyYXkpO1xuIFx0anNvbnBBcnJheS5wdXNoID0gd2VicGFja0pzb25wQ2FsbGJhY2s7XG4gXHRqc29ucEFycmF5ID0ganNvbnBBcnJheS5zbGljZSgpO1xuIFx0Zm9yKHZhciBpID0gMDsgaSA8IGpzb25wQXJyYXkubGVuZ3RoOyBpKyspIHdlYnBhY2tKc29ucENhbGxiYWNrKGpzb25wQXJyYXlbaV0pO1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSBvbGRKc29ucEZ1bmN0aW9uO1xuXG5cbiBcdC8vIHJ1biBkZWZlcnJlZCBtb2R1bGVzIGZyb20gb3RoZXIgY2h1bmtzXG4gXHRjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxRQUFRLG9CQUFvQjtRQUM1QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLDRCQUE0QjtRQUM3QztRQUNBO1FBQ0Esa0JBQWtCLDJCQUEyQjtRQUM3QztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsV0FBVztRQUNYO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGVBQWU7UUFDZjtRQUNBO1FBQ0E7UUFDQTtRQUNBLFdBQVc7UUFDWDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLE1BQU07UUFDTjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7O1FBRUw7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsNkJBQTZCO1FBQzdCLDZCQUE2QjtRQUM3QjtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHFCQUFxQixnQkFBZ0I7UUFDckM7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQSxxQkFBcUIsZ0JBQWdCO1FBQ3JDO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0EsS0FBSztRQUNMO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7O1FBRUw7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsS0FBSztRQUNMO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0EsS0FBSzs7UUFFTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0Esa0JBQWtCLDhCQUE4QjtRQUNoRDtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsSUFBSTtRQUNKOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsSUFBSTtRQUNKO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTTtRQUNOO1FBQ0E7UUFDQTtRQUNBLE9BQU87UUFDUDtRQUNBO1FBQ0E7UUFDQTtRQUNBLElBQUk7UUFDSjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxvQkFBb0IsMkJBQTJCO1FBQy9DO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxPQUFPO1FBQ1A7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLG1CQUFtQixjQUFjO1FBQ2pDO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSxnQkFBZ0IsS0FBSztRQUNyQjtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGdCQUFnQixZQUFZO1FBQzVCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0EsY0FBYyw0QkFBNEI7UUFDMUM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxJQUFJOztRQUVKO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTs7UUFFQTtRQUNBO1FBQ0EsZUFBZSw0QkFBNEI7UUFDM0M7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQSxlQUFlLDRCQUE0QjtRQUMzQztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLHVDQUF1QztRQUN4RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLHVDQUF1QztRQUN4RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGlCQUFpQixzQkFBc0I7UUFDdkM7UUFDQTtRQUNBO1FBQ0EsUUFBUTtRQUNSO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFVBQVU7UUFDVjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxjQUFjLHdDQUF3QztRQUN0RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxLQUFLO1FBQ0w7UUFDQTtRQUNBO1FBQ0EsT0FBTztRQUNQO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFNBQVM7UUFDVDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNO1FBQ047UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFFBQVE7UUFDUjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTTtRQUNOO1FBQ0EsS0FBSztRQUNMOztRQUVBO1FBQ0E7UUFDQTtRQUNBLElBQUk7UUFDSjs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsZUFBZTtRQUNmO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOztRQUVBO1FBQ0Esc0NBQXNDLHVCQUF1Qjs7UUFFN0Q7UUFDQTtRQUNBO1FBQ0E7UUFDQSxnQkFBZ0IsdUJBQXVCO1FBQ3ZDOzs7UUFHQTtRQUNBIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGRhdGEpIHtcbiBcdFx0dmFyIGNodW5rSWRzID0gZGF0YVswXTtcbiBcdFx0dmFyIG1vcmVNb2R1bGVzID0gZGF0YVsxXTtcbiBcdFx0dmFyIGV4ZWN1dGVNb2R1bGVzID0gZGF0YVsyXTtcbiBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4gXHRcdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdO1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbiBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbiBcdFx0XHR9XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oZGF0YSk7XG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aCkge1xuIFx0XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbiBcdFx0fVxuXG4gXHRcdC8vIGFkZCBlbnRyeSBtb2R1bGVzIGZyb20gbG9hZGVkIGNodW5rIHRvIGRlZmVycmVkIGxpc3RcbiBcdFx0ZGVmZXJyZWRNb2R1bGVzLnB1c2guYXBwbHkoZGVmZXJyZWRNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyB8fCBbXSk7XG5cbiBcdFx0Ly8gcnVuIGRlZmVycmVkIG1vZHVsZXMgd2hlbiBhbGwgY2h1bmtzIHJlYWR5XG4gXHRcdHJldHVybiBjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIFx0fTtcbiBcdGZ1bmN0aW9uIGNoZWNrRGVmZXJyZWRNb2R1bGVzKCkge1xuIFx0XHR2YXIgcmVzdWx0O1xuIFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0dmFyIGRlZmVycmVkTW9kdWxlID0gZGVmZXJyZWRNb2R1bGVzW2ldO1xuIFx0XHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuIFx0XHRcdGZvcih2YXIgaiA9IDE7IGogPCBkZWZlcnJlZE1vZHVsZS5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGRlcElkID0gZGVmZXJyZWRNb2R1bGVbal07XG4gXHRcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbZGVwSWRdICE9PSAwKSBmdWxmaWxsZWQgPSBmYWxzZTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYoZnVsZmlsbGVkKSB7XG4gXHRcdFx0XHRkZWZlcnJlZE1vZHVsZXMuc3BsaWNlKGktLSwgMSk7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGRlZmVycmVkTW9kdWxlWzBdKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH1cbiBcdGZ1bmN0aW9uIGhvdERpc3Bvc2VDaHVuayhjaHVua0lkKSB7XG4gXHQgICAgZGVsZXRlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdH1cbiBcdHZhciBwYXJlbnRIb3RVcGRhdGVDYWxsYmFjayA9IGdsb2JhbFtcIndlYnBhY2tIb3RVcGRhdGVcIl07XG4gXHRnbG9iYWxbXCJ3ZWJwYWNrSG90VXBkYXRlXCJdID0gICAgIGZ1bmN0aW9uIHdlYnBhY2tIb3RVcGRhdGVDYWxsYmFjayhjaHVua0lkLCBtb3JlTW9kdWxlcykge1xuIFx0ICAgICAgICBob3RBZGRVcGRhdGVDaHVuayhjaHVua0lkLCBtb3JlTW9kdWxlcyk7XG4gXHQgICAgICAgIGlmIChwYXJlbnRIb3RVcGRhdGVDYWxsYmFjaykge1xuIFx0ICAgICAgICAgICAgcGFyZW50SG90VXBkYXRlQ2FsbGJhY2soY2h1bmtJZCwgbW9yZU1vZHVsZXMpO1xuIFx0ICAgICAgICB9XG4gXHQgICAgfVxuXG4gXHQgICAgZnVuY3Rpb24gaG90RG93bmxvYWRVcGRhdGVDaHVuayhjaHVua0lkKSB7XG4gXHQgICAgICAgIGNvbnN0IHJlcXVlc3RQYXRoID0gJy4vJyArIFwiXCIgKyBjaHVua0lkICsgXCIuXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNcIjtcbiBcdCAgICAgICAgdHJ5IHtcbiBcdCAgICAgICAgICAgIHJlcXVpcmUocmVxdWVzdFBhdGgpO1xuIFx0ICAgICAgICB9IGNhdGNoIChlKSB7XG4gXHQgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkhvdCBkb3dubG9hZCBmb3IgdXBkYXRlIGNodW5rIGZhaWxlZC5cIik7XG4gXHQgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuIFx0ICAgICAgICB9XG4gXHQgICAgfVxuXG4gXHQgICAgZnVuY3Rpb24gaG90RG93bmxvYWRNYW5pZmVzdCgpIHtcbiBcdCAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiBcdCAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RQYXRoID0gJy4vJyArIFwiXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNvblwiO1xuIFx0ICAgICAgICAgICAgdHJ5IHtcbiBcdCAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGUgPSByZXF1aXJlKHJlcXVlc3RQYXRoKTtcbiBcdCAgICAgICAgICAgICAgICByZXNvbHZlKHVwZGF0ZSk7XG4gXHQgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gXHQgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJIb3QgZG93bmxvYWQgZm9yIG1hbmlmZXN0IGZhaWxlZC5cIik7XG4gXHQgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiBcdCAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gXHQgICAgICAgICAgICB9XG4gXHQgICAgICAgIH0pO1xuIFx0ICAgIH1cblxuIFx0dmFyIGhvdEFwcGx5T25VcGRhdGUgPSB0cnVlO1xuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHR2YXIgaG90Q3VycmVudEhhc2ggPSBcImIwYjM1MzgyYTg4Njc3ZmFkZTgxXCI7XG4gXHR2YXIgaG90UmVxdWVzdFRpbWVvdXQgPSAxMDAwMDtcbiBcdHZhciBob3RDdXJyZW50TW9kdWxlRGF0YSA9IHt9O1xuIFx0dmFyIGhvdEN1cnJlbnRDaGlsZE1vZHVsZTtcbiBcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0dmFyIGhvdEN1cnJlbnRQYXJlbnRzID0gW107XG4gXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiBcdHZhciBob3RDdXJyZW50UGFyZW50c1RlbXAgPSBbXTtcblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSB7XG4gXHRcdHZhciBtZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRpZiAoIW1lKSByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXztcbiBcdFx0dmFyIGZuID0gZnVuY3Rpb24ocmVxdWVzdCkge1xuIFx0XHRcdGlmIChtZS5ob3QuYWN0aXZlKSB7XG4gXHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XSkge1xuIFx0XHRcdFx0XHRpZiAoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpID09PSAtMSkge1xuIFx0XHRcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0ucGFyZW50cy5wdXNoKG1vZHVsZUlkKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xuIFx0XHRcdFx0XHRob3RDdXJyZW50Q2hpbGRNb2R1bGUgPSByZXF1ZXN0O1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKG1lLmNoaWxkcmVuLmluZGV4T2YocmVxdWVzdCkgPT09IC0xKSB7XG4gXHRcdFx0XHRcdG1lLmNoaWxkcmVuLnB1c2gocmVxdWVzdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGNvbnNvbGUud2FybihcbiBcdFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgK1xuIFx0XHRcdFx0XHRcdHJlcXVlc3QgK1xuIFx0XHRcdFx0XHRcdFwiKSBmcm9tIGRpc3Bvc2VkIG1vZHVsZSBcIiArXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWRcbiBcdFx0XHRcdCk7XG4gXHRcdFx0XHRob3RDdXJyZW50UGFyZW50cyA9IFtdO1xuIFx0XHRcdH1cbiBcdFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhyZXF1ZXN0KTtcbiBcdFx0fTtcbiBcdFx0dmFyIE9iamVjdEZhY3RvcnkgPSBmdW5jdGlvbiBPYmplY3RGYWN0b3J5KG5hbWUpIHtcbiBcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG4gXHRcdFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fW25hbWVdO1xuIFx0XHRcdFx0fSxcbiBcdFx0XHRcdHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiBcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfX1tuYW1lXSA9IHZhbHVlO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH07XG4gXHRcdH07XG4gXHRcdGZvciAodmFyIG5hbWUgaW4gX193ZWJwYWNrX3JlcXVpcmVfXykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfX3dlYnBhY2tfcmVxdWlyZV9fLCBuYW1lKSAmJlxuIFx0XHRcdFx0bmFtZSAhPT0gXCJlXCIgJiZcbiBcdFx0XHRcdG5hbWUgIT09IFwidFwiXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIG5hbWUsIE9iamVjdEZhY3RvcnkobmFtZSkpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRmbi5lID0gZnVuY3Rpb24oY2h1bmtJZCkge1xuIFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicmVhZHlcIikgaG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbiBcdFx0XHRob3RDaHVua3NMb2FkaW5nKys7XG4gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZShjaHVua0lkKS50aGVuKGZpbmlzaENodW5rTG9hZGluZywgZnVuY3Rpb24oZXJyKSB7XG4gXHRcdFx0XHRmaW5pc2hDaHVua0xvYWRpbmcoKTtcbiBcdFx0XHRcdHRocm93IGVycjtcbiBcdFx0XHR9KTtcblxuIFx0XHRcdGZ1bmN0aW9uIGZpbmlzaENodW5rTG9hZGluZygpIHtcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmctLTtcbiBcdFx0XHRcdGlmIChob3RTdGF0dXMgPT09IFwicHJlcGFyZVwiKSB7XG4gXHRcdFx0XHRcdGlmICghaG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRcdFx0aG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0aWYgKGhvdENodW5rc0xvYWRpbmcgPT09IDAgJiYgaG90V2FpdGluZ0ZpbGVzID09PSAwKSB7XG4gXHRcdFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRmbi50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0XHRpZiAobW9kZSAmIDEpIHZhbHVlID0gZm4odmFsdWUpO1xuIFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLnQodmFsdWUsIG1vZGUgJiB+MSk7XG4gXHRcdH07XG4gXHRcdHJldHVybiBmbjtcbiBcdH1cblxuIFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVNb2R1bGUobW9kdWxlSWQpIHtcbiBcdFx0dmFyIGhvdCA9IHtcbiBcdFx0XHQvLyBwcml2YXRlIHN0dWZmXG4gXHRcdFx0X2FjY2VwdGVkRGVwZW5kZW5jaWVzOiB7fSxcbiBcdFx0XHRfZGVjbGluZWREZXBlbmRlbmNpZXM6IHt9LFxuIFx0XHRcdF9zZWxmQWNjZXB0ZWQ6IGZhbHNlLFxuIFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxuIFx0XHRcdF9zZWxmSW52YWxpZGF0ZWQ6IGZhbHNlLFxuIFx0XHRcdF9kaXNwb3NlSGFuZGxlcnM6IFtdLFxuIFx0XHRcdF9tYWluOiBob3RDdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkLFxuXG4gXHRcdFx0Ly8gTW9kdWxlIEFQSVxuIFx0XHRcdGFjdGl2ZTogdHJ1ZSxcbiBcdFx0XHRhY2NlcHQ6IGZ1bmN0aW9uKGRlcCwgY2FsbGJhY2spIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmQWNjZXB0ZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJmdW5jdGlvblwiKSBob3QuX3NlbGZBY2NlcHRlZCA9IGRlcDtcbiBcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBkZXAgPT09IFwib2JqZWN0XCIpXG4gXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKVxuIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0XHRlbHNlIGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XG4gXHRcdFx0fSxcbiBcdFx0XHRkZWNsaW5lOiBmdW5jdGlvbihkZXApIHtcbiBcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmRGVjbGluZWQgPSB0cnVlO1xuIFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIilcbiBcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZXAubGVuZ3RoOyBpKyspXG4gXHRcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBbaV1dID0gdHJ1ZTtcbiBcdFx0XHRcdGVsc2UgaG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBdID0gdHJ1ZTtcbiBcdFx0XHR9LFxuIFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gXHRcdFx0XHRob3QuX2Rpc3Bvc2VIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTtcbiBcdFx0XHR9LFxuIFx0XHRcdGFkZERpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xuIFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XG4gXHRcdFx0fSxcbiBcdFx0XHRyZW1vdmVEaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiBcdFx0XHRcdHZhciBpZHggPSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5pbmRleE9mKGNhbGxiYWNrKTtcbiBcdFx0XHRcdGlmIChpZHggPj0gMCkgaG90Ll9kaXNwb3NlSGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0fSxcbiBcdFx0XHRpbnZhbGlkYXRlOiBmdW5jdGlvbigpIHtcbiBcdFx0XHRcdHRoaXMuX3NlbGZJbnZhbGlkYXRlZCA9IHRydWU7XG4gXHRcdFx0XHRzd2l0Y2ggKGhvdFN0YXR1cykge1xuIFx0XHRcdFx0XHRjYXNlIFwiaWRsZVwiOlxuIFx0XHRcdFx0XHRcdGhvdFVwZGF0ZSA9IHt9O1xuIFx0XHRcdFx0XHRcdGhvdFVwZGF0ZVttb2R1bGVJZF0gPSBtb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdFx0XHRob3RTZXRTdGF0dXMoXCJyZWFkeVwiKTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcInJlYWR5XCI6XG4gXHRcdFx0XHRcdFx0aG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZShtb2R1bGVJZCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJwcmVwYXJlXCI6XG4gXHRcdFx0XHRcdGNhc2UgXCJjaGVja1wiOlxuIFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZVwiOlxuIFx0XHRcdFx0XHRjYXNlIFwiYXBwbHlcIjpcbiBcdFx0XHRcdFx0XHQoaG90UXVldWVkSW52YWxpZGF0ZWRNb2R1bGVzID1cbiBcdFx0XHRcdFx0XHRcdGhvdFF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcyB8fCBbXSkucHVzaChtb2R1bGVJZCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGRlZmF1bHQ6XG4gXHRcdFx0XHRcdFx0Ly8gaWdub3JlIHJlcXVlc3RzIGluIGVycm9yIHN0YXRlc1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH0sXG5cbiBcdFx0XHQvLyBNYW5hZ2VtZW50IEFQSVxuIFx0XHRcdGNoZWNrOiBob3RDaGVjayxcbiBcdFx0XHRhcHBseTogaG90QXBwbHksXG4gXHRcdFx0c3RhdHVzOiBmdW5jdGlvbihsKSB7XG4gXHRcdFx0XHRpZiAoIWwpIHJldHVybiBob3RTdGF0dXM7XG4gXHRcdFx0XHRob3RTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuIFx0XHRcdH0sXG4gXHRcdFx0YWRkU3RhdHVzSGFuZGxlcjogZnVuY3Rpb24obCkge1xuIFx0XHRcdFx0aG90U3RhdHVzSGFuZGxlcnMucHVzaChsKTtcbiBcdFx0XHR9LFxuIFx0XHRcdHJlbW92ZVN0YXR1c0hhbmRsZXI6IGZ1bmN0aW9uKGwpIHtcbiBcdFx0XHRcdHZhciBpZHggPSBob3RTdGF0dXNIYW5kbGVycy5pbmRleE9mKGwpO1xuIFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBob3RTdGF0dXNIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbiBcdFx0XHR9LFxuXG4gXHRcdFx0Ly9pbmhlcml0IGZyb20gcHJldmlvdXMgZGlzcG9zZSBjYWxsXG4gXHRcdFx0ZGF0YTogaG90Q3VycmVudE1vZHVsZURhdGFbbW9kdWxlSWRdXG4gXHRcdH07XG4gXHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IHVuZGVmaW5lZDtcbiBcdFx0cmV0dXJuIGhvdDtcbiBcdH1cblxuIFx0dmFyIGhvdFN0YXR1c0hhbmRsZXJzID0gW107XG4gXHR2YXIgaG90U3RhdHVzID0gXCJpZGxlXCI7XG5cbiBcdGZ1bmN0aW9uIGhvdFNldFN0YXR1cyhuZXdTdGF0dXMpIHtcbiBcdFx0aG90U3RhdHVzID0gbmV3U3RhdHVzO1xuIFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGhvdFN0YXR1c0hhbmRsZXJzLmxlbmd0aDsgaSsrKVxuIFx0XHRcdGhvdFN0YXR1c0hhbmRsZXJzW2ldLmNhbGwobnVsbCwgbmV3U3RhdHVzKTtcbiBcdH1cblxuIFx0Ly8gd2hpbGUgZG93bmxvYWRpbmdcbiBcdHZhciBob3RXYWl0aW5nRmlsZXMgPSAwO1xuIFx0dmFyIGhvdENodW5rc0xvYWRpbmcgPSAwO1xuIFx0dmFyIGhvdFdhaXRpbmdGaWxlc01hcCA9IHt9O1xuIFx0dmFyIGhvdFJlcXVlc3RlZEZpbGVzTWFwID0ge307XG4gXHR2YXIgaG90QXZhaWxhYmxlRmlsZXNNYXAgPSB7fTtcbiBcdHZhciBob3REZWZlcnJlZDtcblxuIFx0Ly8gVGhlIHVwZGF0ZSBpbmZvXG4gXHR2YXIgaG90VXBkYXRlLCBob3RVcGRhdGVOZXdIYXNoLCBob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXM7XG5cbiBcdGZ1bmN0aW9uIHRvTW9kdWxlSWQoaWQpIHtcbiBcdFx0dmFyIGlzTnVtYmVyID0gK2lkICsgXCJcIiA9PT0gaWQ7XG4gXHRcdHJldHVybiBpc051bWJlciA/ICtpZCA6IGlkO1xuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RDaGVjayhhcHBseSkge1xuIFx0XHRpZiAoaG90U3RhdHVzICE9PSBcImlkbGVcIikge1xuIFx0XHRcdHRocm93IG5ldyBFcnJvcihcImNoZWNrKCkgaXMgb25seSBhbGxvd2VkIGluIGlkbGUgc3RhdHVzXCIpO1xuIFx0XHR9XG4gXHRcdGhvdEFwcGx5T25VcGRhdGUgPSBhcHBseTtcbiBcdFx0aG90U2V0U3RhdHVzKFwiY2hlY2tcIik7XG4gXHRcdHJldHVybiBob3REb3dubG9hZE1hbmlmZXN0KGhvdFJlcXVlc3RUaW1lb3V0KS50aGVuKGZ1bmN0aW9uKHVwZGF0ZSkge1xuIFx0XHRcdGlmICghdXBkYXRlKSB7XG4gXHRcdFx0XHRob3RTZXRTdGF0dXMoaG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZXMoKSA/IFwicmVhZHlcIiA6IFwiaWRsZVwiKTtcbiBcdFx0XHRcdHJldHVybiBudWxsO1xuIFx0XHRcdH1cbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcCA9IHt9O1xuIFx0XHRcdGhvdFdhaXRpbmdGaWxlc01hcCA9IHt9O1xuIFx0XHRcdGhvdEF2YWlsYWJsZUZpbGVzTWFwID0gdXBkYXRlLmM7XG4gXHRcdFx0aG90VXBkYXRlTmV3SGFzaCA9IHVwZGF0ZS5oO1xuXG4gXHRcdFx0aG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbiBcdFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdFx0aG90RGVmZXJyZWQgPSB7XG4gXHRcdFx0XHRcdHJlc29sdmU6IHJlc29sdmUsXG4gXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG4gXHRcdFx0XHR9O1xuIFx0XHRcdH0pO1xuIFx0XHRcdGhvdFVwZGF0ZSA9IHt9O1xuIFx0XHRcdGZvcih2YXIgY2h1bmtJZCBpbiBpbnN0YWxsZWRDaHVua3MpXG4gXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvbmUtYmxvY2tzXG4gXHRcdFx0e1xuIFx0XHRcdFx0aG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0fVxuIFx0XHRcdGlmIChcbiBcdFx0XHRcdGhvdFN0YXR1cyA9PT0gXCJwcmVwYXJlXCIgJiZcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmcgPT09IDAgJiZcbiBcdFx0XHRcdGhvdFdhaXRpbmdGaWxlcyA9PT0gMFxuIFx0XHRcdCkge1xuIFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xuIFx0XHRcdH1cbiBcdFx0XHRyZXR1cm4gcHJvbWlzZTtcbiBcdFx0fSk7XG4gXHR9XG5cbiBcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuIFx0ZnVuY3Rpb24gaG90QWRkVXBkYXRlQ2h1bmsoY2h1bmtJZCwgbW9yZU1vZHVsZXMpIHtcbiBcdFx0aWYgKCFob3RBdmFpbGFibGVGaWxlc01hcFtjaHVua0lkXSB8fCAhaG90UmVxdWVzdGVkRmlsZXNNYXBbY2h1bmtJZF0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSA9IGZhbHNlO1xuIFx0XHRmb3IgKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0XHRcdFx0aG90VXBkYXRlW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0aWYgKC0taG90V2FpdGluZ0ZpbGVzID09PSAwICYmIGhvdENodW5rc0xvYWRpbmcgPT09IDApIHtcbiBcdFx0XHRob3RVcGRhdGVEb3dubG9hZGVkKCk7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCkge1xuIFx0XHRpZiAoIWhvdEF2YWlsYWJsZUZpbGVzTWFwW2NodW5rSWRdKSB7XG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdID0gdHJ1ZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSA9IHRydWU7XG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzKys7XG4gXHRcdFx0aG90RG93bmxvYWRVcGRhdGVDaHVuayhjaHVua0lkKTtcbiBcdFx0fVxuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RVcGRhdGVEb3dubG9hZGVkKCkge1xuIFx0XHRob3RTZXRTdGF0dXMoXCJyZWFkeVwiKTtcbiBcdFx0dmFyIGRlZmVycmVkID0gaG90RGVmZXJyZWQ7XG4gXHRcdGhvdERlZmVycmVkID0gbnVsbDtcbiBcdFx0aWYgKCFkZWZlcnJlZCkgcmV0dXJuO1xuIFx0XHRpZiAoaG90QXBwbHlPblVwZGF0ZSkge1xuIFx0XHRcdC8vIFdyYXAgZGVmZXJyZWQgb2JqZWN0IGluIFByb21pc2UgdG8gbWFyayBpdCBhcyBhIHdlbGwtaGFuZGxlZCBQcm9taXNlIHRvXG4gXHRcdFx0Ly8gYXZvaWQgdHJpZ2dlcmluZyB1bmNhdWdodCBleGNlcHRpb24gd2FybmluZyBpbiBDaHJvbWUuXG4gXHRcdFx0Ly8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ2NTY2NlxuIFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG4gXHRcdFx0XHQudGhlbihmdW5jdGlvbigpIHtcbiBcdFx0XHRcdFx0cmV0dXJuIGhvdEFwcGx5KGhvdEFwcGx5T25VcGRhdGUpO1xuIFx0XHRcdFx0fSlcbiBcdFx0XHRcdC50aGVuKFxuIFx0XHRcdFx0XHRmdW5jdGlvbihyZXN1bHQpIHtcbiBcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gXHRcdFx0XHRcdH0sXG4gXHRcdFx0XHRcdGZ1bmN0aW9uKGVycikge1xuIFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdChlcnIpO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbiBcdFx0XHRmb3IgKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcbiBcdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaG90VXBkYXRlLCBpZCkpIHtcbiBcdFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzLnB1c2godG9Nb2R1bGVJZChpZCkpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKG91dGRhdGVkTW9kdWxlcyk7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90QXBwbHkob3B0aW9ucykge1xuIFx0XHRpZiAoaG90U3RhdHVzICE9PSBcInJlYWR5XCIpXG4gXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiYXBwbHkoKSBpcyBvbmx5IGFsbG93ZWQgaW4gcmVhZHkgc3RhdHVzXCIpO1xuIFx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiBcdFx0cmV0dXJuIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucyk7XG4gXHR9XG5cbiBcdGZ1bmN0aW9uIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucykge1xuIFx0XHRob3RBcHBseUludmFsaWRhdGVkTW9kdWxlcygpO1xuXG4gXHRcdHZhciBjYjtcbiBcdFx0dmFyIGk7XG4gXHRcdHZhciBqO1xuIFx0XHR2YXIgbW9kdWxlO1xuIFx0XHR2YXIgbW9kdWxlSWQ7XG5cbiBcdFx0ZnVuY3Rpb24gZ2V0QWZmZWN0ZWRTdHVmZih1cGRhdGVNb2R1bGVJZCkge1xuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xuIFx0XHRcdHZhciBvdXRkYXRlZERlcGVuZGVuY2llcyA9IHt9O1xuXG4gXHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLm1hcChmdW5jdGlvbihpZCkge1xuIFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXG4gXHRcdFx0XHRcdGlkOiBpZFxuIFx0XHRcdFx0fTtcbiBcdFx0XHR9KTtcbiBcdFx0XHR3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuIFx0XHRcdFx0dmFyIHF1ZXVlSXRlbSA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xuIFx0XHRcdFx0dmFyIGNoYWluID0gcXVldWVJdGVtLmNoYWluO1xuIFx0XHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRpZiAoXG4gXHRcdFx0XHRcdCFtb2R1bGUgfHxcbiBcdFx0XHRcdFx0KG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZCAmJiAhbW9kdWxlLmhvdC5fc2VsZkludmFsaWRhdGVkKVxuIFx0XHRcdFx0KVxuIFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdGlmIChtb2R1bGUuaG90Ll9zZWxmRGVjbGluZWQpIHtcbiBcdFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtZGVjbGluZWRcIixcbiBcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4sXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4gXHRcdFx0XHRcdH07XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpZiAobW9kdWxlLmhvdC5fbWFpbikge1xuIFx0XHRcdFx0XHRyZXR1cm4ge1xuIFx0XHRcdFx0XHRcdHR5cGU6IFwidW5hY2NlcHRlZFwiLFxuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcbiBcdFx0XHRcdFx0fTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlLnBhcmVudHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdFx0dmFyIHBhcmVudElkID0gbW9kdWxlLnBhcmVudHNbaV07XG4gXHRcdFx0XHRcdHZhciBwYXJlbnQgPSBpbnN0YWxsZWRNb2R1bGVzW3BhcmVudElkXTtcbiBcdFx0XHRcdFx0aWYgKCFwYXJlbnQpIGNvbnRpbnVlO1xuIFx0XHRcdFx0XHRpZiAocGFyZW50LmhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGVjbGluZWRcIixcbiBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXG4gXHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXG4gXHRcdFx0XHRcdFx0XHRwYXJlbnRJZDogcGFyZW50SWRcbiBcdFx0XHRcdFx0XHR9O1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGlmIChvdXRkYXRlZE1vZHVsZXMuaW5kZXhPZihwYXJlbnRJZCkgIT09IC0xKSBjb250aW51ZTtcbiBcdFx0XHRcdFx0aWYgKHBhcmVudC5ob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSkge1xuIFx0XHRcdFx0XHRcdGlmICghb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdKVxuIFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdID0gW107XG4gXHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdLCBbbW9kdWxlSWRdKTtcbiBcdFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRkZWxldGUgb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdO1xuIFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaChwYXJlbnRJZCk7XG4gXHRcdFx0XHRcdHF1ZXVlLnB1c2goe1xuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXG4gXHRcdFx0XHRcdFx0aWQ6IHBhcmVudElkXG4gXHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cblxuIFx0XHRcdHJldHVybiB7XG4gXHRcdFx0XHR0eXBlOiBcImFjY2VwdGVkXCIsXG4gXHRcdFx0XHRtb2R1bGVJZDogdXBkYXRlTW9kdWxlSWQsXG4gXHRcdFx0XHRvdXRkYXRlZE1vZHVsZXM6IG91dGRhdGVkTW9kdWxlcyxcbiBcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzOiBvdXRkYXRlZERlcGVuZGVuY2llc1xuIFx0XHRcdH07XG4gXHRcdH1cblxuIFx0XHRmdW5jdGlvbiBhZGRBbGxUb1NldChhLCBiKSB7XG4gXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHR2YXIgaXRlbSA9IGJbaV07XG4gXHRcdFx0XHRpZiAoYS5pbmRleE9mKGl0ZW0pID09PSAtMSkgYS5wdXNoKGl0ZW0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIGF0IGJlZ2luIGFsbCB1cGRhdGVzIG1vZHVsZXMgYXJlIG91dGRhdGVkXG4gXHRcdC8vIHRoZSBcIm91dGRhdGVkXCIgc3RhdHVzIGNhbiBwcm9wYWdhdGUgdG8gcGFyZW50cyBpZiB0aGV5IGRvbid0IGFjY2VwdCB0aGUgY2hpbGRyZW5cbiBcdFx0dmFyIG91dGRhdGVkRGVwZW5kZW5jaWVzID0ge307XG4gXHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbiBcdFx0dmFyIGFwcGxpZWRVcGRhdGUgPSB7fTtcblxuIFx0XHR2YXIgd2FyblVuZXhwZWN0ZWRSZXF1aXJlID0gZnVuY3Rpb24gd2FyblVuZXhwZWN0ZWRSZXF1aXJlKCkge1xuIFx0XHRcdGNvbnNvbGUud2FybihcbiBcdFx0XHRcdFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgcmVzdWx0Lm1vZHVsZUlkICsgXCIpIHRvIGRpc3Bvc2VkIG1vZHVsZVwiXG4gXHRcdFx0KTtcbiBcdFx0fTtcblxuIFx0XHRmb3IgKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcbiBcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhvdFVwZGF0ZSwgaWQpKSB7XG4gXHRcdFx0XHRtb2R1bGVJZCA9IHRvTW9kdWxlSWQoaWQpO1xuIFx0XHRcdFx0LyoqIEB0eXBlIHtUT0RPfSAqL1xuIFx0XHRcdFx0dmFyIHJlc3VsdDtcbiBcdFx0XHRcdGlmIChob3RVcGRhdGVbaWRdKSB7XG4gXHRcdFx0XHRcdHJlc3VsdCA9IGdldEFmZmVjdGVkU3R1ZmYobW9kdWxlSWQpO1xuIFx0XHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdFx0cmVzdWx0ID0ge1xuIFx0XHRcdFx0XHRcdHR5cGU6IFwiZGlzcG9zZWRcIixcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogaWRcbiBcdFx0XHRcdFx0fTtcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdC8qKiBAdHlwZSB7RXJyb3J8ZmFsc2V9ICovXG4gXHRcdFx0XHR2YXIgYWJvcnRFcnJvciA9IGZhbHNlO1xuIFx0XHRcdFx0dmFyIGRvQXBwbHkgPSBmYWxzZTtcbiBcdFx0XHRcdHZhciBkb0Rpc3Bvc2UgPSBmYWxzZTtcbiBcdFx0XHRcdHZhciBjaGFpbkluZm8gPSBcIlwiO1xuIFx0XHRcdFx0aWYgKHJlc3VsdC5jaGFpbikge1xuIFx0XHRcdFx0XHRjaGFpbkluZm8gPSBcIlxcblVwZGF0ZSBwcm9wYWdhdGlvbjogXCIgKyByZXN1bHQuY2hhaW4uam9pbihcIiAtPiBcIik7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRzd2l0Y2ggKHJlc3VsdC50eXBlKSB7XG4gXHRcdFx0XHRcdGNhc2UgXCJzZWxmLWRlY2xpbmVkXCI6XG4gXHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25EZWNsaW5lZCkgb3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxuIFx0XHRcdFx0XHRcdFx0YWJvcnRFcnJvciA9IG5ldyBFcnJvcihcbiBcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2Ugb2Ygc2VsZiBkZWNsaW5lOiBcIiArXG4gXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm1vZHVsZUlkICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRjaGFpbkluZm9cbiBcdFx0XHRcdFx0XHRcdCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJkZWNsaW5lZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRGVjbGluZWQpIG9wdGlvbnMub25EZWNsaW5lZChyZXN1bHQpO1xuIFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVEZWNsaW5lZClcbiBcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXG4gXHRcdFx0XHRcdFx0XHRcdFwiQWJvcnRlZCBiZWNhdXNlIG9mIGRlY2xpbmVkIGRlcGVuZGVuY3k6IFwiICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQubW9kdWxlSWQgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdFwiIGluIFwiICtcbiBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQucGFyZW50SWQgK1xuIFx0XHRcdFx0XHRcdFx0XHRcdGNoYWluSW5mb1xuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHRicmVhaztcbiBcdFx0XHRcdFx0Y2FzZSBcInVuYWNjZXB0ZWRcIjpcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vblVuYWNjZXB0ZWQpIG9wdGlvbnMub25VbmFjY2VwdGVkKHJlc3VsdCk7XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZVVuYWNjZXB0ZWQpXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuIFx0XHRcdFx0XHRcdFx0XHRcIkFib3J0ZWQgYmVjYXVzZSBcIiArIG1vZHVsZUlkICsgXCIgaXMgbm90IGFjY2VwdGVkXCIgKyBjaGFpbkluZm9cbiBcdFx0XHRcdFx0XHRcdCk7XG4gXHRcdFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0XHRcdGNhc2UgXCJhY2NlcHRlZFwiOlxuIFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uQWNjZXB0ZWQpIG9wdGlvbnMub25BY2NlcHRlZChyZXN1bHQpO1xuIFx0XHRcdFx0XHRcdGRvQXBwbHkgPSB0cnVlO1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZWRcIjpcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRpc3Bvc2VkKSBvcHRpb25zLm9uRGlzcG9zZWQocmVzdWx0KTtcbiBcdFx0XHRcdFx0XHRkb0Rpc3Bvc2UgPSB0cnVlO1xuIFx0XHRcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdFx0XHRkZWZhdWx0OlxuIFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuZXhjZXB0aW9uIHR5cGUgXCIgKyByZXN1bHQudHlwZSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0XHRpZiAoYWJvcnRFcnJvcikge1xuIFx0XHRcdFx0XHRob3RTZXRTdGF0dXMoXCJhYm9ydFwiKTtcbiBcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGFib3J0RXJyb3IpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aWYgKGRvQXBwbHkpIHtcbiBcdFx0XHRcdFx0YXBwbGllZFVwZGF0ZVttb2R1bGVJZF0gPSBob3RVcGRhdGVbbW9kdWxlSWRdO1xuIFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIHJlc3VsdC5vdXRkYXRlZE1vZHVsZXMpO1xuIFx0XHRcdFx0XHRmb3IgKG1vZHVsZUlkIGluIHJlc3VsdC5vdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdFx0XHRcdGlmIChcbiBcdFx0XHRcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChcbiBcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzLFxuIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZFxuIFx0XHRcdFx0XHRcdFx0KVxuIFx0XHRcdFx0XHRcdCkge1xuIFx0XHRcdFx0XHRcdFx0aWYgKCFvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pXG4gXHRcdFx0XHRcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSA9IFtdO1xuIFx0XHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQoXG4gXHRcdFx0XHRcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSxcbiBcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXVxuIFx0XHRcdFx0XHRcdFx0KTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH1cbiBcdFx0XHRcdGlmIChkb0Rpc3Bvc2UpIHtcbiBcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWRNb2R1bGVzLCBbcmVzdWx0Lm1vZHVsZUlkXSk7XG4gXHRcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdID0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlO1xuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIFN0b3JlIHNlbGYgYWNjZXB0ZWQgb3V0ZGF0ZWQgbW9kdWxlcyB0byByZXF1aXJlIHRoZW0gbGF0ZXIgYnkgdGhlIG1vZHVsZSBzeXN0ZW1cbiBcdFx0dmFyIG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcyA9IFtdO1xuIFx0XHRmb3IgKGkgPSAwOyBpIDwgb3V0ZGF0ZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0bW9kdWxlSWQgPSBvdXRkYXRlZE1vZHVsZXNbaV07XG4gXHRcdFx0aWYgKFxuIFx0XHRcdFx0aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gJiZcbiBcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkFjY2VwdGVkICYmXG4gXHRcdFx0XHQvLyByZW1vdmVkIHNlbGYtYWNjZXB0ZWQgbW9kdWxlcyBzaG91bGQgbm90IGJlIHJlcXVpcmVkXG4gXHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSAhPT0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlICYmXG4gXHRcdFx0XHQvLyB3aGVuIGNhbGxlZCBpbnZhbGlkYXRlIHNlbGYtYWNjZXB0aW5nIGlzIG5vdCBwb3NzaWJsZVxuIFx0XHRcdFx0IWluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkludmFsaWRhdGVkXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMucHVzaCh7XG4gXHRcdFx0XHRcdG1vZHVsZTogbW9kdWxlSWQsXG4gXHRcdFx0XHRcdHBhcmVudHM6IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLnBhcmVudHMuc2xpY2UoKSxcbiBcdFx0XHRcdFx0ZXJyb3JIYW5kbGVyOiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5ob3QuX3NlbGZBY2NlcHRlZFxuIFx0XHRcdFx0fSk7XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXG4gXHRcdGhvdFNldFN0YXR1cyhcImRpc3Bvc2VcIik7XG4gXHRcdE9iamVjdC5rZXlzKGhvdEF2YWlsYWJsZUZpbGVzTWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGNodW5rSWQpIHtcbiBcdFx0XHRpZiAoaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0gPT09IGZhbHNlKSB7XG4gXHRcdFx0XHRob3REaXNwb3NlQ2h1bmsoY2h1bmtJZCk7XG4gXHRcdFx0fVxuIFx0XHR9KTtcblxuIFx0XHR2YXIgaWR4O1xuIFx0XHR2YXIgcXVldWUgPSBvdXRkYXRlZE1vZHVsZXMuc2xpY2UoKTtcbiBcdFx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiBcdFx0XHRtb2R1bGVJZCA9IHF1ZXVlLnBvcCgpO1xuIFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdGlmICghbW9kdWxlKSBjb250aW51ZTtcblxuIFx0XHRcdHZhciBkYXRhID0ge307XG5cbiBcdFx0XHQvLyBDYWxsIGRpc3Bvc2UgaGFuZGxlcnNcbiBcdFx0XHR2YXIgZGlzcG9zZUhhbmRsZXJzID0gbW9kdWxlLmhvdC5fZGlzcG9zZUhhbmRsZXJzO1xuIFx0XHRcdGZvciAoaiA9IDA7IGogPCBkaXNwb3NlSGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcbiBcdFx0XHRcdGNiID0gZGlzcG9zZUhhbmRsZXJzW2pdO1xuIFx0XHRcdFx0Y2IoZGF0YSk7XG4gXHRcdFx0fVxuIFx0XHRcdGhvdEN1cnJlbnRNb2R1bGVEYXRhW21vZHVsZUlkXSA9IGRhdGE7XG5cbiBcdFx0XHQvLyBkaXNhYmxlIG1vZHVsZSAodGhpcyBkaXNhYmxlcyByZXF1aXJlcyBmcm9tIHRoaXMgbW9kdWxlKVxuIFx0XHRcdG1vZHVsZS5ob3QuYWN0aXZlID0gZmFsc2U7XG5cbiBcdFx0XHQvLyByZW1vdmUgbW9kdWxlIGZyb20gY2FjaGVcbiBcdFx0XHRkZWxldGUgaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG5cbiBcdFx0XHQvLyB3aGVuIGRpc3Bvc2luZyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgZGlzcG9zZSBoYW5kbGVyXG4gXHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcblxuIFx0XHRcdC8vIHJlbW92ZSBcInBhcmVudHNcIiByZWZlcmVuY2VzIGZyb20gYWxsIGNoaWxkcmVuXG4gXHRcdFx0Zm9yIChqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGNoaWxkID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGUuY2hpbGRyZW5bal1dO1xuIFx0XHRcdFx0aWYgKCFjaGlsZCkgY29udGludWU7XG4gXHRcdFx0XHRpZHggPSBjaGlsZC5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpO1xuIFx0XHRcdFx0aWYgKGlkeCA+PSAwKSB7XG4gXHRcdFx0XHRcdGNoaWxkLnBhcmVudHMuc3BsaWNlKGlkeCwgMSk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cbiBcdFx0dmFyIGRlcGVuZGVuY3k7XG4gXHRcdHZhciBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcztcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdGlmIChtb2R1bGUpIHtcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRcdGZvciAoaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbiBcdFx0XHRcdFx0XHRpZHggPSBtb2R1bGUuY2hpbGRyZW4uaW5kZXhPZihkZXBlbmRlbmN5KTtcbiBcdFx0XHRcdFx0XHRpZiAoaWR4ID49IDApIG1vZHVsZS5jaGlsZHJlbi5zcGxpY2UoaWR4LCAxKTtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIE5vdyBpbiBcImFwcGx5XCIgcGhhc2VcbiBcdFx0aG90U2V0U3RhdHVzKFwiYXBwbHlcIik7XG5cbiBcdFx0aWYgKGhvdFVwZGF0ZU5ld0hhc2ggIT09IHVuZGVmaW5lZCkge1xuIFx0XHRcdGhvdEN1cnJlbnRIYXNoID0gaG90VXBkYXRlTmV3SGFzaDtcbiBcdFx0XHRob3RVcGRhdGVOZXdIYXNoID0gdW5kZWZpbmVkO1xuIFx0XHR9XG4gXHRcdGhvdFVwZGF0ZSA9IHVuZGVmaW5lZDtcblxuIFx0XHQvLyBpbnNlcnQgbmV3IGNvZGVcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBhcHBsaWVkVXBkYXRlKSB7XG4gXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcHBsaWVkVXBkYXRlLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gYXBwbGllZFVwZGF0ZVttb2R1bGVJZF07XG4gXHRcdFx0fVxuIFx0XHR9XG5cbiBcdFx0Ly8gY2FsbCBhY2NlcHQgaGFuZGxlcnNcbiBcdFx0dmFyIGVycm9yID0gbnVsbDtcbiBcdFx0Zm9yIChtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xuIFx0XHRcdGlmIChcbiBcdFx0XHRcdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpXG4gXHRcdFx0KSB7XG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHRcdGlmIChtb2R1bGUpIHtcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4gXHRcdFx0XHRcdHZhciBjYWxsYmFja3MgPSBbXTtcbiBcdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRcdFx0ZGVwZW5kZW5jeSA9IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzW2ldO1xuIFx0XHRcdFx0XHRcdGNiID0gbW9kdWxlLmhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwZW5kZW5jeV07XG4gXHRcdFx0XHRcdFx0aWYgKGNiKSB7XG4gXHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tzLmluZGV4T2YoY2IpICE9PSAtMSkgY29udGludWU7XG4gXHRcdFx0XHRcdFx0XHRjYWxsYmFja3MucHVzaChjYik7XG4gXHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGZvciAoaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdFx0XHRjYiA9IGNhbGxiYWNrc1tpXTtcbiBcdFx0XHRcdFx0XHR0cnkge1xuIFx0XHRcdFx0XHRcdFx0Y2IobW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMpO1xuIFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImFjY2VwdC1lcnJvcmVkXCIsXG4gXHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3lJZDogbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXNbaV0sXG4gXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxuIFx0XHRcdFx0XHRcdFx0XHR9KTtcbiBcdFx0XHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuIFx0XHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRcdH1cbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuXG4gXHRcdC8vIExvYWQgc2VsZiBhY2NlcHRlZCBtb2R1bGVzXG4gXHRcdGZvciAoaSA9IDA7IGkgPCBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHR2YXIgaXRlbSA9IG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlc1tpXTtcbiBcdFx0XHRtb2R1bGVJZCA9IGl0ZW0ubW9kdWxlO1xuIFx0XHRcdGhvdEN1cnJlbnRQYXJlbnRzID0gaXRlbS5wYXJlbnRzO1xuIFx0XHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IG1vZHVsZUlkO1xuIFx0XHRcdHRyeSB7XG4gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKTtcbiBcdFx0XHR9IGNhdGNoIChlcnIpIHtcbiBcdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xuIFx0XHRcdFx0XHR0cnkge1xuIFx0XHRcdFx0XHRcdGl0ZW0uZXJyb3JIYW5kbGVyKGVycik7XG4gXHRcdFx0XHRcdH0gY2F0Y2ggKGVycjIpIHtcbiBcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbiBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcbiBcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXG4gXHRcdFx0XHRcdFx0XHR9KTtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbiBcdFx0XHRcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyMjtcbiBcdFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuIFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1hY2NlcHQtZXJyb3JlZFwiLFxuIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxuIFx0XHRcdFx0XHRcdH0pO1xuIFx0XHRcdFx0XHR9XG4gXHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XG4gXHRcdFx0XHRcdFx0aWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gXHRcdFx0XHRcdH1cbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cblxuIFx0XHQvLyBoYW5kbGUgZXJyb3JzIGluIGFjY2VwdCBoYW5kbGVycyBhbmQgc2VsZiBhY2NlcHRlZCBtb2R1bGUgbG9hZFxuIFx0XHRpZiAoZXJyb3IpIHtcbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJmYWlsXCIpO1xuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gXHRcdH1cblxuIFx0XHRpZiAoaG90UXVldWVkSW52YWxpZGF0ZWRNb2R1bGVzKSB7XG4gXHRcdFx0cmV0dXJuIGhvdEFwcGx5SW50ZXJuYWwob3B0aW9ucykudGhlbihmdW5jdGlvbihsaXN0KSB7XG4gXHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMuZm9yRWFjaChmdW5jdGlvbihtb2R1bGVJZCkge1xuIFx0XHRcdFx0XHRpZiAobGlzdC5pbmRleE9mKG1vZHVsZUlkKSA8IDApIGxpc3QucHVzaChtb2R1bGVJZCk7XG4gXHRcdFx0XHR9KTtcbiBcdFx0XHRcdHJldHVybiBsaXN0O1xuIFx0XHRcdH0pO1xuIFx0XHR9XG5cbiBcdFx0aG90U2V0U3RhdHVzKFwiaWRsZVwiKTtcbiBcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiBcdFx0XHRyZXNvbHZlKG91dGRhdGVkTW9kdWxlcyk7XG4gXHRcdH0pO1xuIFx0fVxuXG4gXHRmdW5jdGlvbiBob3RBcHBseUludmFsaWRhdGVkTW9kdWxlcygpIHtcbiBcdFx0aWYgKGhvdFF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuIFx0XHRcdGlmICghaG90VXBkYXRlKSBob3RVcGRhdGUgPSB7fTtcbiBcdFx0XHRob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMuZm9yRWFjaChob3RBcHBseUludmFsaWRhdGVkTW9kdWxlKTtcbiBcdFx0XHRob3RRdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgPSB1bmRlZmluZWQ7XG4gXHRcdFx0cmV0dXJuIHRydWU7XG4gXHRcdH1cbiBcdH1cblxuIFx0ZnVuY3Rpb24gaG90QXBwbHlJbnZhbGlkYXRlZE1vZHVsZShtb2R1bGVJZCkge1xuIFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChob3RVcGRhdGUsIG1vZHVsZUlkKSlcbiBcdFx0XHRob3RVcGRhdGVbbW9kdWxlSWRdID0gbW9kdWxlc1ttb2R1bGVJZF07XG4gXHR9XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHRcInJ1bnRpbWVcIjogMFxuIFx0fTtcblxuIFx0dmFyIGRlZmVycmVkTW9kdWxlcyA9IFtdO1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRob3Q6IGhvdENyZWF0ZU1vZHVsZShtb2R1bGVJZCksXG4gXHRcdFx0cGFyZW50czogKGhvdEN1cnJlbnRQYXJlbnRzVGVtcCA9IGhvdEN1cnJlbnRQYXJlbnRzLCBob3RDdXJyZW50UGFyZW50cyA9IFtdLCBob3RDdXJyZW50UGFyZW50c1RlbXApLFxuIFx0XHRcdGNoaWxkcmVuOiBbXVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gX193ZWJwYWNrX2hhc2hfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gZnVuY3Rpb24oKSB7IHJldHVybiBob3RDdXJyZW50SGFzaDsgfTtcblxuIFx0dmFyIGpzb25wQXJyYXkgPSBnbG9iYWxbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBnbG9iYWxbXCJ3ZWJwYWNrSnNvbnBcIl0gfHwgW107XG4gXHR2YXIgb2xkSnNvbnBGdW5jdGlvbiA9IGpzb25wQXJyYXkucHVzaC5iaW5kKGpzb25wQXJyYXkpO1xuIFx0anNvbnBBcnJheS5wdXNoID0gd2VicGFja0pzb25wQ2FsbGJhY2s7XG4gXHRqc29ucEFycmF5ID0ganNvbnBBcnJheS5zbGljZSgpO1xuIFx0Zm9yKHZhciBpID0gMDsgaSA8IGpzb25wQXJyYXkubGVuZ3RoOyBpKyspIHdlYnBhY2tKc29ucENhbGxiYWNrKGpzb25wQXJyYXlbaV0pO1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSBvbGRKc29ucEZ1bmN0aW9uO1xuXG5cbiBcdC8vIHJ1biBkZWZlcnJlZCBtb2R1bGVzIGZyb20gb3RoZXIgY2h1bmtzXG4gXHRjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/platforms/android/app/src/main/res/values-de/strings.xml b/platforms/android/app/src/main/res/values-de/strings.xml index 14c880d3..c96f458f 100644 --- a/platforms/android/app/src/main/res/values-de/strings.xml +++ b/platforms/android/app/src/main/res/values-de/strings.xml @@ -4,6 +4,7 @@ "Backup file has been modified externally." "Backup file seems empty." "Backup file is incorrect or corrupt." + "Import failed" "Entferne Rezept von Imbiss?" "Entferne Rezept von Abendessen?" "Entferne Rezept von Mittagessen?" @@ -287,5 +288,4 @@ "EnRecipes" "EnRecipes" "EnRecipes" - "Import failed" diff --git a/platforms/android/build-tools/sbg-interfaces-names.txt b/platforms/android/build-tools/sbg-interfaces-names.txt index 47ad4baa..6b6f113b 100644 --- a/platforms/android/build-tools/sbg-interfaces-names.txt +++ b/platforms/android/build-tools/sbg-interfaces-names.txt @@ -1,3 +1,4 @@ +okhttp3.Authenticator androidx.appcompat.app.ActionBar.DisplayOptions androidx.appcompat.app.ActionBar.NavigationMode androidx.appcompat.app.ActionBar.OnMenuVisibilityListener @@ -8,77 +9,49 @@ androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider androidx.appcompat.app.AlertController.AlertParams.OnPrepareListViewListener androidx.appcompat.app.AppCompatCallback androidx.appcompat.app.AppCompatDelegate.NightMode +okhttp3.Interceptor.Chain android.support.v4.media.MediaBrowserCompat.ConnectionCallback.ConnectionCallbackInternal android.support.v4.media.MediaBrowserCompat.MediaBrowserImpl -okhttp3.Authenticator +okhttp3.package-info android.support.v4.media.MediaBrowserCompat.MediaBrowserServiceCallbackImpl android.support.v4.media.MediaBrowserCompat.MediaItem.Flags android.support.v4.media.MediaBrowserCompatApi21.ConnectionCallback android.support.v4.media.MediaBrowserCompatApi21.SubscriptionCallback android.support.v4.media.MediaBrowserCompatApi23.ItemCallback -okhttp3.Interceptor.Chain -androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ArrowDirection -androidx.appcompat.view.ActionMode.Callback -androidx.appcompat.view.CollapsibleActionView -net.lingala.zip4j.crypto.Decrypter -net.lingala.zip4j.crypto.Encrypter -okhttp3.package-info -net.lingala.zip4j.crypto.PBKDF2.PRF -androidx.appcompat.view.menu.CascadingMenuPopup.HorizPosition android.support.v4.media.MediaBrowserCompatApi26.SubscriptionCallback -androidx.appcompat.view.menu.MenuBuilder.Callback -androidx.appcompat.view.menu.MenuBuilder.ItemInvoker android.support.v4.media.MediaMetadataCompat.BitmapKey android.support.v4.media.MediaMetadataCompat.LongKey android.support.v4.media.MediaMetadataCompat.RatingKey android.support.v4.media.MediaMetadataCompat.TextKey +net.lingala.zip4j.crypto.Decrypter +net.lingala.zip4j.crypto.Encrypter +net.lingala.zip4j.crypto.PBKDF2.PRF okhttp3.internal.cache.InternalCache -androidx.appcompat.view.menu.MenuHelper +okhttp3.Connection +okhttp3.internal.io.FileSystem android.support.v4.media.RatingCompat.StarStyle +okhttp3.internal.http.HttpCodec android.support.v4.media.RatingCompat.Style android.support.v4.media.session.IMediaControllerCallback -androidx.appcompat.view.menu.MenuPresenter.Callback -androidx.appcompat.view.menu.MenuPresenter -android.support.v4.media.session.IMediaSession -androidx.appcompat.view.menu.MenuView.ItemView -androidx.appcompat.view.menu.MenuView -androidx.appcompat.view.menu.ShowableListMenu -android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl -androidx.appcompat.widget.ActionBarOverlayLayout.ActionBarVisibilityCallback -android.support.v4.media.session.MediaControllerCompatApi21.Callback -android.support.v4.media.session.MediaSessionCompat.MediaSessionImpl -androidx.appcompat.widget.ActionMenuView.ActionMenuChildView -okhttp3.Connection -androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener -androidx.appcompat.widget.ActivityChooserModel.ActivityChooserModelClient -androidx.appcompat.widget.ActivityChooserModel.ActivitySorter -androidx.appcompat.widget.ActivityChooserModel.OnChooseActivityListener -okhttp3.internal.io.FileSystem -okhttp3.internal.http.HttpCodec okhttp3.EventListener.Factory -android.support.v4.app.INotificationSideChannel -android.support.v4.os.IResultReceiver -androidx.appcompat.widget.AppCompatSpinner.SpinnerPopup okhttp3.Call okhttp3.CookieJar +android.support.v4.media.session.IMediaSession +android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl +android.support.v4.media.session.MediaControllerCompatApi21.Callback +android.support.v4.media.session.MediaSessionCompat.MediaSessionImpl +android.support.v4.app.INotificationSideChannel +android.support.v4.os.IResultReceiver +androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback +androidx.core.app.ActivityCompat.PermissionCompatDelegate +androidx.core.app.ActivityCompat.RequestPermissionsRequestCodeValidator +androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ArrowDirection +androidx.appcompat.view.ActionMode.Callback +androidx.appcompat.view.CollapsibleActionView android.support.v4.media.session.MediaSessionCompat.OnActiveChangeListener android.support.v4.media.session.MediaSessionCompat.SessionFlags -okhttp3.internal.http.UnrepeatableRequestBody -okhttp3.internal.ws.WebSocketReader.FrameCallback -okhttp3.Interceptor -androidx.appcompat.widget.ContentFrameLayout.OnAttachListener -okhttp3.Callback -androidx.appcompat.widget.DecorContentParent -androidx.appcompat.widget.DecorToolbar -okhttp3.Dns -androidx.appcompat.widget.FitWindowsViewGroup.OnFitSystemWindowsListener -androidx.appcompat.widget.FitWindowsViewGroup -androidx.appcompat.widget.LinearLayoutCompat.DividerMode -androidx.appcompat.widget.LinearLayoutCompat.OrientationMode -androidx.appcompat.widget.MenuItemHoverListener +androidx.appcompat.view.menu.CascadingMenuPopup.HorizPosition android.support.v4.media.session.MediaSessionCompatApi21.Callback -androidx.appcompat.widget.PopupMenu.OnDismissListener -androidx.appcompat.widget.PopupMenu.OnMenuItemClickListener android.support.v4.media.session.MediaSessionCompatApi23.Callback android.support.v4.media.session.MediaSessionCompatApi24.Callback android.support.v4.media.session.PlaybackStateCompat.Actions @@ -87,129 +60,161 @@ android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction android.support.v4.media.session.PlaybackStateCompat.RepeatMode android.support.v4.media.session.PlaybackStateCompat.ShuffleMode android.support.v4.media.session.PlaybackStateCompat.State -androidx.appcompat.widget.SearchView.OnCloseListener -androidx.appcompat.widget.SearchView.OnQueryTextListener -androidx.appcompat.widget.SearchView.OnSuggestionListener -okhttp3.internal.http2.PushObserver -androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback -okhttp3.internal.tls.TrustRootIndex -androidx.core.app.ActivityCompat.PermissionCompatDelegate -androidx.core.app.ActivityCompat.RequestPermissionsRequestCodeValidator -okhttp3.Call.Factory -androidx.appcompat.widget.ShareActionProvider.OnShareTargetSelectedListener -androidx.core.app.CoreComponentFactory.CompatWrapped -androidx.appcompat.widget.ThemedSpinnerAdapter -androidx.core.app.FrameMetricsAggregator.MetricType -androidx.appcompat.widget.Toolbar.OnMenuItemClickListener -androidx.core.app.JobIntentService.CompatJobEngine -androidx.core.app.JobIntentService.GenericWorkItem -androidx.core.app.NotificationBuilderWithBuilderAccessor +okhttp3.internal.http.UnrepeatableRequestBody +okhttp3.internal.ws.WebSocketReader.FrameCallback +okhttp3.Interceptor androidx.media.AudioAttributesCompat.AttributeContentType androidx.media.AudioAttributesCompat.AttributeUsage +androidx.media.AudioAttributesImpl +okhttp3.Callback +okhttp3.Dns +androidx.core.app.CoreComponentFactory.CompatWrapped +androidx.media.MediaBrowserServiceCompat.MediaBrowserServiceImpl +androidx.core.app.FrameMetricsAggregator.MetricType +okhttp3.internal.http2.PushObserver +androidx.core.app.JobIntentService.CompatJobEngine +okhttp3.internal.tls.TrustRootIndex +androidx.core.app.JobIntentService.GenericWorkItem +androidx.core.app.NotificationBuilderWithBuilderAccessor androidx.core.app.NotificationCompat.Action.Extender androidx.core.app.NotificationCompat.Action.SemanticAction +okhttp3.Call.Factory androidx.core.app.NotificationCompat.BadgeIconType -androidx.media.AudioAttributesImpl -androidx.appcompat.widget.ViewStubCompat.OnInflateListener -androidx.media.MediaBrowserServiceCompat.MediaBrowserServiceImpl -androidx.appcompat.widget.WithHint -androidx.fragment.app.Fragment.OnStartEnterTransitionListener androidx.media.MediaBrowserServiceCompat.ServiceCallbacks androidx.media.MediaBrowserServiceCompatApi21.ServiceCompatProxy androidx.media.MediaBrowserServiceCompatApi23.ServiceCompatProxy androidx.media.MediaBrowserServiceCompatApi26.ServiceCompatProxy androidx.media.MediaSessionManager.MediaSessionManagerImpl androidx.media.MediaSessionManager.RemoteUserInfoImpl -androidx.core.app.NotificationCompat.Extender -okhttp3.WebSocket -androidx.core.app.NotificationCompat.GroupAlertBehavior androidx.media.VolumeProviderCompat.ControlType androidx.media.VolumeProviderCompatApi21.Delegate -okhttp3.WebSocket.Factory -okhttp3.internal.cache.CacheRequest -androidx.core.app.NotificationCompat.NotificationVisibility -androidx.core.app.NotificationCompat.StreamType com.telerik.android.primitives.widget.sidedrawer.DrawerChangeListener com.telerik.android.primitives.widget.sidedrawer.DrawerFadeLayer -androidx.fragment.app.FragmentManager.BackStackEntry com.telerik.android.primitives.widget.sidedrawer.DrawerTransition com.telerik.android.primitives.widget.sidedrawer.DrawerTransitionEndedListener -androidx.fragment.app.FragmentManager.OnBackStackChangedListener -androidx.fragment.app.FragmentManager.OpGenerator -okhttp3.internal.http2.Http2Reader.Handler -androidx.drawerlayout.widget.DrawerLayout.DrawerListener -com.telerik.android.primitives.widget.sidedrawer.contents.CreateIntentCallback -androidx.fragment.app.FragmentTransition.Callback -androidx.lifecycle.Observer -com.telerik.android.data.CurrentItemChangedListener -com.telerik.android.data.DataChangedListener -com.telerik.android.data.ListViewFilterFunction -com.telerik.android.data.ListViewGroupFunction -com.telerik.android.data.ListViewSortFunction -com.telerik.android.data.OnJSONDataSourceCreated -com.telerik.android.data.SelectionAdapter +androidx.core.app.NotificationCompat.Extender +androidx.core.app.NotificationCompat.GroupAlertBehavior +androidx.core.app.NotificationCompat.NotificationVisibility +androidx.core.app.NotificationCompat.StreamType +androidx.appcompat.view.menu.MenuBuilder.Callback +androidx.appcompat.view.menu.MenuBuilder.ItemInvoker androidx.core.app.NotificationManagerCompat.Task -com.telerik.android.data.SelectionChangeListener -com.telerik.widget.list.CollapsedGroupState -com.telerik.widget.list.CollapsibleGroupsBehavior.CollapseGroupListener -com.telerik.widget.list.CurrentPositionChangeListener -androidx.viewpager2.adapter.StatefulAdapter +androidx.appcompat.view.menu.MenuHelper androidx.core.app.RemoteInput.EditChoicesBeforeSending androidx.core.app.RemoteInput.Source androidx.core.app.ServiceCompat.StopForegroundFlags -com.telerik.widget.list.GroupAdapter -com.telerik.widget.list.ItemReorderBehavior.ItemReorderListener +okhttp3.WebSocket +okhttp3.WebSocket.Factory +okhttp3.internal.cache.CacheRequest androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener androidx.core.app.TaskStackBuilder.SupportParentable -com.couchbase.lite.ArrayInterface +okhttp3.internal.http2.Http2Reader.Handler androidx.core.content.FileProvider.PathStrategy +androidx.core.content.PermissionChecker.PermissionResult +androidx.core.content.pm.PermissionInfoCompat.Protection +androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags +androidx.drawerlayout.widget.DrawerLayout.DrawerListener +com.telerik.android.primitives.widget.sidedrawer.contents.CreateIntentCallback +androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry +androidx.core.content.res.FontResourcesParserCompat.FetchStrategy +androidx.viewpager2.adapter.StatefulAdapter +androidx.lifecycle.Observer +androidx.viewpager2.widget.ViewPager2.OffscreenPageLimit +androidx.appcompat.view.menu.MenuPresenter.Callback +androidx.appcompat.view.menu.MenuPresenter +androidx.appcompat.view.menu.MenuView.ItemView +androidx.appcompat.view.menu.MenuView +androidx.appcompat.view.menu.ShowableListMenu +androidx.core.graphics.TypefaceCompatBaseImpl.StyleExtractor +androidx.core.graphics.drawable.IconCompat.IconType +androidx.appcompat.widget.ActionBarOverlayLayout.ActionBarVisibilityCallback +androidx.core.graphics.drawable.TintAwareDrawable +androidx.core.graphics.drawable.WrappedDrawable +androidx.core.internal.package-info +androidx.core.internal.view.SupportMenu +androidx.core.internal.view.SupportMenuItem +androidx.core.internal.view.SupportSubMenu +androidx.core.net.ConnectivityManagerCompat.RestrictBackgroundStatus +androidx.appcompat.widget.ActionMenuView.ActionMenuChildView +androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener +androidx.core.os.CancellationSignal.OnCancelListener +com.couchbase.lite.ArrayInterface +androidx.appcompat.widget.ActivityChooserModel.ActivityChooserModelClient +androidx.appcompat.widget.ActivityChooserModel.ActivitySorter +androidx.appcompat.widget.ActivityChooserModel.OnChooseActivityListener +androidx.core.os.LocaleListInterface com.couchbase.lite.CBLError.Code com.couchbase.lite.CBLError.Domain com.couchbase.lite.CBLError com.couchbase.lite.ChangeListener -androidx.core.content.PermissionChecker.PermissionResult -androidx.core.content.pm.PermissionInfoCompat.Protection -androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags -androidx.viewpager2.widget.ViewPager2.OffscreenPageLimit androidx.viewpager2.widget.ViewPager2.Orientation -com.couchbase.lite.DatabaseChangeListener androidx.viewpager2.widget.ViewPager2.PageTransformer androidx.viewpager2.widget.ViewPager2.ScrollState +com.couchbase.lite.DatabaseChangeListener +androidx.core.os.ParcelableCompatCreatorCallbacks +androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason +androidx.core.provider.SelfDestructiveThread.ReplyCallback com.couchbase.lite.DictionaryInterface -androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry -androidx.core.content.res.FontResourcesParserCompat.FetchStrategy -com.telerik.widget.list.LoadOnDemandBehavior.LoadOnDemandListener -com.telerik.widget.list.LoadOnDemandBehavior.LoadingListener +androidx.cursoradapter.widget.CursorFilter.CursorFilterClient +androidx.cursoradapter.widget.SimpleCursorAdapter.CursorToStringConverter +androidx.cursoradapter.widget.SimpleCursorAdapter.ViewBinder com.couchbase.lite.DocumentChangeListener +androidx.savedstate.SavedStateRegistry.AutoRecreated +androidx.savedstate.SavedStateRegistry.SavedStateProvider com.couchbase.lite.DocumentReplicationListener -com.telerik.widget.list.RadListView.IsEmptyChangedListener -com.telerik.widget.list.RadListView.ItemClickListener +androidx.savedstate.SavedStateRegistryOwner com.couchbase.lite.Endpoint -com.telerik.widget.list.SelectionBehavior.SelectionChangedListener +androidx.core.text.TextDirectionHeuristicCompat +androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm +androidx.core.text.util.LinkifyCompat.LinkifyMask +androidx.core.util.Consumer com.couchbase.lite.FromRouter +okio.Source +androidx.appcompat.widget.AppCompatSpinner.SpinnerPopup +okio.Sink +okio.package-info +okio.BufferedSource com.couchbase.lite.GroupByRouter com.couchbase.lite.HavingRouter com.couchbase.lite.Index com.couchbase.lite.JoinRouter com.couchbase.lite.LimitRouter com.couchbase.lite.ListenerToken -com.telerik.widget.list.SwipeActionsBehavior.SwipeActionsListener com.couchbase.lite.Logger -androidx.cursoradapter.widget.CursorFilter.CursorFilterClient +androidx.appcompat.widget.ContentFrameLayout.OnAttachListener +androidx.appcompat.widget.DecorContentParent +androidx.appcompat.widget.DecorToolbar com.couchbase.lite.MutableArrayInterface -androidx.cursoradapter.widget.SimpleCursorAdapter.CursorToStringConverter -androidx.cursoradapter.widget.SimpleCursorAdapter.ViewBinder -com.telerik.widget.list.SwipeExecuteBehavior.SwipeExecuteDismissedListener -com.telerik.widget.list.SwipeExecuteBehavior.SwipeExecuteListener com.couchbase.lite.MutableDictionaryInterface +androidx.appcompat.widget.FitWindowsViewGroup.OnFitSystemWindowsListener +androidx.appcompat.widget.FitWindowsViewGroup +androidx.appcompat.widget.LinearLayoutCompat.DividerMode +androidx.appcompat.widget.LinearLayoutCompat.OrientationMode +androidx.core.util.Pools.Pool +androidx.core.util.Predicate +androidx.core.util.Supplier +androidx.core.view.ActionProvider.SubUiVisibilityListener +androidx.core.view.ActionProvider.VisibilityListener +okio.BufferedSink +androidx.appcompat.widget.MenuItemHoverListener +androidx.print.PrintHelper.OnPrintFinishCallback +androidx.appcompat.widget.PopupMenu.OnDismissListener +androidx.appcompat.widget.PopupMenu.OnMenuItemClickListener com.couchbase.lite.OrderByRouter com.couchbase.lite.Query +androidx.core.view.DragStartHelper.OnDragStartListener com.couchbase.lite.QueryChangeListener -com.telerik.widget.list.SwipeRefreshBehavior.RefreshListener +androidx.core.view.GestureDetectorCompat.GestureDetectorCompatImpl com.couchbase.lite.ReplicationFilter -com.telerik.widget.list.SwipeRefreshBehavior.SwipeRefreshListener com.couchbase.lite.ReplicatorChangeListener +androidx.coordinatorlayout.widget.CoordinatorLayout.AttachedBehavior +androidx.coordinatorlayout.widget.CoordinatorLayout.DefaultBehavior +androidx.coordinatorlayout.widget.CoordinatorLayout.DispatchChangeEvent +androidx.appcompat.widget.SearchView.OnCloseListener +androidx.appcompat.widget.SearchView.OnQueryTextListener +androidx.appcompat.widget.SearchView.OnSuggestionListener com.couchbase.lite.WhereRouter +androidx.appcompat.widget.ShareActionProvider.OnShareTargetSelectedListener com.couchbase.litecore.C4Constants.C4DatabaseFlags com.couchbase.litecore.C4Constants.C4DocumentFlags com.couchbase.litecore.C4Constants.C4DocumentVersioning @@ -224,97 +229,424 @@ com.couchbase.litecore.C4Constants.C4RevisionFlags com.couchbase.litecore.C4Constants.LiteCoreError com.couchbase.litecore.C4Constants.NetworkError com.couchbase.litecore.C4Constants +androidx.core.view.KeyEventDispatcher.Component +androidx.appcompat.widget.ThemedSpinnerAdapter +androidx.core.view.LayoutInflaterFactory com.couchbase.litecore.C4DatabaseObserverListener +androidx.core.view.MenuItemCompat.OnActionExpandListener com.couchbase.litecore.C4DocumentObserverListener +androidx.appcompat.widget.Toolbar.OnMenuItemClickListener +androidx.core.view.NestedScrollingChild +androidx.core.view.NestedScrollingChild2 +androidx.core.view.NestedScrollingChild3 com.couchbase.litecore.C4ListenerAPIs -androidx.asynclayoutinflater.view.AsyncLayoutInflater.OnInflateFinishedListener +androidx.core.view.NestedScrollingParent +androidx.core.view.NestedScrollingParent2 +androidx.core.view.NestedScrollingParent3 com.couchbase.litecore.C4PredictiveModel +androidx.core.view.OnApplyWindowInsetsListener +androidx.core.view.ScrollingView com.couchbase.litecore.C4ReplicationFilter +androidx.core.view.TintableBackgroundView com.couchbase.litecore.C4ReplicatorListener com.couchbase.litecore.C4ReplicatorMode com.couchbase.litecore.C4ReplicatorStatus.C4ReplicatorActivityLevel com.couchbase.litecore.C4WebSocketCloseCode -com.yalantis.ucrop.UCropActivity.GestureTypes +androidx.core.view.ViewCompat.FocusDirection +androidx.core.view.ViewCompat.FocusRealDirection +androidx.core.view.ViewCompat.FocusRelativeDirection +androidx.core.view.ViewCompat.NestedScrollType +androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat +androidx.core.view.ViewCompat.ScrollAxis +androidx.core.view.ViewCompat.ScrollIndicators com.couchbase.litecore.fleece.Encodable com.couchbase.litecore.fleece.FLConstants.FLError +android.nfc.NfcAdapter.CreateBeamUrisCallback com.couchbase.litecore.fleece.FLConstants.FLValueType com.couchbase.litecore.fleece.FLEncodable -com.yalantis.ucrop.UCropFragment.GestureTypes -com.yalantis.ucrop.UCropFragmentCallback -com.yalantis.ucrop.callback.BitmapCropCallback -com.yalantis.ucrop.callback.BitmapLoadCallback -com.yalantis.ucrop.callback.CropBoundsChangeListener -com.yalantis.ucrop.callback.OverlayViewChangeListener -com.couchbase.litecore.fleece.MValue.Delegate -androidx.core.graphics.TypefaceCompatBaseImpl.StyleExtractor -com.yalantis.ucrop.util.ImageHeaderParser.Reader -androidx.cardview.widget.CardViewDelegate -androidx.cardview.widget.CardViewImpl -androidx.core.graphics.drawable.IconCompat.IconType -androidx.cardview.widget.RoundRectDrawableWithShadow.RoundRectHelper -androidx.savedstate.SavedStateRegistry.AutoRecreated -androidx.savedstate.SavedStateRegistry.SavedStateProvider -androidx.savedstate.SavedStateRegistryOwner -com.yalantis.ucrop.util.RotationGestureDetector.OnRotationGestureListener -androidx.core.graphics.drawable.TintAwareDrawable -androidx.core.graphics.drawable.WrappedDrawable -com.yalantis.ucrop.view.OverlayView.FreestyleMode -androidx.core.internal.package-info -androidx.core.internal.view.SupportMenu -androidx.core.internal.view.SupportMenuItem -okio.Source -androidx.core.internal.view.SupportSubMenu -androidx.core.net.ConnectivityManagerCompat.RestrictBackgroundStatus -com.yalantis.ucrop.view.TransformImageView.TransformImageListener -androidx.core.os.CancellationSignal.OnCancelListener -com.yalantis.ucrop.view.widget.HorizontalProgressWheelView.ScrollingListener -androidx.core.os.LocaleListInterface -okio.Sink -androidx.core.os.ParcelableCompatCreatorCallbacks -okio.package-info -androidx.exifinterface.media.ExifInterface.ExifStreamType -androidx.exifinterface.media.ExifInterface.IfdType -okio.BufferedSource -androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason -androidx.core.provider.SelfDestructiveThread.ReplyCallback -okio.BufferedSink -androidx.print.PrintHelper.OnPrintFinishCallback -androidx.coordinatorlayout.widget.CoordinatorLayout.AttachedBehavior -androidx.coordinatorlayout.widget.CoordinatorLayout.DefaultBehavior -androidx.coordinatorlayout.widget.CoordinatorLayout.DispatchChangeEvent -androidx.core.text.TextDirectionHeuristicCompat -androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm -androidx.core.text.util.LinkifyCompat.LinkifyMask -androidx.appcompat.widget.ResourceManagerInternal.InflateDelegate -androidx.appcompat.widget.ResourceManagerInternal.ResourceManagerHooks -androidx.core.util.Consumer -androidx.core.util.Pools.Pool -com.tns.ExtractPolicy -com.tns.FileExtractor -androidx.core.util.Predicate -androidx.core.util.Supplier -com.tns.JavaScriptImplementation -com.tns.Logger -com.tns.ManualInstrumentation.Frame -androidx.core.view.ActionProvider.SubUiVisibilityListener -androidx.core.view.ActionProvider.VisibilityListener -androidx.customview.widget.FocusStrategy.BoundsAdapter -androidx.customview.widget.FocusStrategy.CollectionAdapter -androidx.transition.AnimatorUtils.AnimatorPauseListenerCompat -com.tns.NativeScriptHashCodeProvider -android.nfc.NfcAdapter.CreateBeamUrisCallback android.nfc.NfcAdapter.ReaderCallback android.nfc.NfcAdapter.CreateNdefMessageCallback android.nfc.NfcAdapter.OnNdefPushCompleteCallback android.nfc.NfcAdapter.OnTagRemovedListener android.nfc.tech.TagTechnology -com.tns.NativeScriptWeakHashMap.Entry.Type +com.couchbase.litecore.fleece.MValue.Delegate android.renderscript.Allocation.OnBufferAvailableListener -androidx.transition.GhostView +androidx.cardview.widget.CardViewDelegate +androidx.cardview.widget.CardViewImpl +androidx.cardview.widget.RoundRectDrawableWithShadow.RoundRectHelper +androidx.appcompat.widget.ViewStubCompat.OnInflateListener +androidx.appcompat.widget.WithHint +androidx.fragment.app.Fragment.OnStartEnterTransitionListener +com.tns.ExtractPolicy +com.tns.FileExtractor +com.tns.JavaScriptImplementation +com.tns.Logger +com.tns.ManualInstrumentation.Frame +com.tns.NativeScriptHashCodeProvider +com.tns.NativeScriptWeakHashMap.Entry.Type +androidx.core.view.ViewPropertyAnimatorListener +androidx.core.view.ViewPropertyAnimatorUpdateListener +androidx.fragment.app.FragmentManager.BackStackEntry +androidx.fragment.app.FragmentManager.OnBackStackChangedListener +androidx.fragment.app.FragmentManager.OpGenerator +androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener +androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener com.tns.RuntimeCallable com.tns.ThreadScheduler +androidx.core.view.accessibility.AccessibilityViewCommand +com.tns.bindings.desc.ClassDescriptor +com.tns.bindings.desc.Descriptor +androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener +com.tns.bindings.desc.MethodDescriptor +android.companion.DeviceFilter +com.tns.system.classes.caching.ClassCache +androidx.core.view.inputmethod.InputContentInfoCompat.InputContentInfoCompatImpl +com.tns.system.classes.loading.ClassStorageService +com.tns.system.classloaders.ClassLoadersCollection +fi.iki.elonen.NanoHTTPD.AsyncRunner +androidx.core.widget.AutoSizeableTextView +androidx.core.widget.NestedScrollView.OnScrollChangeListener +fi.iki.elonen.NanoHTTPD.IHTTPSession +fi.iki.elonen.NanoHTTPD.Response.IStatus +android.se.omapi.SEService.OnConnectedListener +androidx.core.widget.TextViewCompat.AutoSizeTextType +android.database.Cursor +android.database.DatabaseErrorHandler +androidx.core.widget.TintableCompoundButton +androidx.core.widget.TintableCompoundDrawablesView +androidx.core.widget.TintableImageSourceView +androidx.recyclerview.widget.AdapterHelper.Callback +android.database.sqlite.SQLiteDatabase.CursorFactory +android.database.sqlite.SQLiteCursorDriver +android.database.sqlite.SQLiteTransactionListener +androidx.recyclerview.widget.AsyncListDiffer.ListListener +fi.iki.elonen.NanoHTTPD.ServerSocketFactory +fi.iki.elonen.NanoHTTPD.TempFile +androidx.recyclerview.widget.ChildHelper.Callback +fi.iki.elonen.NanoHTTPD.TempFileManager +fi.iki.elonen.NanoHTTPD.TempFileManagerFactory +android.database.CrossProcessCursor +androidx.recyclerview.widget.ItemTouchHelper.ViewDropHandler +androidx.fragment.app.FragmentTransition.Callback +androidx.recyclerview.widget.ItemTouchUIUtil +org.ow2.asmdex.Constants +androidx.recyclerview.widget.ListUpdateCallback +com.telerik.android.data.CurrentItemChangedListener +com.telerik.android.data.DataChangedListener +androidx.recyclerview.widget.OpReorderer.Callback +com.telerik.android.data.ListViewFilterFunction +com.telerik.android.data.ListViewGroupFunction +com.telerik.android.data.ListViewSortFunction +com.telerik.android.data.OnJSONDataSourceCreated +com.telerik.android.data.SelectionAdapter +com.telerik.android.data.SelectionChangeListener +com.telerik.widget.list.CollapsedGroupState +com.telerik.widget.list.CollapsibleGroupsBehavior.CollapseGroupListener +androidx.recyclerview.widget.RecyclerView.ChildDrawingOrderCallback +androidx.recyclerview.widget.RecyclerView.EdgeEffectFactory.EdgeDirection +com.telerik.widget.list.CurrentPositionChangeListener +androidx.recyclerview.widget.RecyclerView.ItemAnimator.AdapterChanges +androidx.recyclerview.widget.RecyclerView.ItemAnimator.ItemAnimatorFinishedListener +androidx.recyclerview.widget.RecyclerView.ItemAnimator.ItemAnimatorListener +android.bluetooth.BluetoothAdapter.LeScanCallback +androidx.recyclerview.widget.RecyclerView.LayoutManager.LayoutPrefetchRegistry +android.bluetooth.BluetoothProfile.ServiceListener +android.bluetooth.BluetoothProfile +androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener +androidx.recyclerview.widget.RecyclerView.OnItemTouchListener +androidx.recyclerview.widget.RecyclerView.Orientation +android.transition.Transition.TransitionListener +androidx.recyclerview.widget.RecyclerView.RecyclerListener +android.speech.tts.TextToSpeech.OnUtteranceCompletedListener +androidx.recyclerview.widget.RecyclerView.SmoothScroller.ScrollVectorProvider +android.speech.tts.SynthesisCallback +android.speech.tts.TextToSpeech.OnInitListener +android.speech.RecognitionListener +android.text.ParcelableSpan +android.text.method.TransformationMethod +android.text.method.KeyListener +android.text.method.MovementMethod +android.text.Html.TagHandler +android.text.Editable +android.text.Spanned +android.text.Html.ImageGetter +org.ow2.asmdex.Opcodes +com.telerik.widget.list.GroupAdapter +com.telerik.widget.list.ItemReorderBehavior.ItemReorderListener +org.ow2.asmdex.instruction.IDebugDifferenceAddressInstruction +org.ow2.asmdex.instruction.IDebugDifferenceLineInstruction +org.ow2.asmdex.instruction.IDebugLocalVariableInstruction +org.ow2.asmdex.instruction.IDebugLocalVariableStartInstruction +org.ow2.asmdex.instruction.IDebugRegisterInstruction +org.ow2.asmdex.instruction.IDebugSourceNameInstruction +org.ow2.asmdex.instruction.IIndexInstruction +org.ow2.asmdex.instruction.ILiteralInstruction +org.ow2.asmdex.instruction.ILongLiteralInstruction +org.ow2.asmdex.instruction.IOffsetInstruction +org.ow2.asmdex.instruction.IOneRegisterInstruction +org.ow2.asmdex.instruction.IPseudoInstruction +org.ow2.asmdex.instruction.IRegisterArrayInstruction +org.ow2.asmdex.instruction.IThreeRegistersInstruction +org.ow2.asmdex.instruction.ITwoRegistersInstruction +androidx.recyclerview.widget.ThreadUtil.BackgroundCallback +androidx.recyclerview.widget.ThreadUtil.MainThreadCallback +androidx.recyclerview.widget.ThreadUtil +com.telerik.widget.list.LoadOnDemandBehavior.LoadOnDemandListener +com.telerik.widget.list.LoadOnDemandBehavior.LoadingListener +androidx.recyclerview.widget.ViewBoundsCheck.Callback +androidx.recyclerview.widget.ViewBoundsCheck.ViewBounds +androidx.recyclerview.widget.ViewInfoStore.ProcessCallback +com.telerik.widget.list.RadListView.IsEmptyChangedListener +com.telerik.widget.list.RadListView.ItemClickListener +android.text.InputType +android.text.GetChars +android.text.style.LineHeightSpan.WithDensity +android.text.style.LeadingMarginSpan.LeadingMarginSpan2 +android.text.style.AlignmentSpan +org.ow2.asmdex.lowLevelUtils.IDalvikValueReader +org.ow2.asmdex.specificAnnotationParser.ISpecificAnnotationParser +android.text.style.LeadingMarginSpan +android.text.style.UpdateLayout +android.text.style.UpdateAppearance +android.text.style.WrapTogetherSpan +android.text.style.LineBackgroundSpan +org.ow2.asmdex.structureReader.ISwitchCase +com.telerik.widget.list.SelectionBehavior.SelectionChangedListener +com.telerik.widget.list.SwipeActionsBehavior.SwipeActionsListener +kotlin.PublishedApi +kotlin.native.concurrent.ThreadLocal +kotlin.native.concurrent.SharedImmutable +kotlin.ExtensionFunctionType +kotlin.Lazy +com.telerik.widget.list.SwipeExecuteBehavior.SwipeExecuteDismissedListener +com.telerik.widget.list.SwipeExecuteBehavior.SwipeExecuteListener +kotlin.contracts.ConditionalEffect +kotlin.contracts.Effect +kotlin.contracts.SimpleEffect +kotlin.contracts.ExperimentalContracts +kotlin.contracts.Returns +kotlin.contracts.CallsInPlace +kotlin.contracts.ContractBuilder +kotlin.contracts.ReturnsNotNull +kotlin.jvm.JvmSuppressWildcards +kotlin.jvm.JvmMultifileClass +kotlin.jvm.Volatile +kotlin.jvm.JvmDefault +kotlin.jvm.internal.FunctionBase +android.text.style.LineHeightSpan +android.text.style.TabStopSpan +android.text.style.ParagraphStyle +android.text.util.Linkify.MatchFilter +android.text.util.Linkify.TransformFilter +android.text.TextWatcher +android.text.Spannable +android.text.TextUtils.EllipsizeCallback +android.text.NoCopySpan +android.text.TextUtils.StringSplitter +android.text.SpanWatcher +android.text.InputFilter +android.text.TextDirectionHeuristic +kotlin.jvm.internal.ClassBasedDeclarationContainer +org.ow2.asmdex.structureWriter.IAnnotationsHolder +android.hardware.Camera.AutoFocusCallback +android.hardware.Camera.OnZoomChangeListener +kotlin.jvm.internal.markers.KMutableSet +kotlin.jvm.internal.markers.KMutableList +kotlin.jvm.internal.markers.KMutableMap.Entry +android.hardware.Camera.PreviewCallback +kotlin.jvm.internal.markers.KMutableIterator +android.hardware.Camera.FaceDetectionListener +kotlin.jvm.internal.markers.KMutableListIterator +kotlin.jvm.internal.markers.KMutableCollection +kotlin.jvm.internal.markers.KMutableIterable +kotlin.jvm.internal.markers.KMappedMarker +kotlin.jvm.internal.markers.KMutableMap +kotlin.jvm.Strictfp +kotlin.jvm.JvmStatic +kotlin.jvm.JvmOverloads +kotlin.jvm.Transient +kotlin.jvm.functions.Function8 +kotlin.jvm.functions.FunctionN +android.hardware.display.DisplayManager.DisplayListener +kotlin.jvm.functions.Function7 +kotlin.jvm.functions.Function5 +kotlin.jvm.functions.Function9 +kotlin.jvm.functions.Function0 +kotlin.jvm.functions.Function13 +kotlin.jvm.functions.Function4 +kotlin.jvm.functions.Function12 +kotlin.jvm.functions.Function10 +kotlin.jvm.functions.Function2 +android.hardware.SensorListener +kotlin.jvm.functions.Function6 +kotlin.jvm.functions.Function1 +kotlin.jvm.functions.Function18 +kotlin.jvm.functions.Function22 +kotlin.jvm.functions.Function21 +kotlin.jvm.functions.Function19 +kotlin.jvm.functions.Function11 +kotlin.jvm.functions.Function16 +kotlin.jvm.functions.Function20 +android.hardware.Camera.AutoFocusMoveCallback +kotlin.jvm.functions.Function14 +kotlin.jvm.functions.Function15 +kotlin.jvm.functions.Function3 +kotlin.jvm.functions.Function17 +android.hardware.Camera.PictureCallback +kotlin.jvm.Synchronized +kotlin.jvm.JvmSynthetic +kotlin.jvm.JvmField +kotlin.jvm.JvmName +kotlin.jvm.PurelyImplements +kotlin.jvm.JvmPackageName +kotlin.jvm.Throws +android.hardware.Camera.ShutterCallback +kotlin.jvm.JvmWildcard +kotlin.DslMarker +kotlin.ReplaceWith +kotlin.internal.NoInfer +com.telerik.widget.list.SwipeRefreshBehavior.RefreshListener +com.telerik.widget.list.SwipeRefreshBehavior.SwipeRefreshListener +kotlin.internal.ContractsDsl +kotlin.internal.AccessibleLateinitPropertyLiteral +kotlin.internal.PlatformDependent +kotlin.internal.Exact +kotlin.internal.InlineOnly +kotlin.internal.RequireKotlin +kotlin.internal.PureReifiable +kotlin.internal.LowPriorityInOverloadResolution +kotlin.internal.OnlyInputTypes +kotlin.internal.HidesMembers +kotlin.internal.DynamicExtension +kotlin.UnsafeVariance +org.ow2.asmdex.util.TextComponent +kotlin.ranges.ClosedFloatingPointRange +androidx.multidex.MultiDex.V14.ElementConstructor +androidx.asynclayoutinflater.view.AsyncLayoutInflater.OnInflateFinishedListener +com.yalantis.ucrop.UCropActivity.GestureTypes +kotlin.ranges.ClosedRange +kotlin.reflect.KMutableProperty1 +kotlin.reflect.KProperty2.Getter +kotlin.reflect.KAnnotatedElement +kotlin.reflect.KClassifier +kotlin.reflect.KProperty.Accessor +kotlin.reflect.KClass +kotlin.reflect.KProperty2 +kotlin.reflect.KMutableProperty0.Setter +kotlin.reflect.KProperty1 +kotlin.reflect.KProperty0.Getter +kotlin.reflect.KMutableProperty2 +kotlin.reflect.KCallable +com.yalantis.ucrop.UCropFragment.GestureTypes +kotlin.reflect.KProperty.Getter +kotlin.reflect.KDeclarationContainer +kotlin.reflect.KProperty1.Getter +kotlin.reflect.KMutableProperty +kotlin.reflect.KMutableProperty1.Setter +kotlin.reflect.KMutableProperty0 +kotlin.reflect.KMutableProperty2.Setter +kotlin.reflect.KMutableProperty.Setter +com.yalantis.ucrop.UCropFragmentCallback +com.yalantis.ucrop.callback.BitmapCropCallback +kotlin.reflect.KParameter +com.yalantis.ucrop.callback.BitmapLoadCallback +com.yalantis.ucrop.callback.CropBoundsChangeListener +kotlin.reflect.KProperty +com.yalantis.ucrop.callback.OverlayViewChangeListener +kotlin.reflect.KTypeParameter +kotlin.reflect.KType +kotlin.reflect.KFunction +kotlin.reflect.KProperty0 +kotlin.ExperimentalStdlibApi +com.yalantis.ucrop.util.ImageHeaderParser.Reader +kotlin.OptIn +android.hardware.input.InputManager.InputDeviceListener +android.hardware.SensorEventListener +android.hardware.Camera.ErrorCallback +android.hardware.SensorEventListener2 +androidx.swiperefreshlayout.widget.CircularProgressDrawable.ProgressDrawableSize +kotlin.coroutines.RestrictsSuspension +kotlin.coroutines.ContinuationInterceptor +kotlin.coroutines.jvm.internal.DebugMetadata +kotlin.coroutines.jvm.internal.CoroutineStackFrame +androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback +androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener +kotlin.coroutines.jvm.internal.SuspendFunction +kotlin.coroutines.CoroutineContext.Key +androidx.activity.Cancellable +androidx.activity.OnBackPressedDispatcherOwner +kotlin.coroutines.CoroutineContext.Element +android.service.autofill.Transformation +android.service.autofill.OnClickAction +kotlin.coroutines.CoroutineContext +kotlin.coroutines.Continuation +android.service.autofill.Sanitizer +android.service.autofill.Validator +androidx.versionedparcelable.NonParcelField +androidx.versionedparcelable.ParcelField +kotlin.Metadata +kotlin.UseExperimental +android.service.carrier.CarrierMessagingService.ResultCallback +kotlin.text.FlagEnum +kotlin.text.MatchGroupCollection +android.webkit.JavascriptInterface +android.webkit.WebResourceRequest +android.webkit.WebChromeClient.CustomViewCallback +android.webkit.DownloadListener +android.webkit.WebView.FindListener +android.webkit.WebIconDatabase.IconListener +android.webkit.WebView.PictureListener +android.webkit.PluginStub +android.webkit.ValueCallback +android.webkit.WebStorage.QuotaUpdater +android.webkit.GeolocationPermissions.Callback +kotlin.text.MatchNamedGroupCollection +com.yalantis.ucrop.util.RotationGestureDetector.OnRotationGestureListener +com.yalantis.ucrop.view.OverlayView.FreestyleMode +com.yalantis.ucrop.view.TransformImageView.TransformImageListener +com.yalantis.ucrop.view.widget.HorizontalProgressWheelView.ScrollingListener +kotlin.text.MatchResult +androidx.exifinterface.media.ExifInterface.ExifStreamType +androidx.exifinterface.media.ExifInterface.IfdType +kotlin.time.ExperimentalTime +kotlin.time.TimeSource +kotlin.experimental.ExperimentalTypeInference +android.app.LoaderManager.LoaderCallbacks +android.app.AppOpsManager.OnOpChangedListener +android.app.SharedElementCallback.OnSharedElementsReadyListener +android.app.DatePickerDialog.OnDateSetListener +kotlin.sequences.Sequence +android.app.Application.ActivityLifecycleCallbacks +android.app.FragmentManager.OnBackStackChangedListener +android.app.Notification.Action.Extender +android.app.KeyguardManager.OnKeyguardExitResult +android.app.FragmentManager.BackStackEntry +androidx.versionedparcelable.VersionedParcelable +androidx.versionedparcelable.VersionedParcelize +androidx.legacy.app.ActionBarDrawerToggle.Delegate +androidx.legacy.app.ActionBarDrawerToggle.DelegateProvider +android.app.PendingIntent.OnFinished +androidx.arch.core.internal.SafeIterableMap.SupportRemove +androidx.arch.core.util.Function +android.app.TimePickerDialog.OnTimeSetListener +androidx.customview.widget.FocusStrategy.BoundsAdapter +androidx.customview.widget.FocusStrategy.CollectionAdapter +kotlin.sequences.DropTakeSequence +androidx.transition.AnimatorUtils.AnimatorPauseListenerCompat +kotlin.ExperimentalMultiplatform +kotlin.BuilderInference +androidx.appcompat.widget.ResourceManagerInternal.InflateDelegate +androidx.appcompat.widget.ResourceManagerInternal.ResourceManagerHooks +androidx.lifecycle.HasDefaultViewModelProviderFactory +androidx.lifecycle.ViewModelProvider.Factory +androidx.lifecycle.ViewModelStoreOwner +org.nativescript.widgets.Async.CompleteCallback +androidx.transition.GhostView +kotlin.collections.Grouping +android.app.ActionBar.TabListener androidx.transition.Slide.CalculateSlide androidx.transition.Slide.GravityFlag +android.app.UiAutomation.AccessibilityEventFilter androidx.transition.Styleable.ArcMotion androidx.transition.Styleable.ChangeBounds androidx.transition.Styleable.ChangeTransform @@ -328,54 +660,46 @@ androidx.transition.Styleable.TransitionTarget androidx.transition.Styleable.VisibilityTransition androidx.transition.Transition.MatchOrder androidx.transition.Transition.TransitionListener +org.nativescript.widgets.BottomNavigationBar.TabColorizer +org.nativescript.widgets.FlexboxLayout.AlignContent +org.nativescript.widgets.FlexboxLayout.AlignItems +org.nativescript.widgets.FlexboxLayout.DividerMode +org.nativescript.widgets.FlexboxLayout.FlexDirection +org.nativescript.widgets.FlexboxLayout.FlexWrap +org.nativescript.widgets.FlexboxLayout.JustifyContent +android.app.ZygotePreload +android.app.SearchManager.OnDismissListener +android.app.ActionBar.OnNavigationListener +android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener +android.app.AlarmManager.OnAlarmListener +android.app.SearchManager.OnCancelListener +android.app.Notification.Extender +android.app.UiAutomation.OnAccessibilityEventListener +android.app.ActionBar.OnMenuVisibilityListener +android.app.WallpaperManager.OnColorsChangedListener +android.app.Application.OnProvideAssistDataListener +android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener androidx.transition.ViewGroupOverlayImpl +android.app.backup.BackupHelper androidx.transition.ViewOverlayImpl -androidx.core.view.DragStartHelper.OnDragStartListener -androidx.core.view.GestureDetectorCompat.GestureDetectorCompatImpl androidx.transition.Visibility.Mode -com.tns.bindings.desc.ClassDescriptor -com.tns.bindings.desc.Descriptor -com.tns.bindings.desc.MethodDescriptor -android.companion.DeviceFilter -androidx.core.view.KeyEventDispatcher.Component +android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener +android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener androidx.transition.WindowIdImpl -com.tns.system.classes.caching.ClassCache -androidx.core.view.LayoutInflaterFactory -com.tns.system.classes.loading.ClassStorageService -com.tns.system.classloaders.ClassLoadersCollection -androidx.core.view.MenuItemCompat.OnActionExpandListener androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener -fi.iki.elonen.NanoHTTPD.AsyncRunner -androidx.core.view.NestedScrollingChild -androidx.core.view.NestedScrollingChild2 -androidx.core.view.NestedScrollingChild3 -androidx.core.view.NestedScrollingParent -androidx.core.view.NestedScrollingParent2 -androidx.core.view.NestedScrollingParent3 -androidx.core.view.OnApplyWindowInsetsListener -android.se.omapi.SEService.OnConnectedListener -androidx.core.view.ScrollingView -androidx.core.view.TintableBackgroundView +android.preference.PreferenceDataStore +android.preference.PreferenceManager.OnActivityStopListener +android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback com.telerik.android.common.CollectionChangeListener +org.nativescript.widgets.TabLayout.TabColorizer com.telerik.android.common.DependencyPropertyChangedListener com.telerik.android.common.Function com.telerik.android.common.Function2 -android.database.Cursor com.telerik.android.common.Function2Async -android.database.DatabaseErrorHandler com.telerik.android.common.Procedure com.telerik.android.common.Procedure2 -androidx.core.view.ViewCompat.FocusDirection -androidx.core.view.ViewCompat.FocusRealDirection -androidx.core.view.ViewCompat.FocusRelativeDirection -androidx.core.view.ViewCompat.NestedScrollType -androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat -androidx.core.view.ViewCompat.ScrollAxis -androidx.core.view.ViewCompat.ScrollIndicators -android.database.sqlite.SQLiteDatabase.CursorFactory -android.database.sqlite.SQLiteCursorDriver -android.database.sqlite.SQLiteTransactionListener -android.database.CrossProcessCursor +org.nativescript.widgets.TabsBar.TabColorizer +org.nativescript.widgets.image.BitmapOwner androidx.annotation.experimental.Experimental androidx.annotation.experimental.UseExperimental org.intellij.lang.annotations.Flow @@ -408,275 +732,70 @@ org.jetbrains.annotations.NotNull org.jetbrains.annotations.Nullable org.jetbrains.annotations.PropertyKey org.jetbrains.annotations.TestOnly +org.nativescript.widgets.image.Worker.OnImageLoadedListener com.google.android.material.animation.TransformationCallback -fi.iki.elonen.NanoHTTPD.IHTTPSession -android.bluetooth.BluetoothAdapter.LeScanCallback -fi.iki.elonen.NanoHTTPD.Response.IStatus +androidx.loader.app.LoaderManager.LoaderCallbacks com.google.android.material.appbar.AppBarLayout.BaseOnOffsetChangedListener com.google.android.material.appbar.AppBarLayout.LayoutParams.ScrollFlags +androidx.loader.content.Loader.OnLoadCanceledListener +androidx.loader.content.Loader.OnLoadCompleteListener com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener -android.bluetooth.BluetoothProfile.ServiceListener -android.bluetooth.BluetoothProfile -fi.iki.elonen.NanoHTTPD.ServerSocketFactory -fi.iki.elonen.NanoHTTPD.TempFile -fi.iki.elonen.NanoHTTPD.TempFileManager -fi.iki.elonen.NanoHTTPD.TempFileManagerFactory -android.transition.Transition.TransitionListener com.google.android.material.badge.BadgeDrawable.BadgeGravity -android.speech.tts.TextToSpeech.OnUtteranceCompletedListener -android.speech.tts.SynthesisCallback -android.speech.tts.TextToSpeech.OnInitListener -android.speech.RecognitionListener com.google.android.material.behavior.SwipeDismissBehavior.OnDismissListener -android.text.ParcelableSpan -android.text.method.TransformationMethod com.google.android.material.bottomappbar.BottomAppBar.AnimationListener com.google.android.material.bottomappbar.BottomAppBar.FabAlignmentMode com.google.android.material.bottomappbar.BottomAppBar.FabAnimationMode -android.text.method.KeyListener -android.text.method.MovementMethod -android.text.Html.TagHandler -android.text.Editable -android.text.Spanned -android.text.Html.ImageGetter -android.text.InputType -android.text.GetChars -org.ow2.asmdex.Constants -android.text.style.LineHeightSpan.WithDensity -android.text.style.LeadingMarginSpan.LeadingMarginSpan2 com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemReselectedListener com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener -android.text.style.AlignmentSpan com.google.android.material.bottomnavigation.LabelVisibilityMode -android.text.style.LeadingMarginSpan com.google.android.material.bottomsheet.BottomSheetBehavior.SaveFlags -android.text.style.UpdateLayout -android.text.style.UpdateAppearance com.google.android.material.bottomsheet.BottomSheetBehavior.State -android.text.style.WrapTogetherSpan -android.text.style.LineBackgroundSpan -androidx.core.view.ViewPropertyAnimatorListener -androidx.core.view.ViewPropertyAnimatorUpdateListener -org.ow2.asmdex.Opcodes -android.text.style.LineHeightSpan -android.text.style.TabStopSpan -android.text.style.ParagraphStyle -android.text.util.Linkify.MatchFilter -android.text.util.Linkify.TransformFilter +kotlin.collections.MapWithDefault +com.tapadoo.alerter.OnHideAlertListener +com.tapadoo.alerter.OnShowAlertListener +kotlin.collections.MutableMapWithDefault com.google.android.material.button.MaterialButton.IconGravity com.google.android.material.button.MaterialButton.OnCheckedChangeListener com.google.android.material.button.MaterialButton.OnPressedChangeListener -androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener -androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener -android.text.TextWatcher -android.text.Spannable -android.text.TextUtils.EllipsizeCallback -android.text.NoCopySpan -android.text.TextUtils.StringSplitter -android.text.SpanWatcher -android.text.InputFilter -android.text.TextDirectionHeuristic -com.google.android.material.button.MaterialButtonToggleGroup.OnButtonCheckedListener -android.hardware.Camera.AutoFocusCallback -android.hardware.Camera.OnZoomChangeListener -com.google.android.material.card.MaterialCardView.OnCheckedChangeListener -android.hardware.Camera.PreviewCallback -android.hardware.Camera.FaceDetectionListener -androidx.core.view.accessibility.AccessibilityViewCommand -androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener -androidx.core.view.inputmethod.InputContentInfoCompat.InputContentInfoCompatImpl -android.hardware.display.DisplayManager.DisplayListener -android.hardware.SensorListener -androidx.core.widget.AutoSizeableTextView -android.hardware.Camera.AutoFocusMoveCallback -android.hardware.Camera.PictureCallback -org.ow2.asmdex.instruction.IDebugDifferenceAddressInstruction -org.ow2.asmdex.instruction.IDebugDifferenceLineInstruction -org.ow2.asmdex.instruction.IDebugLocalVariableInstruction -org.ow2.asmdex.instruction.IDebugLocalVariableStartInstruction -org.ow2.asmdex.instruction.IDebugRegisterInstruction -org.ow2.asmdex.instruction.IDebugSourceNameInstruction -androidx.core.widget.NestedScrollView.OnScrollChangeListener -org.ow2.asmdex.instruction.IIndexInstruction -org.ow2.asmdex.instruction.ILiteralInstruction -org.ow2.asmdex.instruction.ILongLiteralInstruction -org.ow2.asmdex.instruction.IOffsetInstruction -org.ow2.asmdex.instruction.IOneRegisterInstruction -org.ow2.asmdex.instruction.IPseudoInstruction -org.ow2.asmdex.instruction.IRegisterArrayInstruction -org.ow2.asmdex.instruction.IThreeRegistersInstruction -org.ow2.asmdex.instruction.ITwoRegistersInstruction -android.hardware.Camera.ShutterCallback -com.google.android.material.chip.ChipDrawable.Delegate -android.hardware.input.InputManager.InputDeviceListener -android.hardware.SensorEventListener -android.hardware.Camera.ErrorCallback -android.hardware.SensorEventListener2 -androidx.core.widget.TextViewCompat.AutoSizeTextType -com.google.android.material.chip.ChipGroup.OnCheckedChangeListener -androidx.core.widget.TintableCompoundButton -androidx.core.widget.TintableCompoundDrawablesView -androidx.core.widget.TintableImageSourceView -androidx.recyclerview.widget.AdapterHelper.Callback -com.google.android.material.circularreveal.CircularRevealHelper.Delegate -com.google.android.material.circularreveal.CircularRevealHelper.Strategy -org.ow2.asmdex.lowLevelUtils.IDalvikValueReader -androidx.recyclerview.widget.AsyncListDiffer.ListListener -com.google.android.material.circularreveal.CircularRevealWidget -com.google.android.material.datepicker.CalendarConstraints.DateValidator -androidx.recyclerview.widget.ChildHelper.Callback -com.google.android.material.datepicker.DateSelector -android.service.autofill.Transformation -android.service.autofill.OnClickAction -com.google.android.material.datepicker.MaterialCalendar.OnDayClickListener -android.service.autofill.Sanitizer -android.service.autofill.Validator -com.google.android.material.datepicker.MaterialDatePicker.InputMode -com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener -org.ow2.asmdex.specificAnnotationParser.ISpecificAnnotationParser -android.service.carrier.CarrierMessagingService.ResultCallback -android.webkit.JavascriptInterface -android.webkit.WebResourceRequest -android.webkit.WebChromeClient.CustomViewCallback -android.webkit.DownloadListener -android.webkit.WebView.FindListener -com.google.android.material.expandable.ExpandableTransformationWidget -com.google.android.material.expandable.ExpandableWidget -android.webkit.WebIconDatabase.IconListener -org.ow2.asmdex.structureReader.ISwitchCase -android.webkit.WebView.PictureListener -android.webkit.PluginStub -android.webkit.ValueCallback -android.webkit.WebStorage.QuotaUpdater -android.webkit.GeolocationPermissions.Callback -com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size -com.google.android.material.floatingactionbutton.FloatingActionButton.Size -org.ow2.asmdex.structureWriter.IAnnotationsHolder -com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.InternalTransformationCallback -com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.InternalVisibilityChangedListener -android.app.LoaderManager.LoaderCallbacks -android.app.AppOpsManager.OnOpChangedListener -android.app.SharedElementCallback.OnSharedElementsReadyListener -android.app.DatePickerDialog.OnDateSetListener -com.google.android.material.floatingactionbutton.MotionStrategy -android.app.Application.ActivityLifecycleCallbacks -android.app.FragmentManager.OnBackStackChangedListener -com.google.android.material.internal.Experimental -android.app.Notification.Action.Extender -android.app.KeyguardManager.OnKeyguardExitResult -android.app.FragmentManager.BackStackEntry -com.google.android.material.internal.NavigationMenuPresenter.NavigationMenuItem -androidx.recyclerview.widget.ItemTouchHelper.ViewDropHandler -android.app.PendingIntent.OnFinished -com.google.android.material.internal.TextDrawableHelper.TextDrawableDelegate -androidx.recyclerview.widget.ItemTouchUIUtil -android.app.TimePickerDialog.OnTimeSetListener -com.google.android.material.internal.ViewGroupOverlayImpl -com.google.android.material.internal.ViewOverlayImpl -com.google.android.material.internal.ViewUtils.OnApplyWindowInsetsListener -android.app.ActionBar.TabListener -com.google.android.material.internal.package-info -com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener -org.ow2.asmdex.util.TextComponent -android.app.UiAutomation.AccessibilityEventFilter -androidx.multidex.MultiDex.V14.ElementConstructor -androidx.recyclerview.widget.ListUpdateCallback -com.google.android.material.resources.CancelableFontCallback.ApplyFont -androidx.recyclerview.widget.OpReorderer.Callback -com.google.android.material.shadow.ShadowViewDelegate -com.google.android.material.shape.CornerFamily -com.google.android.material.shape.CornerSize -android.app.ZygotePreload -androidx.recyclerview.widget.RecyclerView.ChildDrawingOrderCallback -android.app.SearchManager.OnDismissListener -androidx.recyclerview.widget.RecyclerView.EdgeEffectFactory.EdgeDirection -androidx.recyclerview.widget.RecyclerView.ItemAnimator.AdapterChanges -androidx.recyclerview.widget.RecyclerView.ItemAnimator.ItemAnimatorFinishedListener -com.google.android.material.shape.MaterialShapeDrawable.CompatibilityShadowMode -androidx.recyclerview.widget.RecyclerView.ItemAnimator.ItemAnimatorListener -android.app.ActionBar.OnNavigationListener -androidx.recyclerview.widget.RecyclerView.LayoutManager.LayoutPrefetchRegistry -android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener -android.app.AlarmManager.OnAlarmListener -android.app.SearchManager.OnCancelListener -com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator -com.google.android.material.shape.ShapeAppearancePathProvider.PathListener -androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener -androidx.recyclerview.widget.RecyclerView.OnItemTouchListener -androidx.recyclerview.widget.RecyclerView.Orientation -androidx.recyclerview.widget.RecyclerView.RecyclerListener -com.google.android.material.shape.Shapeable -com.google.android.material.slider.BaseOnChangeListener -android.app.Notification.Extender -android.app.UiAutomation.OnAccessibilityEventListener -com.google.android.material.slider.BaseOnSliderTouchListener -androidx.recyclerview.widget.RecyclerView.SmoothScroller.ScrollVectorProvider -android.app.ActionBar.OnMenuVisibilityListener -androidx.swiperefreshlayout.widget.CircularProgressDrawable.ProgressDrawableSize -com.google.android.material.slider.BaseSlider.TooltipDrawableFactory -android.app.WallpaperManager.OnColorsChangedListener -android.app.Application.OnProvideAssistDataListener -androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback -androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener -com.google.android.material.slider.LabelFormatter -com.google.android.material.slider.RangeSlider.OnChangeListener -com.google.android.material.slider.RangeSlider.OnSliderTouchListener -androidx.activity.Cancellable -com.google.android.material.slider.Slider.OnChangeListener -com.google.android.material.slider.Slider.OnSliderTouchListener -androidx.activity.OnBackPressedDispatcherOwner -android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener -com.google.android.material.snackbar.BaseTransientBottomBar.AnimationMode -com.google.android.material.snackbar.BaseTransientBottomBar.BaseCallback.DismissEvent -com.google.android.material.snackbar.BaseTransientBottomBar.ContentViewCallback -com.google.android.material.snackbar.BaseTransientBottomBar.Duration -com.google.android.material.snackbar.BaseTransientBottomBar.OnAttachStateChangeListener -com.google.android.material.snackbar.BaseTransientBottomBar.OnLayoutChangeListener -android.app.backup.BackupHelper -com.google.android.material.snackbar.ContentViewCallback -com.google.android.material.snackbar.SnackbarManager.Callback -android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener -android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener -com.google.android.material.tabs.TabLayout.BaseOnTabSelectedListener -com.google.android.material.tabs.TabLayout.LabelVisibility -com.google.android.material.tabs.TabLayout.Mode -com.google.android.material.tabs.TabLayout.OnTabSelectedListener -android.preference.PreferenceDataStore -com.google.android.material.tabs.TabLayout.TabGravity -com.google.android.material.tabs.TabLayout.TabIndicatorGravity -android.preference.PreferenceManager.OnActivityStopListener -android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback android.preference.Preference.OnPreferenceChangeListener android.preference.PreferenceManager.OnActivityDestroyListener -com.google.android.material.tabs.TabLayoutMediator.TabConfigurationStrategy android.preference.Preference.OnPreferenceClickListener android.preference.PreferenceManager.OnActivityResultListener android.accounts.AccountManagerFuture android.accounts.OnAccountsUpdateListener android.accounts.AccountManagerCallback +kotlin.ExperimentalUnsignedTypes android.provider.ContactsContract.DataColumnsWithJoins android.provider.ContactsContract.PhoneticNameStyle android.provider.CalendarContract.CalendarCacheColumns android.provider.Contacts.OrganizationColumns android.provider.MediaStore.Video.VideoColumns android.provider.ContactsContract.SyncColumns +kotlin.Suppress android.provider.ContactsContract.DataUsageStatColumns +kotlin.OptionalExpectation +kotlin.annotation.MustBeDocumented +kotlin.annotation.Repeatable +kotlin.annotation.Target +kotlin.annotation.Retention android.provider.OpenableColumns android.provider.ContactsContract.ContactsColumns android.provider.MediaStore.Audio.ArtistColumns android.provider.Telephony.TextBasedSmsColumns android.provider.Contacts.PhonesColumns +kotlin.Experimental +kotlin.Function android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.CalendarContract.ColorsColumns -androidx.versionedparcelable.NonParcelField -androidx.versionedparcelable.ParcelField +kotlin.WasExperimental +kotlin.properties.ReadWriteProperty android.provider.CalendarContract.EventDaysColumns +kotlin.properties.ReadOnlyProperty android.provider.ContactsContract.ContactOptionsColumns -com.google.android.material.textfield.TextInputLayout.BoxBackgroundMode -com.google.android.material.textfield.TextInputLayout.EndIconMode -com.google.android.material.textfield.TextInputLayout.OnEditTextAttachedListener -com.google.android.material.textfield.TextInputLayout.OnEndIconChangedListener android.provider.Contacts.PeopleColumns +kotlin.js.JsName +kotlin.Deprecated +kotlin.ParameterName android.provider.BaseColumns android.provider.ContactsContract.CommonDataKinds.BaseTypes android.provider.MediaStore.DownloadColumns @@ -685,246 +804,168 @@ android.provider.Contacts.ExtensionsColumns android.provider.MediaStore.Audio.AudioColumns android.provider.CalendarContract.RemindersColumns android.provider.MediaStore.Images.ImageColumns -androidx.versionedparcelable.VersionedParcelable -androidx.versionedparcelable.VersionedParcelize -androidx.legacy.app.ActionBarDrawerToggle.Delegate -androidx.legacy.app.ActionBarDrawerToggle.DelegateProvider +kotlin.RequiresOptIn +kotlin.SinceKotlin android.provider.ContactsContract.StatusColumns android.provider.CalendarContract.CalendarSyncColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.DisplayNameSources +com.tapadoo.alerter.SwipeDismissTouchListener.DismissCallbacks android.provider.SyncStateContract.Columns android.provider.ContactsContract.PhoneLookupColumns +kotlin.coroutines.experimental.RestrictsSuspension +kotlin.coroutines.experimental.ContinuationInterceptor android.provider.ContactsContract.DeletedContactsColumns android.provider.ContactsContract.GroupsColumns android.provider.Contacts.PhotosColumns +kotlin.coroutines.experimental.CoroutineContext.Key android.provider.ContactsContract.FullNameStyle -com.google.android.material.transition.FadeModeEvaluator android.provider.CalendarContract.ExtendedPropertiesColumns android.provider.MediaStore.Files.FileColumns -com.google.android.material.transition.FitModeEvaluator android.provider.MediaStore.Audio.GenresColumns +kotlin.coroutines.experimental.CoroutineContext.Element +kotlin.coroutines.experimental.CoroutineContext android.provider.Contacts.SettingsColumns android.provider.CalendarContract.CalendarColumns -com.google.android.material.transition.MaterialContainerTransform.FadeMode +androidx.viewpager.widget.ViewPager.DecorView +kotlin.coroutines.experimental.Continuation android.provider.CalendarContract.EventsColumns -com.google.android.material.transition.MaterialContainerTransform.FitMode -com.google.android.material.transition.MaterialContainerTransform.TransitionDirection +androidx.viewpager.widget.ViewPager.OnAdapterChangeListener +androidx.viewpager.widget.ViewPager.OnPageChangeListener +androidx.viewpager.widget.ViewPager.PageTransformer android.provider.Telephony.BaseMmsColumns android.provider.ContactsContract.PresenceColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.DataColumns -com.google.android.material.transition.MaterialSharedAxis.Axis android.provider.ContactsContract.RawContactsColumns android.provider.Contacts.GroupsColumns android.provider.Contacts.ContactMethodsColumns -com.google.android.material.transition.SlideDistanceProvider.GravityFlag android.provider.Telephony.ThreadsColumns android.provider.ContactsContract.SettingsColumns -com.google.android.material.transition.TransitionUtils.CanvasOperation android.provider.CalendarContract.AttendeesColumns -com.google.android.material.transition.TransitionUtils.CornerSizeBinaryOperator -com.google.android.material.transition.VisibilityAnimatorProvider -com.google.android.material.transition.platform.FadeModeEvaluator android.provider.ContactsContract.BaseSyncColumns android.provider.MediaStore.Audio.PlaylistsColumns android.provider.CalendarContract.SyncColumns android.provider.Telephony.CanonicalAddressesColumns android.provider.CalendarContract.CalendarAlertsColumns -com.google.android.material.transition.platform.FitModeEvaluator +androidx.lifecycle.FullLifecycleObserver +androidx.lifecycle.GeneratedAdapter +androidx.lifecycle.GenericLifecycleObserver android.provider.Contacts.PresenceColumns android.provider.MediaStore.Audio.AlbumColumns -com.google.android.material.transition.platform.MaterialContainerTransform.FadeMode -com.google.android.material.transition.platform.MaterialContainerTransform.FitMode -com.google.android.material.transition.platform.MaterialContainerTransform.TransitionDirection +androidx.lifecycle.LifecycleEventObserver +androidx.lifecycle.LifecycleObserver +androidx.lifecycle.LifecycleOwner android.os.Parcelable.ClassLoaderCreator android.os.IInterface +androidx.lifecycle.OnLifecycleEvent +com.google.android.material.button.MaterialButtonToggleGroup.OnButtonCheckedListener +com.google.android.material.card.MaterialCardView.OnCheckedChangeListener +com.google.android.material.chip.ChipDrawable.Delegate android.os.Parcelable.Creator -com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.ShapeProvider android.os.IBinder.DeathRecipient android.os.MessageQueue.OnFileDescriptorEventListener android.os.StrictMode.OnThreadViolationListener -com.google.android.material.transition.platform.MaterialSharedAxis.Axis -com.google.android.material.transition.platform.SlideDistanceProvider.GravityFlag -com.google.android.material.transition.platform.TransitionUtils.CanvasOperation -com.google.android.material.transition.platform.TransitionUtils.CornerSizeBinaryOperator android.os.PowerManager.OnThermalStatusChangedListener -com.google.android.material.transition.platform.VisibilityAnimatorProvider android.os.RecoverySystem.ProgressListener -androidx.lifecycle.LifecycleRegistryOwner -androidx.lifecycle.ReportFragment.ActivityInitializationListener android.os.FileUtils.ProgressListener -androidx.arch.core.internal.SafeIterableMap.SupportRemove android.os.ParcelFileDescriptor.OnCloseListener -androidx.arch.core.util.Function -androidx.lifecycle.HasDefaultViewModelProviderFactory -androidx.lifecycle.ViewModelProvider.Factory -androidx.lifecycle.ViewModelStoreOwner -org.nativescript.widgets.Async.CompleteCallback android.os.MessageQueue.IdleHandler android.os.StrictMode.OnVmViolationListener android.os.CancellationSignal.OnCancelListener android.os.Handler.Callback -androidx.recyclerview.widget.ThreadUtil.BackgroundCallback -androidx.recyclerview.widget.ThreadUtil.MainThreadCallback -androidx.recyclerview.widget.ThreadUtil -androidx.recyclerview.widget.ViewBoundsCheck.Callback -androidx.recyclerview.widget.ViewBoundsCheck.ViewBounds -androidx.recyclerview.widget.ViewInfoStore.ProcessCallback +com.google.android.material.chip.ChipGroup.OnCheckedChangeListener android.os.IBinder android.os.Parcelable +com.google.android.material.circularreveal.CircularRevealHelper.Delegate +com.google.android.material.circularreveal.CircularRevealHelper.Strategy +com.google.android.material.circularreveal.CircularRevealWidget +com.google.android.material.datepicker.CalendarConstraints.DateValidator android.content.DialogInterface.OnCancelListener -org.nativescript.widgets.BottomNavigationBar.TabColorizer android.content.DialogInterface.OnShowListener android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.content.ContentProvider.PipeDataWriter -org.nativescript.widgets.FlexboxLayout.AlignContent -org.nativescript.widgets.FlexboxLayout.AlignItems -org.nativescript.widgets.FlexboxLayout.DividerMode -org.nativescript.widgets.FlexboxLayout.FlexDirection -org.nativescript.widgets.FlexboxLayout.FlexWrap -org.nativescript.widgets.FlexboxLayout.JustifyContent -com.nativescript.text.Font.FontWeight -com.nativescript.text.Font.genericFontFamilies +com.google.android.material.datepicker.DateSelector +com.google.android.material.datepicker.MaterialCalendar.OnDayClickListener +com.google.android.material.datepicker.MaterialDatePicker.InputMode +com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener android.content.IntentSender.OnFinished -kotlin.PublishedApi -kotlin.native.concurrent.ThreadLocal -kotlin.native.concurrent.SharedImmutable -kotlin.ExtensionFunctionType -kotlin.Lazy -kotlin.contracts.ConditionalEffect -kotlin.contracts.Effect -kotlin.contracts.SimpleEffect -kotlin.contracts.ExperimentalContracts -kotlin.contracts.Returns -kotlin.contracts.CallsInPlace android.content.ClipboardManager.OnPrimaryClipChangedListener -kotlin.contracts.ContractBuilder -kotlin.contracts.ReturnsNotNull -kotlin.jvm.JvmSuppressWildcards -kotlin.jvm.JvmMultifileClass -kotlin.jvm.Volatile android.content.DialogInterface.OnKeyListener android.content.DialogInterface android.content.DialogInterface.OnMultiChoiceClickListener -org.nativescript.widgets.TabLayout.TabColorizer -androidx.viewpager.widget.ViewPager.DecorView -androidx.viewpager.widget.ViewPager.OnAdapterChangeListener -androidx.viewpager.widget.ViewPager.OnPageChangeListener -androidx.viewpager.widget.ViewPager.PageTransformer -org.nativescript.widgets.TabsBar.TabColorizer +com.google.android.material.expandable.ExpandableTransformationWidget +com.google.android.material.expandable.ExpandableWidget android.content.EntityIterator android.content.ComponentCallbacks android.content.SharedPreferences +com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size +com.google.android.material.floatingactionbutton.FloatingActionButton.Size android.content.Loader.OnLoadCanceledListener android.content.ComponentCallbacks2 android.content.ServiceConnection -androidx.lifecycle.FullLifecycleObserver -androidx.lifecycle.GeneratedAdapter -androidx.lifecycle.GenericLifecycleObserver +com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.InternalTransformationCallback +com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.InternalVisibilityChangedListener android.content.SharedPreferences.Editor -org.nativescript.widgets.image.BitmapOwner -androidx.lifecycle.LifecycleEventObserver -androidx.lifecycle.LifecycleObserver -androidx.lifecycle.LifecycleOwner -androidx.lifecycle.OnLifecycleEvent +com.google.android.material.floatingactionbutton.MotionStrategy android.content.Loader.OnLoadCompleteListener android.content.res.XmlResourceParser -org.nativescript.widgets.image.Worker.OnImageLoadedListener android.content.SyncStatusObserver +com.google.android.material.internal.Experimental android.content.SharedPreferences.OnSharedPreferenceChangeListener android.drm.DrmManagerClient.OnInfoListener -androidx.loader.app.LoaderManager.LoaderCallbacks android.drm.DrmManagerClient.OnEventListener android.drm.DrmStore.ConstraintsColumns -androidx.loader.content.Loader.OnLoadCanceledListener -androidx.loader.content.Loader.OnLoadCompleteListener android.drm.DrmManagerClient.OnErrorListener -com.tapadoo.alerter.OnHideAlertListener -com.tapadoo.alerter.OnShowAlertListener +com.google.android.material.internal.NavigationMenuPresenter.NavigationMenuItem android.util.Printer -kotlin.jvm.JvmDefault -kotlin.jvm.internal.FunctionBase -com.tapadoo.alerter.SwipeDismissTouchListener.DismissCallbacks android.util.AttributeSet -kotlin.jvm.internal.ClassBasedDeclarationContainer -kotlin.jvm.internal.markers.KMutableSet -kotlin.jvm.internal.markers.KMutableList -kotlin.jvm.internal.markers.KMutableMap.Entry -kotlin.jvm.internal.markers.KMutableIterator -kotlin.jvm.internal.markers.KMutableListIterator -kotlin.jvm.internal.markers.KMutableCollection -kotlin.jvm.internal.markers.KMutableIterable -kotlin.jvm.internal.markers.KMappedMarker -kotlin.jvm.internal.markers.KMutableMap -kotlin.jvm.Strictfp -kotlin.jvm.JvmStatic -kotlin.jvm.JvmOverloads -kotlin.jvm.Transient -kotlin.jvm.functions.Function8 -kotlin.jvm.functions.FunctionN -kotlin.jvm.functions.Function7 -kotlin.jvm.functions.Function5 -kotlin.jvm.functions.Function9 -kotlin.jvm.functions.Function0 -kotlin.jvm.functions.Function13 -kotlin.jvm.functions.Function4 -kotlin.jvm.functions.Function12 -kotlin.jvm.functions.Function10 -kotlin.jvm.functions.Function2 -kotlin.jvm.functions.Function6 -kotlin.jvm.functions.Function1 -kotlin.jvm.functions.Function18 -kotlin.jvm.functions.Function22 -kotlin.jvm.functions.Function21 -kotlin.jvm.functions.Function19 +com.google.android.material.internal.TextDrawableHelper.TextDrawableDelegate +com.google.android.material.internal.ViewGroupOverlayImpl +com.google.android.material.internal.ViewOverlayImpl +com.google.android.material.internal.ViewUtils.OnApplyWindowInsetsListener +com.google.android.material.internal.package-info +com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener +com.google.android.material.resources.CancelableFontCallback.ApplyFont android.media.MediaPlayer.OnCompletionListener -kotlin.jvm.functions.Function11 +com.google.android.material.shadow.ShadowViewDelegate +com.google.android.material.shape.CornerFamily +com.google.android.material.shape.CornerSize +com.google.android.material.shape.MaterialShapeDrawable.CompatibilityShadowMode +com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator +com.google.android.material.shape.ShapeAppearancePathProvider.PathListener +com.google.android.material.shape.Shapeable +com.google.android.material.slider.BaseOnChangeListener +com.google.android.material.slider.BaseOnSliderTouchListener +com.google.android.material.slider.BaseSlider.TooltipDrawableFactory +com.google.android.material.slider.LabelFormatter +com.google.android.material.slider.RangeSlider.OnChangeListener +com.google.android.material.slider.RangeSlider.OnSliderTouchListener +com.google.android.material.slider.Slider.OnChangeListener +com.google.android.material.slider.Slider.OnSliderTouchListener android.media.MediaScannerConnection.OnScanCompletedListener -kotlin.jvm.functions.Function16 -kotlin.jvm.functions.Function20 -kotlin.jvm.functions.Function14 android.media.VolumeAutomation -kotlin.jvm.functions.Function15 -kotlin.jvm.functions.Function3 -kotlin.jvm.functions.Function17 -kotlin.jvm.Synchronized -kotlin.jvm.JvmSynthetic -kotlin.jvm.JvmField -kotlin.jvm.JvmName -kotlin.jvm.PurelyImplements -kotlin.jvm.JvmPackageName -kotlin.jvm.Throws -kotlin.jvm.JvmWildcard -kotlin.DslMarker android.media.AudioTrack.OnRoutingChangedListener android.media.MediaDrm.HdcpLevel -kotlin.ReplaceWith android.media.ImageWriter.OnImageReleasedListener -kotlin.internal.NoInfer android.media.MediaSync.OnErrorListener android.media.RemoteControlClient.OnGetPlaybackPositionListener android.media.MediaPlayer.OnVideoSizeChangedListener -kotlin.internal.ContractsDsl -kotlin.internal.AccessibleLateinitPropertyLiteral -kotlin.internal.PlatformDependent -kotlin.internal.Exact -kotlin.internal.InlineOnly -kotlin.internal.RequireKotlin -kotlin.internal.PureReifiable -kotlin.internal.LowPriorityInOverloadResolution -kotlin.internal.OnlyInputTypes +com.google.android.material.snackbar.BaseTransientBottomBar.AnimationMode +com.google.android.material.snackbar.BaseTransientBottomBar.BaseCallback.DismissEvent +com.google.android.material.snackbar.BaseTransientBottomBar.ContentViewCallback +com.google.android.material.snackbar.BaseTransientBottomBar.Duration +com.google.android.material.snackbar.BaseTransientBottomBar.OnAttachStateChangeListener +com.google.android.material.snackbar.BaseTransientBottomBar.OnLayoutChangeListener android.media.session.MediaSessionManager.OnSession2TokensChangedListener -kotlin.internal.HidesMembers -kotlin.internal.DynamicExtension android.media.session.MediaSessionManager.OnActiveSessionsChangedListener +com.google.android.material.snackbar.ContentViewCallback android.media.MediaDrm.OnExpirationUpdateListener android.media.MediaCas.EventListener android.media.RemoteControlClient.OnPlaybackPositionUpdateListener -kotlin.UnsafeVariance +com.google.android.material.snackbar.SnackbarManager.Callback android.media.MediaPlayer.OnErrorListener -kotlin.ranges.ClosedFloatingPointRange android.media.MediaDrm.OnSessionLostStateListener android.media.AudioRecord.OnRecordPositionUpdateListener android.media.MediaRecorder.OnErrorListener @@ -935,98 +976,86 @@ android.media.effect.EffectUpdateListener android.media.ImageReader.OnImageAvailableListener android.media.MediaPlayer.OnDrmInfoListener android.media.AudioTrack.OnPlaybackPositionUpdateListener +com.google.android.material.tabs.TabLayout.BaseOnTabSelectedListener +com.google.android.material.tabs.TabLayout.LabelVisibility +com.google.android.material.tabs.TabLayout.Mode +com.google.android.material.tabs.TabLayout.OnTabSelectedListener android.media.tv.TvView.OnUnhandledInputEventListener +com.google.android.material.tabs.TabLayout.TabGravity +com.google.android.material.tabs.TabLayout.TabIndicatorGravity android.media.tv.TvContract.BaseTvColumns -kotlin.ranges.ClosedRange -kotlin.reflect.KMutableProperty1 -kotlin.reflect.KProperty2.Getter -kotlin.reflect.KAnnotatedElement -kotlin.reflect.KClassifier -kotlin.reflect.KProperty.Accessor -kotlin.reflect.KClass android.media.MediaPlayer.OnDrmPreparedListener -kotlin.reflect.KProperty2 -kotlin.reflect.KMutableProperty0.Setter -kotlin.reflect.KProperty1 -kotlin.reflect.KProperty0.Getter -kotlin.reflect.KMutableProperty2 -kotlin.reflect.KCallable -kotlin.reflect.KProperty.Getter -kotlin.reflect.KDeclarationContainer -kotlin.reflect.KProperty1.Getter -kotlin.reflect.KMutableProperty -kotlin.reflect.KMutableProperty1.Setter -kotlin.reflect.KMutableProperty0 -kotlin.reflect.KMutableProperty2.Setter -kotlin.reflect.KMutableProperty.Setter -kotlin.reflect.KParameter -kotlin.reflect.KProperty +com.google.android.material.tabs.TabLayoutMediator.TabConfigurationStrategy android.media.RemoteControlClient.OnMetadataUpdateListener -kotlin.reflect.KTypeParameter -kotlin.reflect.KType -kotlin.reflect.KFunction -kotlin.reflect.KProperty0 -kotlin.ExperimentalStdlibApi android.media.AudioRouting.OnRoutingChangedListener android.media.MediaPlayer.OnSeekCompleteListener android.media.MicrophoneDirection -kotlin.OptIn android.media.AudioManager.OnAudioFocusChangeListener android.media.MediaPlayer.OnBufferingUpdateListener android.media.RemoteController.OnClientUpdateListener android.media.MediaPlayer.OnMediaTimeDiscontinuityListener android.media.SoundPool.OnLoadCompleteListener +com.google.android.material.textfield.TextInputLayout.BoxBackgroundMode +com.google.android.material.textfield.TextInputLayout.EndIconMode +com.google.android.material.textfield.TextInputLayout.OnEditTextAttachedListener +com.google.android.material.textfield.TextInputLayout.OnEndIconChangedListener android.media.MediaDrm.OnEventListener -kotlin.coroutines.RestrictsSuspension -kotlin.coroutines.ContinuationInterceptor android.media.MediaPlayer.OnTimedTextListener android.media.JetPlayer.OnJetEventListener android.media.MediaCodec.OnFrameRenderedListener android.media.AudioRouting -kotlin.coroutines.jvm.internal.DebugMetadata -kotlin.coroutines.jvm.internal.CoroutineStackFrame android.media.MediaPlayer.OnDrmConfigHelper android.media.MediaDrm.OnKeyStatusChangeListener android.media.MediaScannerConnection.MediaScannerConnectionClient -kotlin.coroutines.jvm.internal.SuspendFunction android.media.midi.MidiManager.OnDeviceOpenedListener -kotlin.coroutines.CoroutineContext.Key android.media.MediaPlayer.OnTimedMetaDataAvailableListener android.media.AudioRecordingMonitor -kotlin.coroutines.CoroutineContext.Element android.media.AudioRecord.OnRoutingChangedListener -kotlin.coroutines.CoroutineContext android.media.MediaRecorder.OnInfoListener -kotlin.coroutines.Continuation android.media.MediaPlayer.OnInfoListener android.media.audiofx.AudioEffect.OnEnableStatusChangeListener android.media.audiofx.Visualizer.OnDataCaptureListener android.media.audiofx.Virtualizer.OnParameterChangeListener +com.google.android.material.transition.FadeModeEvaluator +com.google.android.material.transition.FitModeEvaluator android.media.audiofx.AudioEffect.OnControlStatusChangeListener android.media.audiofx.EnvironmentalReverb.OnParameterChangeListener android.media.audiofx.Equalizer.OnParameterChangeListener android.media.audiofx.BassBoost.OnParameterChangeListener -kotlin.Metadata -kotlin.UseExperimental +com.google.android.material.transition.MaterialContainerTransform.FadeMode +com.google.android.material.transition.MaterialContainerTransform.FitMode +com.google.android.material.transition.MaterialContainerTransform.TransitionDirection android.media.audiofx.PresetReverb.OnParameterChangeListener android.graphics.SurfaceTexture.OnFrameAvailableListener -kotlin.text.FlagEnum -kotlin.text.MatchGroupCollection +com.google.android.material.transition.MaterialSharedAxis.Axis +com.google.android.material.transition.SlideDistanceProvider.GravityFlag +com.google.android.material.transition.TransitionUtils.CanvasOperation +com.google.android.material.transition.TransitionUtils.CornerSizeBinaryOperator +com.google.android.material.transition.VisibilityAnimatorProvider +com.google.android.material.transition.platform.FadeModeEvaluator +com.google.android.material.transition.platform.FitModeEvaluator +com.google.android.material.transition.platform.MaterialContainerTransform.FadeMode +com.google.android.material.transition.platform.MaterialContainerTransform.FitMode +com.google.android.material.transition.platform.MaterialContainerTransform.TransitionDirection +com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback.ShapeProvider +com.google.android.material.transition.platform.MaterialSharedAxis.Axis +com.google.android.material.transition.platform.SlideDistanceProvider.GravityFlag android.graphics.drawable.Icon.OnDrawableLoadedListener +com.google.android.material.transition.platform.TransitionUtils.CanvasOperation +com.google.android.material.transition.platform.TransitionUtils.CornerSizeBinaryOperator android.graphics.drawable.Animatable2 -kotlin.text.MatchNamedGroupCollection +com.google.android.material.transition.platform.VisibilityAnimatorProvider +androidx.lifecycle.LifecycleRegistryOwner android.graphics.drawable.Drawable.Callback +androidx.lifecycle.ReportFragment.ActivityInitializationListener android.graphics.drawable.Animatable -kotlin.text.MatchResult +com.nativescript.text.Font.FontWeight +com.nativescript.text.Font.genericFontFamilies android.graphics.PostProcessor -kotlin.time.ExperimentalTime -kotlin.time.TimeSource android.graphics.ImageDecoder.OnHeaderDecodedListener -kotlin.experimental.ExperimentalTypeInference android.graphics.ImageDecoder.OnPartialImageListener android.gesture.GestureOverlayView.OnGesturePerformedListener android.gesture.GestureOverlayView.OnGestureListener -kotlin.sequences.Sequence android.gesture.GestureOverlayView.OnGesturingListener android.annotation.Nullable android.annotation.TargetApi @@ -1056,12 +1085,8 @@ android.icu.lang.UCharacter.IndicPositionalCategory android.icu.lang.UCharacter.GraphemeClusterBreak android.icu.text.SymbolTable android.icu.text.Collator.ReorderCodes -kotlin.sequences.DropTakeSequence -kotlin.ExperimentalMultiplatform -kotlin.BuilderInference android.icu.text.UnicodeMatcher android.icu.text.Replaceable -kotlin.collections.Grouping android.icu.util.Freezable android.icu.util.ValueIterator android.icu.util.RangeValueIterator @@ -1113,10 +1138,8 @@ android.view.SurfaceHolder android.view.InputQueue.Callback android.view.ViewDebug.IntToString android.view.View.OnClickListener -kotlin.collections.MapWithDefault android.view.ViewTreeObserver.OnGlobalFocusChangeListener android.view.ActionMode.Callback -kotlin.collections.MutableMapWithDefault android.view.Window.OnRestrictedCaptionAreaChangedListener android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ActionProvider.VisibilityListener @@ -1132,31 +1155,14 @@ android.view.LayoutInflater.Filter android.view.ViewTreeObserver.OnWindowAttachListener android.view.ScaleGestureDetector.OnScaleGestureListener android.view.ViewTreeObserver.OnDrawListener -kotlin.ExperimentalUnsignedTypes android.view.WindowManager android.view.SurfaceHolder.Callback2 -kotlin.Suppress -kotlin.OptionalExpectation -kotlin.annotation.MustBeDocumented -kotlin.annotation.Repeatable -kotlin.annotation.Target -kotlin.annotation.Retention android.view.View.OnKeyListener android.view.ViewTreeObserver.OnPreDrawListener -kotlin.Experimental -kotlin.Function -kotlin.WasExperimental -kotlin.properties.ReadWriteProperty -kotlin.properties.ReadOnlyProperty android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener android.view.accessibility.AccessibilityEventSource -kotlin.js.JsName -kotlin.Deprecated -kotlin.ParameterName android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener -kotlin.RequiresOptIn android.view.SubMenu -kotlin.SinceKotlin android.view.View.OnHoverListener android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewParent @@ -1165,20 +1171,14 @@ android.view.LayoutInflater.Factory2 android.view.ViewDebug.FlagToString android.view.SurfaceHolder.Callback android.view.GestureDetector.OnContextClickListener -kotlin.coroutines.experimental.RestrictsSuspension -kotlin.coroutines.experimental.ContinuationInterceptor android.view.View.OnLongClickListener android.view.ViewTreeObserver.OnWindowFocusChangeListener android.view.View.OnTouchListener android.view.MenuItem -kotlin.coroutines.experimental.CoroutineContext.Key android.view.Choreographer.FrameCallback android.view.View.OnContextClickListener android.view.ViewTreeObserver.OnTouchModeChangeListener android.view.View.OnApplyWindowInsetsListener -kotlin.coroutines.experimental.CoroutineContext.Element -kotlin.coroutines.experimental.CoroutineContext -kotlin.coroutines.experimental.Continuation android.view.animation.Interpolator android.view.animation.Animation.AnimationListener android.view.PixelCopy.OnPixelCopyFinishedListener diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.bin index 4fcc4e61..199e645d 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.lock index 7eeb800a..38430a38 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileContent/fileContent.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileContent/fileContent.lock index 5ed4e323..1f4635ba 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileContent/fileContent.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.bin index 1438b9d6..e35ea0c5 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.lock index 698b9591..ee4578a5 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/javaCompile/javaCompile.lock index 1325d7ed..c697e4ff 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 20a1580b..bc191f70 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/cache.properties b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/cache.properties index a8824e94..eccfb68b 100644 --- a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:51 IST 2020 +#Wed Dec 30 13:11:59 IST 2020 gradle.version=6.4 diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/outputFiles.bin index 552d5ef5..dd0c180e 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/.gradle/checksums/checksums.lock b/platforms/tempPlugin/nativescript_imagecropper/.gradle/checksums/checksums.lock index 553ea30d..22e9c94f 100644 Binary files a/platforms/tempPlugin/nativescript_imagecropper/.gradle/checksums/checksums.lock and b/platforms/tempPlugin/nativescript_imagecropper/.gradle/checksums/checksums.lock differ diff --git a/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties b/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties index 77a4dd59..9fead0ea 100644 --- a/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Tue Dec 29 00:26:52 IST 2020 +#Wed Dec 30 13:12:01 IST 2020 /home/vrb/.gradle/caches/transforms-2/files-2.1/d4346362d40a6ea03e30b4a0f823b8db/appcompat-1.0.0/res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/res/merged/release/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png /home/vrb/.gradle/caches/transforms-2/files-2.1/ce3c4e922b74126d6088b5e052bb6fb5/material-1.0.0/res/color/mtrl_bottom_nav_colored_item_tint.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/res/merged/release/color/mtrl_bottom_nav_colored_item_tint.xml /home/vrb/.gradle/caches/transforms-2/files-2.1/d4346362d40a6ea03e30b4a0f823b8db/appcompat-1.0.0/res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/res/merged/release/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png diff --git a/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties index 5b6839df..a9db8a00 100644 --- a/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/nativescript_imagecropper/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties @@ -1 +1 @@ -#Tue Dec 29 00:26:51 IST 2020 +#Wed Dec 30 13:12:00 IST 2020 diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.bin index bc4f92b2..343322fd 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.lock index c8fbbdfd..20ea7394 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/tempPlugin/social_share/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/fileContent/fileContent.lock b/platforms/tempPlugin/social_share/.gradle/6.4/fileContent/fileContent.lock index 5d6c84f1..4c29c14b 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/fileContent/fileContent.lock and b/platforms/tempPlugin/social_share/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.bin index 2fd5a2a8..b2fc8b99 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.lock index 77870770..7b5e75ea 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/tempPlugin/social_share/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/tempPlugin/social_share/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/tempPlugin/social_share/.gradle/6.4/javaCompile/javaCompile.lock index de91b2b4..11aabb08 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/tempPlugin/social_share/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 887f13f2..2d5fd8be 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/cache.properties b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/cache.properties index 2a28aea4..becd54b1 100644 --- a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:48 IST 2020 +#Wed Dec 30 13:11:56 IST 2020 gradle.version=6.4 diff --git a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/outputFiles.bin index cc91a8d2..5f3dbdde 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/tempPlugin/social_share/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/tempPlugin/social_share/.gradle/checksums/checksums.lock b/platforms/tempPlugin/social_share/.gradle/checksums/checksums.lock index 9706d989..0b925fd1 100644 Binary files a/platforms/tempPlugin/social_share/.gradle/checksums/checksums.lock and b/platforms/tempPlugin/social_share/.gradle/checksums/checksums.lock differ diff --git a/platforms/tempPlugin/social_share/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties b/platforms/tempPlugin/social_share/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties index 8f0a8e3c..4d2bde0c 100644 --- a/platforms/tempPlugin/social_share/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/social_share/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:48 IST 2020 +#Wed Dec 30 13:11:57 IST 2020 /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/social_share/src/main/res/xml/provider_paths.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/social_share/build/intermediates/res/merged/release/xml/provider_paths.xml diff --git a/platforms/tempPlugin/social_share/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/platforms/tempPlugin/social_share/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties index c5ded8a9..aeb063e9 100644 --- a/platforms/tempPlugin/social_share/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/social_share/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:48 IST 2020 +#Wed Dec 30 13:11:56 IST 2020 /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/social_share/src/main/res/xml/provider_paths.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/social_share/build/intermediates/packaged_res/release/xml/provider_paths.xml diff --git a/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.bin index aa58c4b2..8446500f 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.lock index a7b42d3e..1b25a5d7 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/tempPlugin/text/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/tempPlugin/text/.gradle/6.4/fileContent/fileContent.lock b/platforms/tempPlugin/text/.gradle/6.4/fileContent/fileContent.lock index 1e58f43c..adaffd0f 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/fileContent/fileContent.lock and b/platforms/tempPlugin/text/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.bin index 27868bff..63ee2117 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.lock index 40d949d5..391381f2 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/tempPlugin/text/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/tempPlugin/text/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/tempPlugin/text/.gradle/6.4/javaCompile/javaCompile.lock index e4ba7ee7..dc7fe6d6 100644 Binary files a/platforms/tempPlugin/text/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/tempPlugin/text/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/buildOutputCleanup.lock index a9b814ce..fa600eba 100644 Binary files a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/cache.properties b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/cache.properties index 4af4de29..4366a68f 100644 --- a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:27:00 IST 2020 +#Wed Dec 30 13:12:08 IST 2020 gradle.version=6.4 diff --git a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/outputFiles.bin index c8e49d24..e9779639 100644 Binary files a/platforms/tempPlugin/text/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/tempPlugin/text/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/tempPlugin/text/.gradle/checksums/checksums.lock b/platforms/tempPlugin/text/.gradle/checksums/checksums.lock index 6e177c4f..dbb4eb8c 100644 Binary files a/platforms/tempPlugin/text/.gradle/checksums/checksums.lock and b/platforms/tempPlugin/text/.gradle/checksums/checksums.lock differ diff --git a/platforms/tempPlugin/text/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties b/platforms/tempPlugin/text/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties index f2848fe7..52687854 100644 --- a/platforms/tempPlugin/text/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/text/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties @@ -1 +1 @@ -#Tue Dec 29 00:27:00 IST 2020 +#Wed Dec 30 13:12:09 IST 2020 diff --git a/platforms/tempPlugin/text/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/platforms/tempPlugin/text/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties index f2848fe7..22652464 100644 --- a/platforms/tempPlugin/text/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/text/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties @@ -1 +1 @@ -#Tue Dec 29 00:27:00 IST 2020 +#Wed Dec 30 13:12:08 IST 2020 diff --git a/platforms/tempPlugin/text/plugin-data.json b/platforms/tempPlugin/text/plugin-data.json index c6474e9b..3432f959 100644 --- a/platforms/tempPlugin/text/plugin-data.json +++ b/platforms/tempPlugin/text/plugin-data.json @@ -3,6 +3,6 @@ "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/CustomBackgroundSpan.java": "ae9e0e6d699e669f96ed7042f2145a1ab0bf6727", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/CustomTypefaceSpan.java": "421f984280aa806183057f2ddd53febdbc32d2b1", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/Font.java": "fb4d246ad367d178e11ef08c34ec182418d30890", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/URLSpanNoUnderline.java": "b3da85c1d16eff30c54fb5725e1e46fea265d7ce", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/HtmlToSpannedConverter.java": "38643430e4b8cac690b89a07adc3a86f7060f93d" + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/HtmlToSpannedConverter.java": "38643430e4b8cac690b89a07adc3a86f7060f93d", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/text/platforms/android/java/com/nativescript/text/URLSpanNoUnderline.java": "b3da85c1d16eff30c54fb5725e1e46fea265d7ce" } \ No newline at end of file diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.bin index 9aebf433..dce4bd7f 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.lock index 2019d6bc..a7952070 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileContent/fileContent.lock b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileContent/fileContent.lock index b777403d..33469c70 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileContent/fileContent.lock and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.bin index ee0f2e03..fe73c6b0 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.lock index 8ac17d89..316310fe 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/tempPlugin/ui_material_button/.gradle/6.4/javaCompile/javaCompile.lock index 19c3b375..7567c885 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/tempPlugin/ui_material_button/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/buildOutputCleanup.lock index fe5b44da..45a35706 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/cache.properties b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/cache.properties index 2dc6b2a1..b392693d 100644 --- a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:37 IST 2020 +#Wed Dec 30 13:11:49 IST 2020 gradle.version=6.4 diff --git a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/outputFiles.bin index 81df1c34..f5c3c9e4 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/tempPlugin/ui_material_button/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/tempPlugin/ui_material_button/.gradle/checksums/checksums.lock b/platforms/tempPlugin/ui_material_button/.gradle/checksums/checksums.lock index aa2733cb..6ed6a76d 100644 Binary files a/platforms/tempPlugin/ui_material_button/.gradle/checksums/checksums.lock and b/platforms/tempPlugin/ui_material_button/.gradle/checksums/checksums.lock differ diff --git a/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties b/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties index f2d724a4..eb71a9d5 100644 --- a/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Tue Dec 29 00:26:43 IST 2020 +#Wed Dec 30 13:11:52 IST 2020 /home/vrb/.gradle/caches/transforms-2/files-2.1/ae1bf0e3b8f63074db6797692c14ed12/material-1.2.1/res/layout/design_navigation_item_subheader.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/res/merged/release/layout/design_navigation_item_subheader.xml /home/vrb/.gradle/caches/transforms-2/files-2.1/70264ed71b86436432b6d3963ae4f060/appcompat-1.2.0/res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/res/merged/release/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png /home/vrb/.gradle/caches/transforms-2/files-2.1/ae1bf0e3b8f63074db6797692c14ed12/material-1.2.1/res/layout/mtrl_picker_header_fullscreen.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/res/merged/release/layout/mtrl_picker_header_fullscreen.xml diff --git a/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties index b3cf15db..01798136 100644 --- a/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/ui_material_button/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Tue Dec 29 00:26:42 IST 2020 +#Wed Dec 30 13:11:51 IST 2020 /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/src/main/res/layout/material_button_icon.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/packaged_res/release/layout/material_button_icon.xml /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/src/main/res/layout/material_button_outline_icon.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/packaged_res/release/layout/material_button_outline_icon.xml /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/src/main/res/layout/material_button_outline.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_button/build/intermediates/packaged_res/release/layout/material_button_outline.xml diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.bin b/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.bin index 507f2092..297db942 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.bin and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.bin differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.lock b/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.lock index f95b2860..a0a49bb0 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.lock and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/executionHistory/executionHistory.lock differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileContent/fileContent.lock b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileContent/fileContent.lock index 95db1b50..9d380ac2 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileContent/fileContent.lock and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileContent/fileContent.lock differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.bin b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.bin index dae5e1f1..a7645254 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.bin and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.bin differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.lock b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.lock index 5c3cadd5..3ca57bb1 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.lock and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/fileHashes/fileHashes.lock differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/6.4/javaCompile/javaCompile.lock b/platforms/tempPlugin/ui_material_core/.gradle/6.4/javaCompile/javaCompile.lock index 87925250..d76ea6d5 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/6.4/javaCompile/javaCompile.lock and b/platforms/tempPlugin/ui_material_core/.gradle/6.4/javaCompile/javaCompile.lock differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c2f0e880..05de8dc9 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/cache.properties b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/cache.properties index f32fa202..ede2bc93 100644 --- a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/cache.properties +++ b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:56 IST 2020 +#Wed Dec 30 13:12:05 IST 2020 gradle.version=6.4 diff --git a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/outputFiles.bin b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/outputFiles.bin index 79c657f7..8e1fb191 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/outputFiles.bin and b/platforms/tempPlugin/ui_material_core/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/platforms/tempPlugin/ui_material_core/.gradle/checksums/checksums.lock b/platforms/tempPlugin/ui_material_core/.gradle/checksums/checksums.lock index e3a0ed4e..ae86e3b3 100644 Binary files a/platforms/tempPlugin/ui_material_core/.gradle/checksums/checksums.lock and b/platforms/tempPlugin/ui_material_core/.gradle/checksums/checksums.lock differ diff --git a/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties b/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties index aa534241..4280305f 100644 --- a/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/mergeReleaseResources/compile-file-map.properties @@ -1,4 +1,4 @@ -#Tue Dec 29 00:26:57 IST 2020 +#Wed Dec 30 13:12:05 IST 2020 /home/vrb/.gradle/caches/transforms-2/files-2.1/ae1bf0e3b8f63074db6797692c14ed12/material-1.2.1/res/layout/design_navigation_item_subheader.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_core/build/intermediates/res/merged/release/layout/design_navigation_item_subheader.xml /home/vrb/.gradle/caches/transforms-2/files-2.1/70264ed71b86436432b6d3963ae4f060/appcompat-1.2.0/res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_core/build/intermediates/res/merged/release/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png /home/vrb/.gradle/caches/transforms-2/files-2.1/ae1bf0e3b8f63074db6797692c14ed12/material-1.2.1/res/layout/mtrl_picker_header_fullscreen.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_core/build/intermediates/res/merged/release/layout/mtrl_picker_header_fullscreen.xml diff --git a/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties index 01d265c8..012995f8 100644 --- a/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties +++ b/platforms/tempPlugin/ui_material_core/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties @@ -1,2 +1,2 @@ -#Tue Dec 29 00:26:56 IST 2020 +#Wed Dec 30 13:12:05 IST 2020 /mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_core/src/main/res/layout/material_page.xml=/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/platforms/tempPlugin/ui_material_core/build/intermediates/packaged_res/release/layout/material_page.xml diff --git a/platforms/tempPlugin/ui_material_core/plugin-data.json b/platforms/tempPlugin/ui_material_core/plugin-data.json index 4395dd73..ca774c1a 100644 --- a/platforms/tempPlugin/ui_material_core/plugin-data.json +++ b/platforms/tempPlugin/ui_material_core/plugin-data.json @@ -1,6 +1,6 @@ { "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/ui-material-core/platforms/android/AndroidManifest.xml": "9b6f49aa9c71e8a45ec570027e025274ffcadc96", - "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/ui-material-core/platforms/android/include.gradle": "ec90dc697edab3c184ec95b0a42c9f206900f048", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/ui-material-core/platforms/android/java/com/nativescript/material/core/Utils.java": "3813226945705be3d52cf19dc945ea9bf2c77e12", + "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/ui-material-core/platforms/android/include.gradle": "ec90dc697edab3c184ec95b0a42c9f206900f048", "/mnt/82e5ff15-70b8-44a5-bb66-55688fc2381f/Freelance/Projects/WIP/EnRecipes/Developement/EnRecipes-App/node_modules/@nativescript-community/ui-material-core/platforms/android/res/layout/material_page.xml": "29f912255e893697d6abd438f67a854149136292" } \ No newline at end of file