diff --git a/.gitignore b/.gitignore
index e75435c..69e2a14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,49 +1,37 @@
# History files
.Rhistory
.Rapp.history
-
# Session Data files
.RData
.RDataTmp
-
# User-specific files
.Ruserdata
-
# Example code in package build process
*-Ex.R
-
# Output files from R CMD build
/*.tar.gz
-
# Output files from R CMD check
/*.Rcheck/
-
# RStudio files
.Rproj.user/
-
# produced vignettes
vignettes/*.html
vignettes/*.pdf
-
# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
.httr-oauth
-
# knitr and R markdown default cache directories
*_cache/
/cache/
-
# Temporary files created by R markdown
*.utf8.md
*.knit.md
-
# R Environment Variables
.Renviron
-
# pkgdown site
docs/
-
# translation temp files
po/*~
-
# RStudio Connect folder
rsconnect/
+record_linkage.Rproj
+deduplicate.html
diff --git a/missing_gender_result.csv b/data-raw/missing_gender_result.csv
similarity index 100%
rename from missing_gender_result.csv
rename to data-raw/missing_gender_result.csv
diff --git a/deduplicate.R b/deduplicate.R
deleted file mode 100644
index fa3e6c0..0000000
--- a/deduplicate.R
+++ /dev/null
@@ -1,774 +0,0 @@
-##################################################
-### A script workflow for Record linkage ----------
-##################################################
-
-library(tidyverse)
-# install.packages("fastLink")
-library(fastLink)
-
-## Load the data -
-# which is here already the results of merging multiple list from different excel files
-data <- readxl::read_excel(here::here("data-raw", "Registros2.xlsx"),
- sheet = "Sheet1",
- col_types = c("numeric",
- "text", "text", "text", "text", "text",
- "text", "text", "date", "numeric",
- "numeric", "numeric", "text", "text",
- "text", "text", "text", "text", "text",
- "text", "text", "text", "text", "text",
- "text", "text", "text", "text", "text",
- "text", "text")) |>
- janitor::clean_names()
-
-
-#dput(names(data))
-## Cleaning functions ###############
-
-
-#' clean_age
-#'
-#' This functions cleans the age identifiers in the context of record linkage.
-#'
-#' If the date of birth is present, it will parse it, extract year and month,
-#' and recalculate both age and age range
-#'
-#' If the date of birth is not mentioned, then it will use age and date_record
-#' to reconstruct an estimated date of birth - and recalculate the rest
-#'
-#' @param frame frame with the data
-#' @param date_birth variable name for the date of birth in the frame
-#' @param date_record variable name for the date of birth in the frame
-#' @param age variable name for the date of birth in the frame
-#' @param age_range variable name for the date of birth in the frame
-#'
-#' @return the same column but cleaned...
-#'
-#' @export
-clean_age <- function(frame,
- date_birth,
- date_record,
- age,
- age_range){
-
- #frame$date_birth
- frame2 <- frame |>
- ## Rename variable
- dplyr::rename( date_birth = paste0(date_birth),
- date_record = paste0(date_record),
- age = paste0(age),
- age_range = paste0(age_range) ) |>
- dplyr::mutate(
- ## In case there is no date of birth - but we have an age, we recalculate it..
-
- date_birth = dplyr::case_when(
- # Case we age but no DOB and date registration
- is.na(date_birth) & !(is.na(age)) & !(is.na(date_record)) ~
- lubridate::as_date(date_record) - lubridate::dyears(age) ,
-
- # Case we age but no DOB and date registration
- is.na(date_birth) & !(is.na(age)) & is.na(date_record) ~
- today() - lubridate::dyears(age) ,
-
- # Case take what we have...
- TRUE ~ lubridate::as_date(date_birth) ) ,
- ## make sure it is in the correct format
- date_birth = lubridate::as_date(date_birth),
-
- day_birth = as.numeric(
- lubridate::day(date_birth)),
-
- month_birth = as.numeric(
- lubridate::month(date_birth)),
-
- year_birth= as.numeric(
- lubridate::year(date_birth)),
-
- age = round( as.numeric(today() - date_birth) / 365),
-
- age_range = dplyr::case_when(
- ## if age cohort was already present and we have no DOb, retain it
- # !(is.na(age_range )) & is.na( date_birth) &
- age <5 ~ "0-4",
-
- # !(is.na(age_range )) & is.na( date_birth) &
- age >=5 & age <= 11 ~ "4-11",
-
- #!(is.na(age_range )) & is.na( date_birth) &
- age >= 12 & age <= 17 ~ "12-17",
- # !(is.na(age_range )) & is.na( date_birth) &
- age >= 18 & age <= 59 ~ "18-59",
-
- # !(is.na(age_range )) & is.na( date_birth) &
- age >= 60 ~ "60+",
-
- TRUE ~ age_range ) )
-
- return(frame2)
-}
-
-
-## Testing...
-# frame <- data |>
-# dplyr::select(fecha_de_nacimiento,
-# date_record, edad, age_range) |>
-# clean_age( date_birth = "fecha_de_nacimiento",
-# date_record = "date_record",
-# age = "edad",
-# age_range = "age_range")
-
-
-
-#' remove_spaces_based_on_patterns
-#' Utility sub-function to remove spaces based on patterns
-#' This function helps cleaning name decomposition - in case it is not included in the original data
-#'
-#' In case, there's only 2 elements, it will fill only firstname and fathername
-#' The function also identify family prefix to be bind such as for spanish
-#' "DEL", 'DE", "DE LOS", "DE LAS"
-#'
-#' @param vector a list of string with names
-remove_spaces_based_on_patterns <- function(vector,
- nameprefix = data.frame(
- pat1 = c( "DE LA ", "DEL ", "DE LOS ", "DE LAS ","DE ", "SAN ", "LA ", "DA "),
- pat2 = c( "DE_LA_", "DEL_", "DE_LOS_", "DE_LAS_", "DE_", "SAN_", "LA_", "DA_") )
-) {
- for (i in 1:nrow(nameprefix) ) {
- # i <- 4
- #cat(paste0(nameprefix[i, c("pat1")],"\n", vector, "\n"))
- vector <- stringr::str_replace_all(string = vector,
- pattern = nameprefix[i, c("pat1")],
- replacement = nameprefix[i, c("pat2")])
- # cat(paste0(vector, "\n"))
- }
- return(vector)
-}
-## Test function
-remove_spaces_based_on_patterns(vector = "ADRIENNE DE LOS ANGELES MILANESE PARISIANNA")
-
-
-#' reset_spaces_based_on_patterns
-#' Utility sub-function to remove spaces based on patterns
-#' This function helps cleaning name decomposition - in case it is not included in the original data
-#'
-#' In case, there's only 2 elements, it will fill only firstname and fathername
-#' The function also identify family prefix to be bind such as for spanish
-#' "DEL", 'DE", "DE LOS", "DE LAS"
-#'
-#' @param vector a list of string with names
-reset_spaces_based_on_patterns <- function(vector,
- nameprefix = data.frame(
- pat1 = c( "DE LA ", "DEL ", "DE LOS ", "DE LAS ","DE ", "SAN ", "LA ", "DA "),
- pat2 = c( "DE_LA_", "DEL_", "DE_LOS_", "DE_LAS_", "DE_", "SAN_", "LA_", "DA_") )
- ) {
-
-
- for (i in 1:nrow(nameprefix) ) {
- # i <- 1
- # cat(paste0( nameprefix[i, c("pat1")],"\n",vector, "\n"))
- vector <- stringr::str_replace_all(string = vector,
- pattern = nameprefix[i, c("pat2")],
- replacement = nameprefix[i, c("pat1")])
- #cat(paste0(vector, "\n"))
- }
- return(vector)
-}
-
-
-
-
-#' separate_fullname
-#'
-#' This function clean name decomposition - in case it is not included in the original data
-#'
-#' Performing this name decomposition is important in order to enhance record linkage
-#' as the name pattern can be different (either "firstname_fathername_mother_name" or
-#' "fathername_mothername_firstname") which will minimise linkage probabibility
-#'
-#' In case, there's only 2 elements, it will fill only firstname and fathername
-#' The function also identify family prefix to be bind such as for spanish
-#' "DEL", 'DE", "DE LOS", "DE LAS"
-#'
-#' @param fullname full name including everything together
-#' @param firstname first name
-#' @param fathername father name
-#' @param mothername mother name
-#' @param namepattern either "firstname_fathername_mother_name" or
-#' "fathername_mothername_firstname"
-#'
-#' @return a clean list with c("firstname","fathername","mothername")
-#'
-#' @export
-separate_fullname <- function(frame,
- fullname,
- firstname,
- fathername,
- mothername,
- namepattern
- ){
- ## Let's go!
- framesp <- frame |>
- ## Rename variable
- dplyr::rename( fullname = paste0(fullname),
- firstname = paste0(firstname),
- fathername = paste0(fathername),
- mothername = paste0(mothername),
- namepattern = paste0(namepattern) ) |>
-
- ### Lets clean all spaces and get everything to upper
- dplyr::mutate( fullname_or = fullname,
- fullname = trimws(stringr::str_squish(fullname),
- which = "both",
- whitespace = "[ \t\r\n]"),
- fullname = toupper(fullname)) |>
- ### Lets apply the prefix space replacement...
- dplyr::mutate( fullname_pref = remove_spaces_based_on_patterns(vector = fullname),
- fullname = fullname_pref ) |>
- ## Counting th enumber of space to understand the structure of the full name
- dplyr::mutate( numspace = stringr::str_count(fullname, ' ')) |>
- tidyr::separate_wider_delim(fullname,
- delim = " ",
- names_sep = "",
- too_few = "align_start") |>
-
- ### Now reconstruct the first name, father and mother name based on cases
-
- ## Let summarize the logic...!
- ## Based on the number of componnent in the full name - ranging from 0 to 4
-
- ## Case A: "firstname_fathername_mother_name"
- # numspace == 0 ## only firstname = fullname1
- # numspace = 1 ## firstname = fullname1 & fathername = fullname2
- # numspace = 2 ## firstname = fullname1 & fathername = fullname2 & mothername = fullname3
- # numspace = 3 ## firstname = paste0(fullname1, " ", fullname2) & fathername = fullname3 & mothername = fullname4
- # numspace = 4 ## firstname = paste0(fullname1, " ", fullname2, " ", fullname3) & fathername = fullname4 & mothername = fullname5
-
- # ## Case B: "fathername_mothername_firstname"
- # numspace == 0 ## only fathername = fullname1
- # numspace = 1 ## fathername = fullname1 & firstname = fullname2
- # numspace = 2 ## fathername = fullname1 & mothername = fullname2 & firstname = fullname3
- # numspace = 3 ## fathername = fullname1 & mothername = fullname2 & firstname = paste0(fullname3, " ", fullname3)
- # numspace = 4 ## fathername = fullname1 & mothername = fullname2 & firstname = paste0(fullname3, " ", fullname4, " ", fullname5)
-
- ### Now reconstruct fathername
- dplyr::mutate( fathername = dplyr::case_when(
- is.na(fathername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 0 ~ "",
-
- is.na(fathername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 1 ~ fullname2,
-
- is.na(fathername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 2 ~ fullname2,
-
- is.na(fathername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 3 ~ fullname3,
-
- is.na(fathername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 4 ~ fullname4,
-
-
- is.na(fathername) & namepattern == "fathername_mothername_firstname" &
- numspace == 0 ~ fullname1,
-
- is.na(fathername) & namepattern == "fathername_mothername_firstname" &
- numspace == 1 ~ fullname1,
-
- is.na(fathername) & namepattern == "fathername_mothername_firstname" &
- numspace == 2 ~ fullname1,
-
- is.na(fathername) & namepattern == "fathername_mothername_firstname" &
- numspace == 3 ~ fullname1,
-
- is.na(fathername) & namepattern == "fathername_mothername_firstname" &
- numspace == 4 ~ fullname1,
-
- TRUE ~ fathername )) |>
-
- ### Now reconstruct mothername
- dplyr::mutate( mothername = dplyr::case_when(
- is.na(mothername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 0 ~ "",
-
- is.na(mothername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 1 ~ "",
-
- is.na(mothername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 2 ~ fullname3,
-
- is.na(mothername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 3 ~ fullname4,
-
- is.na(mothername) & namepattern == "firstname_fathername_mother_name" &
- numspace == 4 ~ fullname5,
-
-
- is.na(mothername) & namepattern == "fathername_mothername_firstname" &
- numspace == 0 ~ "",
-
- is.na(mothername) & namepattern == "fathername_mothername_firstname" &
- numspace == 1 ~ "",
-
- is.na(mothername) & namepattern == "fathername_mothername_firstname" &
- numspace == 2 ~ fullname2,
-
- is.na(mothername) & namepattern == "fathername_mothername_firstname" &
- numspace == 3 ~ fullname2,
-
- is.na(mothername) & namepattern == "fathername_mothername_firstname" &
- numspace == 4 ~ fullname2,
-
- TRUE ~ mothername )) |>
-
-
- ### Now reconstruct firstname
- dplyr::mutate( firstname = dplyr::case_when(
- is.na(firstname) & namepattern == "firstname_fathername_mother_name" &
- numspace == 0 ~ fullname1,
-
- is.na(firstname) & namepattern == "firstname_fathername_mother_name" &
- numspace == 1 ~ fullname1,
-
- is.na(firstname) & namepattern == "firstname_fathername_mother_name" &
- numspace == 2 ~ fullname1,
-
- is.na(firstname) & namepattern == "firstname_fathername_mother_name" &
- numspace == 3 ~ paste0(fullname1, " ", fullname2 ),
-
- is.na(firstname) & namepattern == "firstname_fathername_mother_name" &
- numspace == 4 ~ paste0(fullname1, " ", fullname2, " ", fullname3),
-
- is.na(firstname) & namepattern == "fathername_mothername_firstname" &
- numspace == 0 ~ "",
-
- is.na(firstname) & namepattern == "fathername_mothername_firstname" &
- numspace == 1 ~ fullname2,
-
- is.na(firstname) & namepattern == "fathername_mothername_firstname" &
- numspace == 2 ~ fullname3,
-
- is.na(firstname) & namepattern == "fathername_mothername_firstname" &
- numspace == 3 ~ paste0(fullname3, " ", fullname4 ) ,
-
- is.na(firstname) & namepattern == "fathername_mothername_firstname" &
- numspace == 4 ~ paste0(fullname3, " ", fullname4, " ", fullname5) ,
-
- TRUE ~ firstname )) |>
-
-
- ### Lets reset the prefix space replacement...
- dplyr::mutate(
- firstname = reset_spaces_based_on_patterns(vector = firstname),
- fathername = reset_spaces_based_on_patterns(vector = fathername),
- mothername = reset_spaces_based_on_patterns(vector = mothername)) |>
-
- ## then clean intermediate variables
- dplyr::select( - fullname1, - fullname2, - fullname3, - fullname4,
- - fullname5, fullname_or, - fullname_pref, - numspace )
-
-
- return(framesp)
-}
-
-## Testing...
-# frame <- data |>
-# dplyr::filter( is.na(nombres) ) |>
-# # dplyr::select(nombre_completo, name_pattern,
-# # nombres, apellido_paterno, apellido_materno) |>
-# separate_fullname(fullname= "nombre_completo",
-# namepattern= "name_pattern",
-# firstname = "nombres",
-# fathername = "apellido_paterno",
-# mothername = "apellido_materno")
-
-
-
-
-
-#' separate_firstname
-#'
-#' This function decomposition - in case there is a space in
-#'
-#' Performing this name decomposition is important in order to enhance record linkage
-#'
-#' @param firstname first name
-#' @return a clean list with c("firstname1","firstname2","firstname3")
-#'
-#' @export
-separate_firstname <- function(frame,
- firstname ) {
- ## Let's go!
- framesp <- frame |>
- ## Rename variable
- dplyr::rename( firstname = paste0(firstname) ) |>
-
- ### Lets clean all spaces and get everything to upper
- dplyr::mutate( firstname_or = firstname,
- firstname = trimws(stringr::str_squish(firstname),
- which = "both",
- whitespace = "[ \t\r\n]"),
- firstname = toupper(firstname)) |>
- dplyr::mutate( firstname = remove_spaces_based_on_patterns(vector = firstname) ) |>
-
- ## Counting the number of space to understand the structure of the full name
- tidyr::separate_wider_delim(firstname,
- delim = " ",
- names_sep = "",
- too_few = "align_start") |>
- dplyr::mutate( firstname1 = reset_spaces_based_on_patterns(vector = firstname1),
- firstname2 = reset_spaces_based_on_patterns(vector = firstname2),
- firstname3 = reset_spaces_based_on_patterns(vector = firstname3))
-
- return(framesp)
-}
-
-framefirstname <- data |>
- separate_firstname(firstname = "nombres" )
-
-
-
-#' separate_familyname
-#'
-#' This function helps in decomposing names in case there is a space
-#' in the father name and the mother name is empty
-#'
-#' Performing this name decomposition is important in order to enhance record linkage
-#'
-#' @param fathernamevar father name
-#' @param mothernamevar mother name
-#' @return a clean list with c("firstname1","firstname2","firstname3")
-#'
-#' @export
-separate_familyname <- function(frame,
- fathernamevar,
- mothernamevar) {
- ## Let's go!
- framesp <- frame |>
- ## Rename variable
- dplyr::rename( fathername = paste0(fathernamevar),
- mothername = paste0(mothernamevar) ) |>
-
- ### Lets clean all spaces and get everything to upper
- dplyr::mutate( fathername_or = fathername,
- fathername= trimws(stringr::str_squish( fathername),
- which = "both",
- whitespace = "[ \t\r\n]"),
- fathername = toupper( fathername)) |>
- dplyr::mutate( fathername = remove_spaces_based_on_patterns(vector = fathername) ) |>
-
- ## Counting the number of space to understand the structure of the full name
- tidyr::separate_wider_delim( fathername,
- delim = " ",
- names_sep = "",
- too_few = "align_start") |>
- dplyr::mutate( fathername1 = reset_spaces_based_on_patterns(vector = fathername1),
- fathername2 = reset_spaces_based_on_patterns(vector = fathername2),
- fathername3 = reset_spaces_based_on_patterns(vector = fathername3)) |>
-
- dplyr::mutate( fathername = dplyr::if_else( is.na(mothername), fathername1, fathername_or ) ) |>
- dplyr::mutate( mothername = dplyr::if_else( is.na(mothername), fathername2, mothername)) |>
- dplyr::select( - fathername1, - fathername2, - fathername3, - fathername_or)
-
- return(framesp)
-}
-
-# frame <- data |>
-# dplyr::select(apellido_paterno, apellido_materno) |>
-# separate_familyname( fathernamevar = "apellido_paterno",
-# mothernamevar = "apellido_materno" )
-
-
-#' cleanvar
-#'
-#' function for data cleaning with additional name removal logic
-#'
-#' @param names_column name of the column to treat
-#' @param toRemove default vector with stuff to remove from name
-#' c(" JR", " SR", " IV", " III", " II")
-#' @return names_column_new name of the column treat
-#'
-#' @export
-cleanvar <- function(names_column,
- toRemove = c(" JR", " JUNIOR", " SR", " IV", " III", " II")) {
- # Convert to uppercase
- names_column_new <- toupper(names_column)
- # Remove specified name suffixes
- for (tR in toRemove) {
- names_column_new <- gsub(tR, "", names_column_new)
- }
- # Convert special characters to ASCII equivalents
- names_column_new <- iconv(names_column_new, "latin1", "ASCII//TRANSLIT", sub = "")
- # Remove punctuation, digits, and all spaces
- names_column_new <- gsub("[[:punct:][:digit:]][[:space:]]", "", names_column_new)
- # Create a new variable with only alphabetic characters
- names_column_new <- gsub("[^[:alpha:]]", "", names_column_new)
-
- return(names_column_new)
-}
-
-
-## Pipeline for data post processing #####################
-data.prep <- data |>
-
- ## Filter where the phone number is not available -- "NO REFIERE"
- dplyr::filter( telefono != "NO REFIERE") |>
-
- ## Clean age_range
- #data |> dplyr::select(age_range) |> dplyr::distinct() |> dplyr::pull()
- dplyr::mutate( age_range = dplyr::case_when(
- age_range == "18 A 59 AÑOS" ~ "0-4",
- TRUE ~ age_range )) |>
-
- ## Clean DOb & Age
- clean_age( date_birth = "fecha_de_nacimiento",
- date_record = "date_record",
- age = "edad",
- age_range = "age_range") |>
-
- ## Clean the names
- separate_fullname(fullname= "nombre_completo",
- namepattern= "name_pattern",
- firstname = "nombres",
- fathername = "apellido_paterno",
- mothername = "apellido_materno") |>
-
- separate_firstname(firstname = "firstname") |>
-
- separate_familyname( fathername = "fathername",
- mothername = "mothername") |>
-
-
- ## Clean the gender variable
- # data |> dplyr::select(genero) |> dplyr::distinct() |> dplyr::pull()
- dplyr::mutate(gender = dplyr::case_when(
- genero %in% c("F" ,"FEMENINO" ,"f", "Femenino") ~ "F",
- genero %in% c("M" , "MASCULINO" , "Masculino") ~ "M",
- genero %in% c("X", "Otro") ~ "Ot",
- TRUE ~ NA )) |>
-
- ## Only retain the nationality of interest
- # data |> dplyr::select(nacionalidad) |> dplyr::distinct() |> dplyr::pull()
- dplyr::mutate(nationality = dplyr::case_when(
- nacionalidad %in% c("Venzuela", "venezuela", "Venezolana",
- "VENEZUELA",
- "Venezuela", "VENEZOLANO", "VENEZOLANA") ~ "VEN",
- nacionalidad %in% c("COLOMBIANO", "COLOMBIANA", "COLOMBIA",
- "colombia", "Colombia", "Nac. Colombia",
- "Colombiana" ) ~ "COL",
- TRUE ~ "other" )) |>
- dplyr::filter( nationality %in% c("VEN", "COL" )) |>
- ## Apply cleanvar()
- # Perform data cleaning on dfA using the clean_names function
- dplyr::mutate_at( dplyr::vars(firstname1, firstname2, fathername, mothername,
- asistencia, departamento, #telefono,
- planilla, socio),
- list(new = cleanvar)) |>
-
-
- ### identify single data source
- dplyr::mutate(datasource = paste0(socio_new, "_", planilla_new)) #|>
-
- # # ## Retain only fields for record linkage
- # dplyr::select(datasource, nationality,
- # firstname_new, fathername_new, mothername_new,
- # asistencia_new, departamento_new,
- # telefono, gender)
-
-
-
-dput(names(data.prep))
-
-
-table(data.prep$gender, useNA = "ifany")
-table(data.prep$nationality, useNA = "ifany")
-
-## Check the datasource that we will compare
-table(data.prep$datasource, useNA = "ifany")
-
-## See if can use departamento for blocking
-table(data.prep$datasource, data.prep$departamento_new, useNA = "ifany")
-
-alldatasource <- data.prep |>
- dplyr::select(datasource) |>
- dplyr::distinct() |>
- dplyr::pull()
-
-alldatasource
-
-
-## Let's get 2 comparison dataset... ##########
-dfA <- data.prep |>
- dplyr::filter(datasource == alldatasource[9]) |>
- dplyr::select( - datasource)
-
-dfB <- data.prep |>
- dplyr::filter(datasource == alldatasource[6])|>
- dplyr::select( - datasource)
-
-matches.out <- fastLink::fastLink(
- dfA = dfA,
- dfB = dfB,
- # Specify the vector of variable names to be used for matching.
- # These variable names should exist in both dfA and dfB
- varnames = c("nationality" ,
- "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new",
- "day_birth", "month_birth", "year_birth",
- # "asistencia_new" , "departamento_new", "telefono_new" ,
- "gender" ),
-
- # Specify which variables among varnames should be compared using string distance
- stringdist.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables present in stringdist.match can be partially matched
- partial.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables should be matched numerically
- # Must be a subset of 'varnames' and must not be present in 'stringdist.match'.
- numeric.match = c( "day_birth", "month_birth", "year_birth"
- # "telefono_new"
- #'dob_day', 'dob_month', 'dob_year'
- ),
-
- # Specify the number of CPU cores to utilize (parallel processing).
- ## Get the number of detected cores minus 1, Reserve one core for
- #non-computational tasks to help prevent system slowdowns or unresponsiveness
- n.cores = parallel::detectCores() - 1,
- return.all = TRUE,
- return.df = TRUE)
-
-## Review the matching in each orginal frame
-matchedA <- dfA[matches.out$matches$inds.a, ]
-matchedB <- dfB[matches.out$matches$inds.b, ]
-
-# Confusion Matrice
-fastLink::confusion(matches.out, threshold = 0.98)
-
-# Examine the EM object:
-#matches.out$EM
-
-# Summarize the accuracy of the match:
-# each column gives the match count, match rate,
-# false discovery rate (FDR) and false negative rate (FNR)
-# under different cutoffs for matches based on the posterior
-# probability of a match.
-summary(matches.out)
-
-## Gt the output...
-matched_dfs <- fastLink::getMatches(
- dfA = dfA,
- dfB = dfB,
- fl.out = matches.out,
- threshold.match = 0.85
-)
-
-# Display the matches ###################
-# convert dfA rownames to a column
-dfA_clean <- dfA |> rownames_to_column()
-
-# convert dfB rownames to a column
-dfB_clean <- dfB |> rownames_to_column()
-
-# convert all columns in matches dataset to character,
-#so they can be joined to the rownames
-matches_clean <- matched_dfs |>
- dplyr::mutate(dplyr::across(dplyr::everything(), as.character))
-
-# Join matches to dfA, then add dfB
-# column "inds.b" is added to dfA
-complete <- dplyr::left_join(dfA_clean,
- matches_clean,
- by = c("rowname" = "inds.a"))
-
-# column(s) from dfB are added
-complete <- dplyr::left_join(complete,
- dfB_clean,
- by = c("inds.b" = "rowname"))
-
-
-
-# Preprocessing Matches via Blocking #################
-blockgender_out <- fastLink::blockData(dfA, dfB, varnames = "gender")
-
-## Subset dfA into blocks
-dfA_block1 <- dfA[blockgender_out$block.1$dfA.inds,]
-dfA_block2 <- dfA[blockgender_out$block.2$dfA.inds,]
-
-## Subset dfB into blocks
-dfB_block1 <- dfB[blockgender_out$block.1$dfB.inds,]
-dfB_block2 <- dfB[blockgender_out$block.2$dfB.inds,]
-
-## Run fastLink on each
-link.1 <- fastLink::fastLink(
- dfA = dfA_block1,
- dfB = dfB_block1,
- # Specify the vector of variable names to be used for matching.
- # These variable names should exist in both dfA and dfB
- varnames = c("nationality" ,
- "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new",
- "day_birth", "month_birth", "year_birth",
- # "asistencia_new" , "departamento_new", "telefono_new" ,
- "gender" ),
-
- # Specify which variables among varnames should be compared using string distance
- stringdist.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables present in stringdist.match can be partially matched
- partial.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables should be matched numerically
- # Must be a subset of 'varnames' and must not be present in 'stringdist.match'.
- numeric.match = c( "day_birth", "month_birth", "year_birth"
- # "telefono_new"
- #'dob_day', 'dob_month', 'dob_year'
- ),
-
- # Specify the number of CPU cores to utilize (parallel processing).
- ## Get the number of detected cores minus 1, Reserve one core for
- #non-computational tasks to help prevent system slowdowns or unresponsiveness
- n.cores = parallel::detectCores() - 1,
- return.df = TRUE)
-
-link.2 <- fastLink::fastLink(
- dfA = dfA_block2,
- dfB = dfB_block2,
- # Specify the vector of variable names to be used for matching.
- # These variable names should exist in both dfA and dfB
- varnames = c("nationality" ,
- "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new",
- "day_birth", "month_birth", "year_birth",
- # "asistencia_new" , "departamento_new", "telefono_new" ,
- "gender" ),
-
- # Specify which variables among varnames should be compared using string distance
- stringdist.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables present in stringdist.match can be partially matched
- partial.match = c( "firstname1_new" ,"firstname2_new" ,
- "fathername_new" ,"mothername_new"),
-
- # Specify which variables should be matched numerically
- # Must be a subset of 'varnames' and must not be present in 'stringdist.match'.
- numeric.match = c( "day_birth", "month_birth", "year_birth"
- # "telefono_new"
- #'dob_day', 'dob_month', 'dob_year'
- ),
-
- # Specify the number of CPU cores to utilize (parallel processing).
- ## Get the number of detected cores minus 1, Reserve one core for
- #non-computational tasks to help prevent system slowdowns or unresponsiveness
- n.cores = parallel::detectCores() - 1,
- return.df = TRUE)
-
-## aggregate multiple matches into a single summary with aggregateEM()
-agg.out <- fastLink::aggregateEM(em.list = list(link.1, link.2))
-
-
-
-# Preprocessing Matches via Blocking #################
diff --git a/deduplicate.Rmd b/deduplicate.Rmd
index 95c1ee0..9699b05 100644
--- a/deduplicate.Rmd
+++ b/deduplicate.Rmd
@@ -648,11 +648,11 @@ missing_gender <- data.prep |>
## let's us an API to identify gender based on firstname
# devtools::install_github("coccopuffs/GenderGuesser")
#missing_gender_result <- GenderGuesser::guessGender(missing_gender)
-# write.csv(missing_gender_result, "missing_gender_result.csv", row.names = FALSE)
+# write.csv(missing_gender_result, here::here("data-raw","missing_gender_result.csv"), row.names = FALSE)
# Results are saved locally to avoid calling too many times the API
-missing_gender_result <- readr::read_csv("missing_gender_result.csv")
+missing_gender_result <- readr::read_csv(here::here("data-raw","missing_gender_result.csv"))
missing_gender_results <- missing_gender_result |>
dplyr::filter(!(is.na(gender))) |>
@@ -829,8 +829,8 @@ dup <- dplyr::rows_append(dup, matchedA )
dup1 <- dup |>
dplyr::distinct()
-write.csv(dup1, "dup.csv", row.names = FALSE )
-write.csv(data.prep, "data.prep.csv", row.names = FALSE )
+write.csv(dup1, here::here("data-raw","dup.csv"), row.names = FALSE )
+write.csv(data.prep, here::here("data-raw","data.prep.csv"), row.names = FALSE )
# Examine the EM object:
#matches.out$EM
diff --git a/fastlink.R b/fastlink.R
deleted file mode 100644
index 75c5530..0000000
--- a/fastlink.R
+++ /dev/null
@@ -1,260 +0,0 @@
-# Clear the workspace by removing all objects
-rm(list = ls())
-
-# Load the pacman package if it is not already installed.
-# if (!requireNamespace("pacman", quietly = TRUE)) {
-# install.packages("pacman")
-# }
-#
-# pacman::p_load(
-# dplyr, # Data manipulation and transformation
-# data.table, # Fast data manipulation with data tables
-# stringi, # Character string processing
-# lubridate, # Date and time handling
-# janitor, # Data cleaning and tabulation functions
-# parallel, # Parallel computing
-# fastLink, # Record linkage and deduplication
-# stringdist # String distance computation
-# )
-
-# Get the number of detected cores minus 1
-# Reserve one core for non-computational tasks to help prevent system slowdowns or unresponsiveness
-numCores <- parallel::detectCores() - 1
-
-# Example data frames dfA and dfB
-# Replace these with your actual data frames
-
-
-#data(samplematch)
-
-dfA <- data.frame(
- FIRST_NAME = c("John", "Mary", "Robert", "Michael", "Jennifer", "David", "Karen", "Maria", "Carlos", "James"),
- LAST_NAME = c("Smith III", "Johnson!", "Williams123", "Brown", "Jones", "Davis", "Miller", "Garcia", "Martinez", "Andrson"),
- BIRTH_DATE = c("1981-05-20", "1990-05-15", "1978-12-10", "1985-08-02", "1993-11-25", "1977-03-30", "1988-06-18", "1991-02-05", "1980-09-12", "1982-07-09"),
- gender = c("M", "F", "M", "M", "F", "M", "F", "F", "M", "M")
-)
-
-dfB <- data.frame(
- RecipientNameFirst = c("John", "Mary", "Robert", "Michael", "Jennifer", "David", "Karenn", "Carloas", "Mariaa", "James"),
- RecipientNameLast = c("Smith iv", "Brown-", "Williams", "Jones", "John son", "No Name", "Miller", "Martinez", "Garcia", "Anderson"),
- RecipientDateOfBirth = c("1981-05-21", "1992-09-25", "1978-10-12", "1985-08-02", "1993-11-25", "1977-03-30", "1988-06-18", "1980-09-12", "1991-02-05", "1982-07-09"),
- gender = c("M", "F", "M", "M", "F", "M", "F", "M", "F", "M")
-)
-
-# # Example data frames dfA and dfB
-# dfA <- fread(file = 'dfA.csv',
-# sep = ",",
-# header = T,
-# nThread = numCores)
-#
-# dfB <- fread(file = 'dfB.csv',
-# sep = ",",
-# header = T,
-# nThread = numCores)
-
-# Assign a unique key ID to each row
-dfA <- dfA |>
- dplyr::mutate(row_idA = paste("dfA_", dplyr::row_number(), sep = ""))
-
-dfB <- dfB |>
- dplyr::mutate(row_idB = paste("dfB_", dplyr::row_number(), sep = ""))
-
-# Convert the date column to a valid date format.
-dfA$BIRTH_DATE <- as.Date(dfA$BIRTH_DATE, format = "%Y-%m-%d") # "%m/%d/%Y"
-dfB$RecipientDateOfBirth <- as.Date(dfB$RecipientDateOfBirth, format = "%Y-%m-%d") # "%m/%d/%Y"
-#
-# # Create new date variables by splitting date of birth into three different parts.
-dfA <- dfA |>
- dplyr::mutate(dob_day = as.numeric(lubridate::day(BIRTH_DATE)),
- dob_month = as.numeric(lubridate::month(BIRTH_DATE)),
- dob_year = as.numeric(lubridate::year(BIRTH_DATE)),
- DOB=BIRTH_DATE)
-
-dfB <- dfB |>
- dplyr::mutate(dob_day = as.numeric(lubridate::day(RecipientDateOfBirth)),
- dob_month = as.numeric(lubridate::month(RecipientDateOfBirth)),
- dob_year = as.numeric(lubridate::year(RecipientDateOfBirth)),
- DOB=RecipientDateOfBirth)
-
-
-# Define a function for data cleaning with additional name removal logic
-clean_names <- function(names_column) {
- # Step 0: Convert to uppercase
- names_column_new <- toupper(names_column)
- # Step 1: Remove specified name suffixes
- toRemove <- c(" JR", " SR", " IV", " III", " II")
- for (tR in toRemove) {
- names_column_new <- gsub(tR, "", names_column_new)
- }
- # Step 2: Convert special characters to ASCII equivalents
- names_column_new <- iconv(names_column_new, "latin1", "ASCII//TRANSLIT", sub = "")
- # Step 3: Remove punctuation, digits, and all sapces
- names_column_new <- gsub("[[:punct:][:digit:]][[:space:]]", "", names_column_new)
- # Step 4: Create a new variable with only alphabetic characters
- names_column_new <- gsub("[^[:alpha:]]", "", names_column_new)
- return(names_column_new)
-}
-
-# Perform data cleaning on dfA using the clean_names function
-dfA <- dfA |>
- dplyr::mutate_at(dplyr::vars(FIRST_NAME, LAST_NAME), list(new = clean_names)) |>
- dplyr::mutate(FN = FIRST_NAME_new, LN = LAST_NAME_new)
-
-# Perform data cleaning on dfB using the clean_names function
-dfB <- dfB |>
- dplyr::mutate_at(dplyr::vars(RecipientNameFirst, RecipientNameLast), list(new = clean_names)) |>
- dplyr::mutate(FN = RecipientNameFirst_new, LN = RecipientNameLast_new)
-
-
-rm(clean_names)
-
-# # Create no name list
-NoNameList <- c(
- "NICKNAME",
- "NOFAMILYNAME",
- "NOFIRSTNAME",
- "NOLASTNAME",
- "NOMIDDLENAME",
- "NONAME",
- "NO",
- "UNKNOWN",
- "UNK",
- "UN",
- "NA"
-)
-#
-# # Blank out the names in the data if they match any of the strings in the NoNameList
-dfA <- dfA |>
- dplyr::mutate(FN = dplyr::case_when(
- FN %in% NoNameList~ "",
- TRUE ~ FN),
- LN = dplyr::case_when(
- LN %in% NoNameList ~ "",
- TRUE ~ LN))
-
-dfB <- dfB |>
- dplyr::mutate(FN = dplyr::case_when(
- FN %in% NoNameList~ "",
- TRUE ~ FN),
- LN = dplyr::case_when(
- LN %in% NoNameList ~ "",
- TRUE ~ LN))
-rm(NoNameList)
-
-# Delete rows that have missing First Name (FN), Last Name (LN), or Date of Birth (DOB).
-dfA <- dfA |>
- dplyr::filter(!is.na(FN) & FN != "" & !is.na( LN) & LN != "" & !is.na(DOB) )
-
-dfB <- dfB |>
- dplyr::filter(!is.na(FN) & FN != "" & !is.na( LN) & LN != "" & !is.na(DOB) )
-
-
-# Exact Matching
-Exact <- merge(dfA, dfB, by=c("FN","LN","DOB", "gender"))
-
-
-# Using the fastLink R package for record linkage
-matches.out <- fastLink::fastLink(
- dfA = dfA, dfB = dfB,
- # Specify the vector of variable names to be used for matching.
- # These variable names should exist in both dfA and dfB
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year', 'gender'),
- # Specify which variables among varnames should be compared using string distance
- stringdist.match = c('FN', 'LN'),
- # Specify which variables present in stringdist.match can be partially matched
- partial.match = c('FN', 'LN'),
- # Specify which variables should be matched numerically
- # Must be a subset of 'varnames' and must not be present in 'stringdist.match'.
- numeric.match = c('dob_day', 'dob_month', 'dob_year'),
- # Specify the number of CPU cores to utilize (parallel processing). The default value is NULL.
- n.cores = numCores,
- return.all = TRUE,
- return.df = TRUE
-)
-
-# The output from fastLink() will be a list that includes a matrix where each row
-# is a match with the relevant indices of dfA (column 1) and dfB (column 2).
-
-# Confusion Matrice
-fastLink::confusion(matches.out, threshold = 0.98)
-
-# Examine the EM object:
-matches.out$EM
-
-# Summarize the accuracy of the match:
-# each column gives the match count, match rate,
-# false discovery rate (FDR) and false negative rate (FNR)
-# under different cutoffs for matches based on the posterior
-# probability of a match.
-summary(matches.out)
-
-
-# Get fuzzy matches using the results from fastLink
-# A threshold of 0.98 is set for match classification
-fuzzy_matches <- fastLink::getMatches(dfA, dfB,
- fl.out = matches.out,
- threshold.match = 0.98)
-fuzzy_matches #|> knitr::kable()
-
-blockdata_out <- fastLink::blockData(dfA, dfB,
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'),
- # window blocking for numeric variables, where a given observation in dataset A
- #will be compared to all observations in dataset B where the value of the blocking
- #variable is within ±K of the value of the same variable in dataset A.
- #The value of K is the size of the window
- # window.block = "birthyear",
- # window.size = 1,
- # using k-means clustering, so that similar values of string and numeric
- # variables are blocked together.
- kmeans.block = "FN",
- nclusters = 2)
-
-
-## Aggregating Multiple Matches Together ###
-
-#Often, we run several different matches for a single data set -
-#for instance, when blocking by gender or by some other criterion to reduce the
-#number of pairwise comparisons. Here, we walk through how to aggregate those
-#multiple matches into a single summary.
-blockgender_out <- fastLink::blockData(dfA, dfB, varnames = "gender")
-## Subset dfA into blocks
-dfA_block1 <- dfA[blockgender_out$block.1$dfA.inds,]
-dfA_block2 <- dfA[blockgender_out$block.2$dfA.inds,]
-
-## Subset dfB into blocks
-dfB_block1 <- dfB[blockgender_out$block.1$dfB.inds,]
-dfB_block2 <- dfB[blockgender_out$block.2$dfB.inds,]
-
-## Run fastLink on each
-fl_out_block1 <- fastLink::fastLink(
- dfA_block1, dfB_block1,
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'),
- n.cores = numCores
-)
-fl_out_block2 <- fastLink::fastLink(
- dfA_block2, dfB_block2,
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'),
- n.cores = numCores
-)
-
-#Here, we run fastLink() on the subsets of data defined by blocking on gender in the previous section:
-
-## Run fastLink on each
-link.1 <- fastLink::fastLink(
- dfA_block1, dfB_block1,
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'),
- n.cores = numCores
- )
-
-link.2 <- fastLink::fastLink(
- dfA_block2, dfB_block2,
- varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'),
- n.cores = numCores
-)
-
-#To aggregate the two matches into a single summary, we use the aggregateEM() function as follows:
-agg.out <- fastLink::aggregateEM(em.list = list(link.1, link.2))
-
-summary(agg.out )
-
-
diff --git a/img/Record-linkage-example.png b/img/Record-linkage-example.png
new file mode 100644
index 0000000..db03d3e
Binary files /dev/null and b/img/Record-linkage-example.png differ
diff --git a/concept.png b/img/concept.png
similarity index 100%
rename from concept.png
rename to img/concept.png
diff --git a/evaluation.png b/img/evaluation.png
similarity index 100%
rename from evaluation.png
rename to img/evaluation.png
diff --git a/pipe.png b/img/pipe.png
similarity index 100%
rename from pipe.png
rename to img/pipe.png
diff --git a/img/prob.png b/img/prob.png
new file mode 100644
index 0000000..69c3afe
Binary files /dev/null and b/img/prob.png differ
diff --git a/record-linkage.png b/img/record-linkage.png
similarity index 100%
rename from record-linkage.png
rename to img/record-linkage.png
diff --git a/img/record-linkage.webp b/img/record-linkage.webp
new file mode 100644
index 0000000..b120aa3
Binary files /dev/null and b/img/record-linkage.webp differ
diff --git a/index.Rmd b/index.Rmd
index ba2842d..dfbc542 100644
--- a/index.Rmd
+++ b/index.Rmd
@@ -71,7 +71,7 @@ Can be numerous ones: ...
]
.pull-right[
-![](record-linkage.png)
+![](img/record-linkage.png)
]
@@ -94,7 +94,7 @@ The recommended workflow includes to go through specific steps:
]
.pull-right[
-![](concept.png)
+![](img/concept.png)
]
???
@@ -362,7 +362,7 @@ Revise the[demo script](FastLink.html) and [applied real use case notebook](htt
]
.pull-right[
-![](pipe.png)
+![](img/pipe.png)
]
diff --git a/index.html b/index.html
index 767431e..7cde382 100644
--- a/index.html
+++ b/index.html
@@ -1339,6 +1339,10 @@
--unhcr-logoblue: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjUuOSIgaGVpZ2h0PSI1NC4zIiB2aWV3Qm94PSIwIDAgMjI1LjkgNTQuMyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwMDcyYmM7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMzLDM2LjdjLjYsMCwuNi0uNC42LTFWMzIuNGMwLS43LS4xLS45LjMtLjksMS40LDAsMS43LS4xLDEuNy0xLjNWMTcuOWMwLTMuMy0yLjQtMi44LTMtNC0xLTEuNiwxLjgtMS42LjgtNS4yYTIsMiwwLDAsMC0yLjEtMS4zLDIsMiwwLDAsMC0yLjEsMS4zYy0xLDMuNiwxLjcsMy42LjgsNS4yLS43LDEuMi0zLC43LTMsNFYzMC4yYzAsMS4yLjQsMS4zLDEuNywxLjMuNCwwLC4zLjIuMy45djMuM2MwLC43LS4xLDEsLjYsMUgzMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyLjMsMTAuMWMtMS4yLDEuMy0zLjEsNC4zLTEuOSw2LjgsMi41LDEsMi4zLTgsNS41LTcuOSwxLjYsMS40LS41LDUuNy0xLjEsNy41LS44LDIuMy0xLjQsNy4xLTIuOSw5LjUtMS4yLDItLjMsOC4xLS43LDEwLjItMSwxLTMuOS4zLTUuMS4xYTgxLjc2LDgxLjc2LDAsMCwwLS43LTguMmMwLS44LS45LTEyLjctLjItMTQuMUMxNi42LDExLDI0LDUuMywyNSw0LjJTMjksMCwzMC4zLDBjLjkuNi40LDIsLjIsMi41LTEuMiwzLTYuNSw2LTguMiw3LjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjgtMi42LDEtMi40LTgtNS41LTcuOS0xLjUsMS40LjUsNS43LDEuMSw3LjUuOCwyLjMsMS40LDcuMSwyLjksOS41LDEuMiwyLC4zLDguMS43LDEwLjIsMS4xLDEsMy45LjMsNS4xLjFhNzUuNTgsNzUuNTgsMCwwLDEsLjctOC4yYy4xLS44LjktMTIuNy4yLTE0LjEtMS40LTMtOC44LTguNy05LjgtOS44UzMzLjYsMCwzMi40LDBjLS45LjYtLjMsMi0uMiwyLjUsMS4zLDMsNi41LDYsOC4yLDcuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExLjUsNi4xYy0uNy42LTIuMSwxLjEtMy4yLDIuNC0uNC0uNy42LTIuNSwxLjgtMy42YTE3LjY4LDE3LjY4LDAsMCwxLDMuMi0yLjFjLjQuOS0xLDIuMy0xLjgsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOS40LDExYy0xLjEsMS0yLjMsMS41LTMuOSwzLjRhMTIuMjIsMTIuMjIsMCwwLDEtLjItNS43Yy42LTEuOCwxLjUtMy44LDMtNC40YTE1LjY5LDE1LjY5LDAsMCwwLS45LDQuM2MtLjcsMi42LTEsMi43LS45LDMsLjIsMCwxLTEuNCwyLjEtMi40QzkuOCw4LDExLjQsNy43LDEyLjQsNi45YTE3LjMsMTcuMywwLDAsMS0zLDQuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMuOSwyMS44YTE0LjMxLDE0LjMxLDAsMCwxLTEuOC03Yy4xLTEuNi45LTUuMywyLTUuOS0uMywzLjQuNiwzLjcuMiw2LjQsMCwuMS0uNCwzLS40LDMuMi41LS4xLDAtMi42LDUuNC02LjQtMS4yLDItLjYsMi42LTIuNyw1LjNhMTAuNzQsMTAuNzQsMCwwLDAtMi43LDQuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYuMSwyNC4zYTYuNjMsNi42MywwLDAsMC0xLjIsMy4yQzIuMiwyNi0uOSwxOS44LjIsMTYuN2MuNywyLjMsMS43LDIuOSwyLjQsNC44LDEuMiwyLjksMSwzLjgsMS44LDQuNWE5LDksMCwwLDEsLjktNC42LDMyLjA3LDMyLjA3LDAsMCwxLDEuOS0zLjFjLjUsMi4xLjEsMy44LTEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOC41LDI5LjZhNDYsNDYsMCwwLDEtLjYsNS4yQzMuMywzMy4zLjgsMjgsLjgsMjUuNGMxLjQsMy4yLDMuNSwzLjIsNi4yLDcuNy4yLTEuNy0uNS0uNC0uNi0zLjcuMS0zLjQuOC0zLjUuOS01LjYuOS45LDEuMiw0LjcsMS4yLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyLjMsMzYuNGMuNCwxLjguNSwzLjguOCw1LjMtMi43LTEtMy4zLS4yLTYuNS0yLjItMS40LS44LTQtNC4xLTMuOS02LjQsMy4xLDMuNSwzLjcsMy4xLDUuMiw0LjQsMS40LDEuMSwyLjUsMi44LDMuNiwyLjYuMS0uOS0yLjMtMy0yLTguOGExNC4xNSwxNC4xNSwwLDAsMSwyLjgsNS4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcuNiw0MC44Yy44LDEuMi42LDEuNywyLjcsNC4xQTI1LjU0LDI1LjU0LDAsMCwxLDE0LjgsNDZjLTEuMywwLTYtMS4yLTcuNi00LjQsMi43LDEuNCwyLjcsMS4xLDYuMywxLjksMi42LjYsNC40LDEuNCw1LjEsMS4zLS4xLS4zLTIuMS0xLjItMy41LTIuOXMtMS0zLjktMi4zLTUuNGMuOS0uNCw0LjEsMy40LDQuOCw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MSw2LjFjLjYuNiwyLjIsMS4xLDMuMSwyLjQuNC0uNy0uNi0yLjUtMS44LTMuNmExNC43NywxNC43NywwLDAsMC0zLjItMi4xYy0uNC45LDEsMi4zLDEuOSwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01My4xLDExYzEuMSwxLDIuMywxLjUsMy45LDMuNGExMi4yMiwxMi4yMiwwLDAsMCwuMi01LjdjLS41LTEuOC0xLjUtMy44LTMtNC40YTE1LjY5LDE1LjY5LDAsMCwxLC45LDQuM2MuNywyLjYsMSwyLjcuOSwzLS4yLDAtMS0xLjQtMi4xLTIuNEM1Mi43LDgsNTEuMiw3LjcsNTAuMSw2LjlhMTcuMywxNy4zLDAsMCwwLDMsNC4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTguNSwyMS44YTE0LDE0LDAsMCwwLDEuOC03Yy0uMS0xLjYtLjktNS4zLTItNS45LjMsMy40LS42LDMuNy0uMiw2LjQsMCwuMS4zLDMsLjMsMy4yLS40LS4xLDAtMi42LTUuMy02LjQsMS4xLDIsLjYsMi42LDIuNyw1LjNhOS4yOCw5LjI4LDAsMCwxLDIuNyw0LjQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ni40LDI0LjNhOS41OCw5LjU4LDAsMCwxLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44LS43LDIuMy0xLjcsMi45LTIuMyw0LjgtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjVhMTEuNzksMTEuNzksMCwwLDAtLjktNC42LDE5LjgyLDE5LjgyLDAsMCwwLTEuOS0zLjEsNy41MSw3LjUxLDAsMCwwLDEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQsMjkuNmEzMC45MiwzMC45MiwwLDAsMCwuNyw1LjJjNC42LTEuNSw3LjEtNi44LDcuMS05LjQtMS41LDMuMi0zLjUsMy4yLTYuMiw3LjctLjItMS43LjUtLjQuNS0zLjdzLS44LTMuNS0uOS01LjZjLS45LjktMS4yLDQuNy0xLjIsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMSwzNi40Yy0uNCwxLjgtLjUsMy44LS43LDUuMywyLjYtMSwzLjMtLjIsNi40LTIuMiwxLjQtLjgsNC4xLTQuMSwzLjktNi40LTMuMSwzLjUtMy43LDMuMS01LjIsNC40LTEuNCwxLjEtMi42LDIuOC0zLjYsMi42LS4xLS45LDIuMy0zLDItOC44YTE1Ljg0LDE1Ljg0LDAsMCwwLTIuOCw1LjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NC45LDQwLjhhMTYuMTksMTYuMTksMCwwLDEtMi43LDQuMUEyNi44MSwyNi44MSwwLDAsMCw0Ny43LDQ2YzEuMywwLDYtMS4yLDcuNS00LjQtMi43LDEuNC0yLjcsMS4xLTYuMywxLjktMi42LjYtNC40LDEuNC01LjEsMS4zLjItLjMsMi4yLTEuMiwzLjUtMi45czEtMy45LDIuMy01LjRjLS45LS40LTQsMy40LTQuNyw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNC42LDUxLjhsLS44LS40YTE3LjIsMTcuMiwwLDAsMSwxMy41LTUuNmM4LjUuNSw3LjksMi41LDEyLjUsMi4xLjUsMC0uNC42LS40LjZhMTUuNTYsMTUuNTYsMCwwLDEtMTAtLjJjLTUuNS0xLjgtOS4xLTIuOS0xNC44LDMuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4LDUxLjhsLjgtLjRhMTcsMTcsMCwwLDAtMTMuNC01LjZjLTguNS41LTcuOSwyLjUtMTIuNSwyLjEtLjUsMCwuNC42LjQuNmExNS41NiwxNS41NiwwLDAsMCwxMC0uMmM1LjUtMS44LDktMi45LDE0LjcsMy41Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTguMywyNS41YzAsOC4xLTQuNCwxMi4xLTEzLjQsMTIuMVM3MS41LDMzLjcsNzEuNSwyNS41VjcuNWg5djE2YzAsMywwLDYuOCw0LjQsNi44czQuMy0zLjgsNC4zLTYuOFY3LjVoOS4xdjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwMy43IDcuNCAxMTMgNy40IDEyMS42IDIzLjEgMTIxLjYgMjMuMSAxMjEuNiA3LjQgMTMwLjIgNy40IDEzMC4yIDM2LjggMTIxLjQgMzYuOCAxMTIuNCAyMC44IDExMi4zIDIwLjggMTEyLjMgMzYuOCAxMDMuNyAzNi44IDEwMy43IDcuNCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIxMzUuOCA3LjQgMTQ0LjggNy40IDE0NC44IDE3LjYgMTUzLjMgMTcuNiAxNTMuMyA3LjQgMTYyLjMgNy40IDE2Mi4zIDM2LjggMTUzLjMgMzYuOCAxNTMuMyAyNS4yIDE0NC44IDI1LjIgMTQ0LjggMzYuOCAxMzUuOCAzNi44IDEzNS44IDcuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE4NS41LDE4LjRhNC42OSw0LjY5LDAsMCwwLTQuNy00LjNjLTQuMiwwLTUuNiw0LjEtNS42LDguMXMxLjQsOC4xLDUuNiw4LjFjMywwLDQuMi0yLjEsNC44LTQuOWg4LjljMCw1LjktNC44LDEyLjItMTMuNCwxMi4yLTkuNSwwLTE0LjktNi43LTE0LjktMTUuNCwwLTkuMyw1LjgtMTUuNCwxNC45LTE1LjQsOC4xLDAsMTIuNSw0LjMsMTMuMywxMS42aC04LjkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDcuMywxNC40aDQuMmMzLjUsMCw0LjUsMS4xLDQuNSwyLjksMCwyLjYtMi4zLDIuOS00LDIuOWgtNC43Wm0tOS4xLDIyLjRoOS4xVjI2LjZoNC44YzMuNiwwLDMuOCwyLjksNC4xLDUuN2EyMy4zOCwyMy4zOCwwLDAsMCwuNyw0LjVoOWMtLjgtMS40LS45LTQuOS0xLTYuMy0uMy0zLjctMS45LTYuNC00LjMtNy4zLDMtMS4xLDQuNC00LjMsNC40LTcuNCwwLTUuNi00LjQtOC40LTkuNi04LjRIMTk4LjJWMzYuOCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI3NC41IDQzLjYgNzEuNSA0My42IDcxLjUgNDEuNyA3OS42IDQxLjcgNzkuNiA0My42IDc2LjYgNDMuNiA3Ni42IDUxLjYgNzQuNSA1MS42IDc0LjUgNDMuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTgwLjMsNDEuN2gydjMuN2gwYTIuNDQsMi40NCwwLDAsMSwyLjEtMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRIODV2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMmwuMS05LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04OS43LDQ4LjVxLjE1LDEuOCwxLjgsMS44YTEuNjUsMS42NSwwLDAsMCwxLjUtLjloMS43YTMuMjIsMy4yMiwwLDAsMS0zLjMsMi40LDMuNDYsMy40NiwwLDAsMS0zLjYtMy4zdi0uNGEzLjU5LDMuNTksMCwwLDEsMy40LTMuOGguM2MyLjQsMCwzLjYsMiwzLjUsNC4yWm0zLjItMS4yYy0uMi0xLS42LTEuNS0xLjYtMS41YTEuNTUsMS41NSwwLDAsMC0xLjYsMS40di4xaDMuMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNy42LDQ3LjljMCwyLjctMS42LDQtNC4yLDRzLTQuMi0xLjMtNC4yLTRWNDEuOGgyLjJ2Ni4xYzAsMS4xLjMsMi4xLDIsMi4xLDEuNSwwLDItLjcsMi0yLjFWNDEuOGgyLjJ2Ni4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwOSA0MS43IDExMS4yIDQxLjcgMTE1LjMgNDguMyAxMTUuMyA0OC4zIDExNS4zIDQxLjcgMTE3LjQgNDEuNyAxMTcuNCA1MS42IDExNS4yIDUxLjYgMTExLjEgNDUgMTExLjEgNDUgMTExLjEgNTEuNiAxMDkgNTEuNiAxMDkgNDEuNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUuNCwxLjUsMS40cy0uNSwxLjQtMS41LDEuNGgtMi40Wm0tMi4xLDguMmgyLjJWNDcuOGgyLjJjMS4xLDAsMS41LjUsMS42LDEuNWE2LjcyLDYuNzIsMCwwLDAsLjQsMi40aDIuMmE1Ljg3LDUuODcsMCwwLDEtLjQtMi4zYy0uMS0xLS40LTItMS40LTIuM2gwYTIuNSwyLjUsMCwwLDAsMS42LTIuNSwyLjY5LDIuNjksMCwwLDAtMi43LTIuN2gtNS41bC0uMiw5LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzMuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYy45LDAsMS40LjUsMS42LDEuNVptNS4xLDEuMmMuMS0yLjItMS00LjItMy41LTQuMmEzLjUsMy41LDAsMCwwLTMuNiwzLjVWNDhhMy40LDMuNCwwLDAsMCwzLjIsMy43aC40YTMuMjIsMy4yMiwwLDAsMCwzLjMtMi40aC0xLjdhMS40OSwxLjQ5LDAsMCwxLTEuNS45cS0xLjY1LDAtMS44LTEuOGw1LjIuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzOS42LDQ1LjhoLTEuMlY0NC41aDEuMlY0NGEyLjA1LDIuMDUsMCwwLDEsMi0yLjJoLjRhMy4wOCwzLjA4LDAsMCwxLDEsLjF2MS41aC0uN2MtLjUsMC0uNy4yLS43Ljh2LjRIMTQzdjEuM2gtMS40djUuOGgtMlY0NS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xaDBhMi43NSwyLjc1LDAsMCwxLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOVY0NC41aDJ2NGMwLDEuMi40LDEuOCwxLjMsMS44LDEuMSwwLDEuNS0uNiwxLjUtMlY0NC41aDJ2Ny4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjcsNDkuOWMtMS4yLDAtMS42LTEuMS0xLjYtMi4xcy41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmExLjczLDEuNzMsMCwwLDEtMS41LDJjLS4xLDAtLjEsMC0uMi0uMW0zLjYtNS40aC0xLjl2MWgwYTIsMiwwLDAsMC0yLjEtMS4xLDMuMjEsMy4yMSwwLDAsMC0zLjEsMy41YzAsMS44LjksMy42LDMsMy42YTIuMzYsMi4zNiwwLDAsMCwyLjEtMS4xaDB2LjljMCwxLS41LDEuOC0xLjYsMS44YTEuMzMsMS4zMywwLDAsMS0xLjUtMWgtMS45Yy4xLDEuNiwxLjcsMi4zLDMuMSwyLjMsMy4zLDAsMy43LTIsMy43LTMuMmwuMi02LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjEuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYzEsMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4yMiwzLjIyLDAsMCwwLDMuMy0yLjRoLTEuN2ExLjQ5LDEuNDksMCwwLDEtMS41LjlxLTEuNjUsMC0xLjgtMS44bDUuMi4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4xNSwzLjE1LDAsMCwwLDMuMy0yLjRoLTEuN2ExLjU0LDEuNTQsMCwwLDEtMS42LjlxLTEuNjUsMC0xLjgtMS44bDUuMy4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgzLDQ0LjJoMGwxLjIsMy42aC0yLjZabS00LjgsNy40aDIuMmwuOC0yLjJoMy43bC43LDIuMmgyLjNsLTMuNy05LjhIMTgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5MS41LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMuNS0yLDEuNi0yYzEuMywwLDEuNywxLDEuNywyLjJhMS44LDEuOCwwLDAsMS0xLjUsMmMtLjEsMC0uMiwwLS4yLS4xbTMuNS01LjRoLTEuOXYxaDBhMi4wOSwyLjA5LDAsMCwwLTIuMS0xLjEsMy4yMSwzLjIxLDAsMCwwLTMuMSwzLjVjMCwxLjguOSwzLjYsMy4xLDMuNmEyLjM2LDIuMzYsMCwwLDAsMi4xLTEuMWgwdi45YzAsMS0uNSwxLjgtMS42LDEuOGExLjMzLDEuMzMsMCwwLDEtMS41LTFoLTEuOWMuMSwxLjYsMS43LDIuMywzLjEsMi4zLDMuMywwLDMuNy0yLDMuNy0zLjJsLjEtNi43Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk3LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjIsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNTYsMy41NiwwLDAsMC0zLjYsMy41VjQ4YTMuNCwzLjQsMCwwLDAsMy4yLDMuN2guNGEzLjIyLDMuMjIsMCwwLDAsMy4zLTIuNGgtMS43YTEuNTQsMS41NCwwLDAsMS0xLjYuOXEtMS42NSwwLTEuOC0xLjhsNS4zLjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDMuOSw0NC41aDEuOXYxaC4xYTIuNzUsMi43NSwwLDAsMSwyLjItMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRoLTJ2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMnYtNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNi42LDQ3YTEuMzIsMS4zMiwwLDAsMC0xLjQtMS4yaDBjLTEuMywwLTEuNywxLjMtMS43LDIuM3MuNCwyLjIsMS42LDIuMmExLjYyLDEuNjIsMCwwLDAsMS42LTEuNGgxLjlhMy4wOCwzLjA4LDAsMCwxLTMuNCwyLjloMGEzLjQ2LDMuNDYsMCwwLDEtMy42LTMuM3YtLjNhMy40MywzLjQzLDAsMCwxLDMuMi0zLjhoLjVhMy4xMiwzLjEyLDAsMCwxLDMuNCwyLjdsLTIuMS0uMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMyw1Mi41YTIuMjEsMi4yMSwwLDAsMS0yLjUsMS42LDQuODcsNC44NywwLDAsMS0xLjItLjFWNTIuNGMuNCwwLC44LjEsMS4xLjFhMS4wOCwxLjA4LDAsMCwwLC44LTEuMS4zNy4zNywwLDAsMC0uMS0uM2wtMi41LTYuN2gyLjFsMS42LDQuOWgwbDEuNi00LjloMkwyMjMsNTIuNSIvPjwvc3ZnPg==");
--unhcr-logowhite: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyMjUuOSA1NC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjUuOSA1NC4zOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zMywzNi43YzAuNiwwLDAuNi0wLjQsMC42LTF2LTMuM2MwLTAuNy0wLjEtMC45LDAuMy0wLjljMS40LDAsMS43LTAuMSwxLjctMS4zVjE3LjljMC0zLjMtMi40LTIuOC0zLTQKCWMtMS0xLjYsMS44LTEuNiwwLjgtNS4yYy0wLjMtMC45LTEuMi0xLjQtMi4xLTEuM2MtMC45LTAuMS0xLjgsMC40LTIuMSwxLjNjLTEsMy42LDEuNywzLjYsMC44LDUuMmMtMC43LDEuMi0zLDAuNy0zLDR2MTIuMwoJYzAsMS4yLDAuNCwxLjMsMS43LDEuM2MwLjQsMCwwLjMsMC4yLDAuMywwLjl2My4zYzAsMC43LTAuMSwxLDAuNiwxSDMzIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMi4zLDEwLjFjLTEuMiwxLjMtMy4xLDQuMy0xLjksNi44YzIuNSwxLDIuMy04LDUuNS03LjljMS42LDEuNC0wLjUsNS43LTEuMSw3LjVjLTAuOCwyLjMtMS40LDcuMS0yLjksOS41CgljLTEuMiwyLTAuMyw4LjEtMC43LDEwLjJjLTEsMS0zLjksMC4zLTUuMSwwLjFjLTAuMS0yLjctMC4zLTUuNS0wLjctOC4yYzAtMC44LTAuOS0xMi43LTAuMi0xNC4xYzEuNC0zLDguOC04LjcsOS44LTkuOAoJUzI5LDAsMzAuMywwYzAuOSwwLjYsMC40LDIsMC4yLDIuNUMyOS4zLDUuNSwyNCw4LjUsMjIuMywxMC4xIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjhjLTIuNiwxLTIuNC04LTUuNS03LjljLTEuNSwxLjQsMC41LDUuNywxLjEsNy41YzAuOCwyLjMsMS40LDcuMSwyLjksOS41CgljMS4yLDIsMC4zLDguMSwwLjcsMTAuMmMxLjEsMSwzLjksMC4zLDUuMSwwLjFjMC4xLTIuNywwLjMtNS41LDAuNy04LjJjMC4xLTAuOCwwLjktMTIuNywwLjItMTQuMWMtMS40LTMtOC44LTguNy05LjgtOS44CglTMzMuNiwwLDMyLjQsMGMtMC45LDAuNi0wLjMsMi0wLjIsMi41QzMzLjUsNS41LDM4LjcsOC41LDQwLjQsMTAuMSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEuNSw2LjFjLTAuNywwLjYtMi4xLDEuMS0zLjIsMi40QzcuOSw3LjgsOC45LDYsMTAuMSw0LjljMS0wLjgsMi4xLTEuNSwzLjItMi4xQzEzLjcsMy43LDEyLjMsNS4xLDExLjUsNi4xIgoJLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkuNCwxMWMtMS4xLDEtMi4zLDEuNS0zLjksMy40QzUsMTIuNSw0LjksMTAuNiw1LjMsOC43YzAuNi0xLjgsMS41LTMuOCwzLTQuNEM3LjgsNS43LDcuNSw3LjEsNy40LDguNgoJYy0wLjcsMi42LTEsMi43LTAuOSwzYzAuMiwwLDEtMS40LDIuMS0yLjRjMS4yLTEuMiwyLjgtMS41LDMuOC0yLjNDMTEuNiw4LjQsMTAuNiw5LjgsOS40LDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjksMjEuOGMtMS4yLTIuMS0xLjgtNC42LTEuOC03YzAuMS0xLjYsMC45LTUuMywyLTUuOWMtMC4zLDMuNCwwLjYsMy43LDAuMiw2LjRjMCwwLjEtMC40LDMtMC40LDMuMgoJYzAuNS0wLjEsMC0yLjYsNS40LTYuNGMtMS4yLDItMC42LDIuNi0yLjcsNS4zQzUuNCwxOC42LDQuNCwyMC4xLDMuOSwyMS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02LjEsMjQuM2MtMC43LDAuOS0xLjEsMi0xLjIsMy4yQzIuMiwyNi0wLjksMTkuOCwwLjIsMTYuN2MwLjcsMi4zLDEuNywyLjksMi40LDQuOGMxLjIsMi45LDEsMy44LDEuOCw0LjUKCWMtMC4xLTEuNiwwLjItMy4yLDAuOS00LjZjMC42LTEuMSwxLjItMi4xLDEuOS0zLjFDNy43LDIwLjQsNy4zLDIyLjEsNi4xLDI0LjMiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTguNSwyOS42Yy0wLjEsMS43LTAuMywzLjUtMC42LDUuMmMtNC42LTEuNS03LjEtNi44LTcuMS05LjRjMS40LDMuMiwzLjUsMy4yLDYuMiw3LjdjMC4yLTEuNy0wLjUtMC40LTAuNi0zLjcKCWMwLjEtMy40LDAuOC0zLjUsMC45LTUuNkM4LjIsMjQuNyw4LjUsMjguNSw4LjUsMjkuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTIuMywzNi40YzAuNCwxLjgsMC41LDMuOCwwLjgsNS4zYy0yLjctMS0zLjMtMC4yLTYuNS0yLjJjLTEuNC0wLjgtNC00LjEtMy45LTYuNGMzLjEsMy41LDMuNywzLjEsNS4yLDQuNAoJYzEuNCwxLjEsMi41LDIuOCwzLjYsMi42YzAuMS0wLjktMi4zLTMtMi04LjhDMTAuOCwzMi44LDExLjcsMzQuNSwxMi4zLDM2LjQiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3LjYsNDAuOGMwLjgsMS4yLDAuNiwxLjcsMi43LDQuMWMtMS44LDAuNi0zLjYsMC45LTUuNSwxLjFjLTEuMywwLTYtMS4yLTcuNi00LjRjMi43LDEuNCwyLjcsMS4xLDYuMywxLjkKCWMyLjYsMC42LDQuNCwxLjQsNS4xLDEuM2MtMC4xLTAuMy0yLjEtMS4yLTMuNS0yLjlzLTEtMy45LTIuMy01LjRDMTMuNywzNi4xLDE2LjksMzkuOSwxNy42LDQwLjgiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxLDYuMWMwLjYsMC42LDIuMiwxLjEsMy4xLDIuNGMwLjQtMC43LTAuNi0yLjUtMS44LTMuNmMtMS0wLjgtMi0xLjUtMy4yLTIuMUM0OC43LDMuNyw1MC4xLDUuMSw1MSw2LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUzLjEsMTFjMS4xLDEsMi4zLDEuNSwzLjksMy40YzAuNS0xLjksMC42LTMuOCwwLjItNS43Yy0wLjUtMS44LTEuNS0zLjgtMy00LjRjMC41LDEuNCwwLjgsMi44LDAuOSw0LjMKCWMwLjcsMi42LDEsMi43LDAuOSwzYy0wLjIsMC0xLTEuNC0yLjEtMi40Yy0xLjItMS4yLTIuNy0xLjUtMy44LTIuM0M1MC45LDguNCw1MS45LDkuOCw1My4xLDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01OC41LDIxLjhjMS4yLTIuMSwxLjgtNC41LDEuOC03Yy0wLjEtMS42LTAuOS01LjMtMi01LjljMC4zLDMuNC0wLjYsMy43LTAuMiw2LjRjMCwwLjEsMC4zLDMsMC4zLDMuMgoJYy0wLjQtMC4xLDAtMi42LTUuMy02LjRjMS4xLDIsMC42LDIuNiwyLjcsNS4zQzU3LjEsMTguNiw1OCwyMC4xLDU4LjUsMjEuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTYuNCwyNC4zYzAuNiwxLDEsMi4xLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44Yy0wLjcsMi4zLTEuNywyLjktMi4zLDQuOGMtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjUKCWMwLTEuNi0wLjMtMy4xLTAuOS00LjZjLTAuNS0xLjEtMS4yLTIuMS0xLjktMy4xQzU0LjgsMjAuNCw1NS4yLDIyLjUsNTYuNCwyNC4zIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01NCwyOS42YzAuMSwxLjgsMC4zLDMuNSwwLjcsNS4yYzQuNi0xLjUsNy4xLTYuOCw3LjEtOS40Yy0xLjUsMy4yLTMuNSwzLjItNi4yLDcuN2MtMC4yLTEuNywwLjUtMC40LDAuNS0zLjcKCXMtMC44LTMuNS0wLjktNS42QzU0LjMsMjQuNyw1NCwyOC41LDU0LDI5LjYiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUwLjEsMzYuNGMtMC40LDEuOC0wLjUsMy44LTAuNyw1LjNjMi42LTEsMy4zLTAuMiw2LjQtMi4yYzEuNC0wLjgsNC4xLTQuMSwzLjktNi40Yy0zLjEsMy41LTMuNywzLjEtNS4yLDQuNAoJYy0xLjQsMS4xLTIuNiwyLjgtMy42LDIuNmMtMC4xLTAuOSwyLjMtMywyLTguOEM1MS43LDMyLjgsNTAuNywzNC41LDUwLjEsMzYuNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDQuOSw0MC44Yy0wLjcsMS41LTEuNiwyLjktMi43LDQuMWMxLjgsMC42LDMuNiwwLjksNS41LDEuMWMxLjMsMCw2LTEuMiw3LjUtNC40Yy0yLjcsMS40LTIuNywxLjEtNi4zLDEuOQoJYy0yLjYsMC42LTQuNCwxLjQtNS4xLDEuM2MwLjItMC4zLDIuMi0xLjIsMy41LTIuOXMxLTMuOSwyLjMtNS40QzQ4LjcsMzYuMSw0NS42LDM5LjksNDQuOSw0MC44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC42LDUxLjhsLTAuOC0wLjRjMy40LTMuOCw4LjQtNS44LDEzLjUtNS42YzguNSwwLjUsNy45LDIuNSwxMi41LDIuMWMwLjUsMC0wLjQsMC42LTAuNCwwLjYKCWMtMy4zLDEtNi44LDEtMTAtMC4yQzMzLjksNDYuNSwzMC4zLDQ1LjQsMjQuNiw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zOCw1MS44bDAuOC0wLjRjLTMuNC0zLjgtOC4zLTUuOC0xMy40LTUuNmMtOC41LDAuNS03LjksMi41LTEyLjUsMi4xYy0wLjUsMCwwLjQsMC42LDAuNCwwLjYKCWMzLjMsMSw2LjgsMSwxMC0wLjJDMjguOCw0Ni41LDMyLjMsNDUuNCwzOCw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05OC4zLDI1LjVjMCw4LjEtNC40LDEyLjEtMTMuNCwxMi4xcy0xMy40LTMuOS0xMy40LTEyLjF2LTE4aDl2MTZjMCwzLDAsNi44LDQuNCw2LjhzNC4zLTMuOCw0LjMtNi44di0xNmg5LjEKCVYyNS41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTAzLjcsNy40IDExMyw3LjQgMTIxLjYsMjMuMSAxMjEuNiwyMy4xIDEyMS42LDcuNCAxMzAuMiw3LjQgMTMwLjIsMzYuOCAxMjEuNCwzNi44IDExMi40LDIwLjggCgkxMTIuMywyMC44IDExMi4zLDM2LjggMTAzLjcsMzYuOCAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMzUuOCw3LjQgMTQ0LjgsNy40IDE0NC44LDE3LjYgMTUzLjMsMTcuNiAxNTMuMyw3LjQgMTYyLjMsNy40IDE2Mi4zLDM2LjggMTUzLjMsMzYuOCAxNTMuMywyNS4yIAoJMTQ0LjgsMjUuMiAxNDQuOCwzNi44IDEzNS44LDM2LjggIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODUuNSwxOC40Yy0wLjItMi40LTIuMy00LjMtNC43LTQuM2MtNC4yLDAtNS42LDQuMS01LjYsOC4xczEuNCw4LjEsNS42LDguMWMzLDAsNC4yLTIuMSw0LjgtNC45aDguOQoJYzAsNS45LTQuOCwxMi4yLTEzLjQsMTIuMmMtOS41LDAtMTQuOS02LjctMTQuOS0xNS40YzAtOS4zLDUuOC0xNS40LDE0LjktMTUuNGM4LjEsMCwxMi41LDQuMywxMy4zLDExLjZMMTg1LjUsMTguNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA3LjMsMTQuNGg0LjJjMy41LDAsNC41LDEuMSw0LjUsMi45YzAsMi42LTIuMywyLjktNCwyLjloLTQuN1YxNC40eiBNMTk4LjIsMzYuOGg5LjFWMjYuNmg0LjgKCWMzLjYsMCwzLjgsMi45LDQuMSw1LjdjMC4xLDEuNSwwLjMsMywwLjcsNC41aDljLTAuOC0xLjQtMC45LTQuOS0xLTYuM2MtMC4zLTMuNy0xLjktNi40LTQuMy03LjNjMy0xLjEsNC40LTQuMyw0LjQtNy40CgljMC01LjYtNC40LTguNC05LjYtOC40aC0xNy4yVjM2LjgiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI3NC41LDQzLjYgNzEuNSw0My42IDcxLjUsNDEuNyA3OS42LDQxLjcgNzkuNiw0My42IDc2LjYsNDMuNiA3Ni42LDUxLjYgNzQuNSw1MS42ICIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNODAuMyw0MS43aDJ2My43bDAsMGMwLjQtMC43LDEuMi0xLjIsMi4xLTEuMmMyLjEsMCwyLjYsMS4yLDIuNiwyLjl2NC40aC0ydi00YzAtMS4yLTAuMy0xLjgtMS4zLTEuOAoJcy0xLjUsMC42LTEuNSwydjMuN2gtMkw4MC4zLDQxLjciLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTg5LjcsNDguNWMwLjEsMS4yLDAuNywxLjgsMS44LDEuOGMwLjYsMCwxLjItMC4zLDEuNS0wLjloMS43Yy0wLjQsMS41LTEuOCwyLjUtMy4zLDIuNAoJYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMCwwLDAsMCwwLDBoMC4zYzIuNCwwLDMuNiwyLDMuNSw0LjJIODkuN3ogTTkyLjksNDcuMwoJYy0wLjItMS0wLjYtMS41LTEuNi0xLjVjLTAuOCwwLTEuNSwwLjYtMS42LDEuNHYwLjFIOTIuOSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTA3LjYsNDcuOWMwLDIuNy0xLjYsNC00LjIsNHMtNC4yLTEuMy00LjItNHYtNi4xaDIuMnY2LjFjMCwxLjEsMC4zLDIuMSwyLDIuMWMxLjUsMCwyLTAuNywyLTIuMXYtNi4xaDIuMgoJVjQ3LjkiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMDksNDEuNyAxMTEuMiw0MS43IDExNS4zLDQ4LjMgMTE1LjMsNDguMyAxMTUuMyw0MS43IDExNy40LDQxLjcgMTE3LjQsNTEuNiAxMTUuMiw1MS42IDExMS4xLDQ1IAoJMTExLjEsNDUgMTExLjEsNTEuNiAxMDksNTEuNiAiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUsMC40LDEuNSwxLjRzLTAuNSwxLjQtMS41LDEuNGgtMi40TDEyNC4yLDQzLjR6IE0xMjIuMSw1MS42aDIuMnYtMy44aDIuMgoJYzEuMSwwLDEuNSwwLjUsMS42LDEuNWMwLDAuOCwwLjEsMS42LDAuNCwyLjRoMi4yYy0wLjMtMC43LTAuNC0xLjUtMC40LTIuM2MtMC4xLTEtMC40LTItMS40LTIuM2wwLDBjMS0wLjQsMS43LTEuNCwxLjYtMi41CgljMC0xLjUtMS4yLTIuNy0yLjctMi43YzAsMCwwLDAsMCwwaC01LjVMMTIyLjEsNTEuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMzLjIsNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVoMC4xYzAuOSwwLDEuNCwwLjUsMS42LDEuNUgxMzMuMnogTTEzOC4zLDQ4LjVjMC4xLTIuMi0xLTQuMi0zLjUtNC4yCgljLTEuOS0wLjEtMy41LDEuNS0zLjYsMy40YzAsMCwwLDAuMSwwLDAuMVY0OGMtMC4yLDEuOSwxLjIsMy41LDMuMSwzLjdjMCwwLDAuMSwwLDAuMSwwaDAuNGMxLjUsMC4xLDIuOS0wLjksMy4zLTIuNGgtMS43CgljLTAuMywwLjYtMC45LDEtMS41LDAuOWMtMS4xLDAtMS43LTAuNi0xLjgtMS44TDEzOC4zLDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEzOS42LDQ1LjhoLTEuMnYtMS4zaDEuMlY0NGMtMC4xLTEuMSwwLjgtMi4xLDEuOS0yLjJjMCwwLDAuMSwwLDAuMSwwaDAuNGMwLjMsMCwwLjcsMCwxLDAuMXYxLjVoLTAuNwoJYy0wLjUsMC0wLjcsMC4yLTAuNywwLjh2MC40aDEuNHYxLjNoLTEuNHY1LjhoLTJWNDUuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xbDAsMGMtMC41LDAuNy0xLjMsMS4yLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOXYtNC40aDJ2NGMwLDEuMiwwLjQsMS44LDEuMywxLjgKCWMxLjEsMCwxLjUtMC42LDEuNS0ydi0zLjhoMnY3LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1NC43LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMwLjUtMiwxLjYtMmMxLjMsMCwxLjcsMSwxLjcsMi4yYzAuMiwwLjktMC41LDEuOC0xLjQsMmMwLDAtMC4xLDAtMC4xLDAKCUMxNTQuOCw1MCwxNTQuOCw1MCwxNTQuNyw0OS45IE0xNTguMyw0NC41aC0xLjl2MWwwLDBjLTAuNC0wLjgtMS4yLTEuMi0yLjEtMS4xYy0xLjgsMC4xLTMuMiwxLjUtMy4xLDMuM2MwLDAuMSwwLDAuMSwwLDAuMgoJYzAsMS44LDAuOSwzLjYsMywzLjZjMC44LDAsMS42LTAuNCwyLjEtMS4xbDAsMHYwLjljMCwxLTAuNSwxLjgtMS42LDEuOGMtMC43LDAuMS0xLjMtMC4zLTEuNS0xaC0xLjljMC4xLDEuNiwxLjcsMi4zLDMuMSwyLjMKCWMzLjMsMCwzLjctMiwzLjctMy4yTDE1OC4zLDQ0LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2MS4yLDQ3LjNjMC0wLjgsMC43LTEuNSwxLjUtMS41aDAuMWMxLDAsMS40LDAuNSwxLjYsMS41SDE2MS4yeiBNMTY2LjMsNDguNWMwLjEtMi4yLTEtNC4yLTMuNS00LjIKCWMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjUsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTY2LjMsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY4LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTY4Ljl6IE0xNzQsNDguNQoJYzAuMS0yLjItMS00LjItMy41LTQuMmMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40CgljMS41LDAuMSwyLjktMC45LDMuMy0yLjRoLTEuN2MtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTc0LDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE4Myw0NC4yTDE4Myw0NC4ybDEuMiwzLjZoLTIuNkwxODMsNDQuMnogTTE3OC4yLDUxLjZoMi4ybDAuOC0yLjJoMy43bDAuNywyLjJoMi4zbC0zLjctOS44SDE4MkwxNzguMiw1MS42eiIKCS8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTEuNSw0OS45Yy0xLjIsMC0xLjYtMS4xLTEuNi0yLjFzMC41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmMwLjEsMS0wLjUsMS44LTEuNSwyCglDMTkxLjYsNTAsMTkxLjUsNTAsMTkxLjUsNDkuOSBNMTk1LDQ0LjVoLTEuOXYxbDAsMGMtMC40LTAuOC0xLjItMS4yLTIuMS0xLjFjLTEuOCwwLjEtMy4yLDEuNS0zLjEsMy4zYzAsMC4xLDAsMC4xLDAsMC4yCgljMCwxLjgsMC45LDMuNiwzLjEsMy42YzAuOCwwLDEuNi0wLjQsMi4xLTEuMWwwLDB2MC45YzAsMS0wLjUsMS44LTEuNiwxLjhjLTAuNywwLjEtMS4zLTAuMy0xLjUtMWgtMS45YzAuMSwxLjYsMS43LDIuMywzLjEsMi4zCgljMy4zLDAsMy43LTIsMy43LTMuMkwxOTUsNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTk3LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTk3Ljl6IE0yMDMuMSw0OC41CgljMC4xLTIuMi0xLTQuMi0zLjUtNC4yYy0yLDAtMy42LDEuNS0zLjYsMy41VjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMjAzLjEsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjAzLjksNDQuNWgxLjl2MWgwLjFjMC41LTAuNywxLjMtMS4yLDIuMi0xLjJjMi4xLDAsMi42LDEuMiwyLjYsMi45djQuNGgtMnYtNGMwLTEuMi0wLjMtMS44LTEuMy0xLjgKCXMtMS41LDAuNi0xLjUsMnYzLjdoLTJWNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjYsNDdjLTAuMS0wLjctMC43LTEuMi0xLjQtMS4ybDAsMGMtMS4zLDAtMS43LDEuMy0xLjcsMi4zczAuNCwyLjIsMS42LDIuMmMwLjgsMCwxLjUtMC42LDEuNi0xLjRoMS45CgljLTAuMSwxLjctMS41LDMtMy4yLDIuOWMtMC4xLDAtMC4xLDAtMC4yLDBsMCwwYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC4zYy0wLjItMS45LDEuMS0zLjYsMy0zLjhjMC4xLDAsMC4xLDAsMC4yLDBoMC41CgljMS43LTAuMiwzLjIsMSwzLjQsMi43TDIxNi42LDQ3Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjMsNTIuNWMtMC4zLDEuMS0xLjQsMS44LTIuNSwxLjZjLTAuNCwwLTAuOCwwLTEuMi0wLjF2LTEuNmMwLjQsMCwwLjgsMC4xLDEuMSwwLjFjMC41LTAuMSwwLjgtMC42LDAuOC0xLjEKCWMwLTAuMSwwLTAuMi0wLjEtMC4zbC0yLjUtNi43aDIuMWwxLjYsNC45bDAsMGwxLjYtNC45aDJMMjIzLDUyLjUiLz4KPC9zdmc+Cg==");
}
+:root {
+--unhcr-logoblue: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjUuOSIgaGVpZ2h0PSI1NC4zIiB2aWV3Qm94PSIwIDAgMjI1LjkgNTQuMyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwMDcyYmM7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMzLDM2LjdjLjYsMCwuNi0uNC42LTFWMzIuNGMwLS43LS4xLS45LjMtLjksMS40LDAsMS43LS4xLDEuNy0xLjNWMTcuOWMwLTMuMy0yLjQtMi44LTMtNC0xLTEuNiwxLjgtMS42LjgtNS4yYTIsMiwwLDAsMC0yLjEtMS4zLDIsMiwwLDAsMC0yLjEsMS4zYy0xLDMuNiwxLjcsMy42LjgsNS4yLS43LDEuMi0zLC43LTMsNFYzMC4yYzAsMS4yLjQsMS4zLDEuNywxLjMuNCwwLC4zLjIuMy45djMuM2MwLC43LS4xLDEsLjYsMUgzMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyLjMsMTAuMWMtMS4yLDEuMy0zLjEsNC4zLTEuOSw2LjgsMi41LDEsMi4zLTgsNS41LTcuOSwxLjYsMS40LS41LDUuNy0xLjEsNy41LS44LDIuMy0xLjQsNy4xLTIuOSw5LjUtMS4yLDItLjMsOC4xLS43LDEwLjItMSwxLTMuOS4zLTUuMS4xYTgxLjc2LDgxLjc2LDAsMCwwLS43LTguMmMwLS44LS45LTEyLjctLjItMTQuMUMxNi42LDExLDI0LDUuMywyNSw0LjJTMjksMCwzMC4zLDBjLjkuNi40LDIsLjIsMi41LTEuMiwzLTYuNSw2LTguMiw3LjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjgtMi42LDEtMi40LTgtNS41LTcuOS0xLjUsMS40LjUsNS43LDEuMSw3LjUuOCwyLjMsMS40LDcuMSwyLjksOS41LDEuMiwyLC4zLDguMS43LDEwLjIsMS4xLDEsMy45LjMsNS4xLjFhNzUuNTgsNzUuNTgsMCwwLDEsLjctOC4yYy4xLS44LjktMTIuNy4yLTE0LjEtMS40LTMtOC44LTguNy05LjgtOS44UzMzLjYsMCwzMi40LDBjLS45LjYtLjMsMi0uMiwyLjUsMS4zLDMsNi41LDYsOC4yLDcuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExLjUsNi4xYy0uNy42LTIuMSwxLjEtMy4yLDIuNC0uNC0uNy42LTIuNSwxLjgtMy42YTE3LjY4LDE3LjY4LDAsMCwxLDMuMi0yLjFjLjQuOS0xLDIuMy0xLjgsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOS40LDExYy0xLjEsMS0yLjMsMS41LTMuOSwzLjRhMTIuMjIsMTIuMjIsMCwwLDEtLjItNS43Yy42LTEuOCwxLjUtMy44LDMtNC40YTE1LjY5LDE1LjY5LDAsMCwwLS45LDQuM2MtLjcsMi42LTEsMi43LS45LDMsLjIsMCwxLTEuNCwyLjEtMi40QzkuOCw4LDExLjQsNy43LDEyLjQsNi45YTE3LjMsMTcuMywwLDAsMS0zLDQuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMuOSwyMS44YTE0LjMxLDE0LjMxLDAsMCwxLTEuOC03Yy4xLTEuNi45LTUuMywyLTUuOS0uMywzLjQuNiwzLjcuMiw2LjQsMCwuMS0uNCwzLS40LDMuMi41LS4xLDAtMi42LDUuNC02LjQtMS4yLDItLjYsMi42LTIuNyw1LjNhMTAuNzQsMTAuNzQsMCwwLDAtMi43LDQuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYuMSwyNC4zYTYuNjMsNi42MywwLDAsMC0xLjIsMy4yQzIuMiwyNi0uOSwxOS44LjIsMTYuN2MuNywyLjMsMS43LDIuOSwyLjQsNC44LDEuMiwyLjksMSwzLjgsMS44LDQuNWE5LDksMCwwLDEsLjktNC42LDMyLjA3LDMyLjA3LDAsMCwxLDEuOS0zLjFjLjUsMi4xLjEsMy44LTEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOC41LDI5LjZhNDYsNDYsMCwwLDEtLjYsNS4yQzMuMywzMy4zLjgsMjgsLjgsMjUuNGMxLjQsMy4yLDMuNSwzLjIsNi4yLDcuNy4yLTEuNy0uNS0uNC0uNi0zLjcuMS0zLjQuOC0zLjUuOS01LjYuOS45LDEuMiw0LjcsMS4yLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyLjMsMzYuNGMuNCwxLjguNSwzLjguOCw1LjMtMi43LTEtMy4zLS4yLTYuNS0yLjItMS40LS44LTQtNC4xLTMuOS02LjQsMy4xLDMuNSwzLjcsMy4xLDUuMiw0LjQsMS40LDEuMSwyLjUsMi44LDMuNiwyLjYuMS0uOS0yLjMtMy0yLTguOGExNC4xNSwxNC4xNSwwLDAsMSwyLjgsNS4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcuNiw0MC44Yy44LDEuMi42LDEuNywyLjcsNC4xQTI1LjU0LDI1LjU0LDAsMCwxLDE0LjgsNDZjLTEuMywwLTYtMS4yLTcuNi00LjQsMi43LDEuNCwyLjcsMS4xLDYuMywxLjksMi42LjYsNC40LDEuNCw1LjEsMS4zLS4xLS4zLTIuMS0xLjItMy41LTIuOXMtMS0zLjktMi4zLTUuNGMuOS0uNCw0LjEsMy40LDQuOCw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MSw2LjFjLjYuNiwyLjIsMS4xLDMuMSwyLjQuNC0uNy0uNi0yLjUtMS44LTMuNmExNC43NywxNC43NywwLDAsMC0zLjItMi4xYy0uNC45LDEsMi4zLDEuOSwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01My4xLDExYzEuMSwxLDIuMywxLjUsMy45LDMuNGExMi4yMiwxMi4yMiwwLDAsMCwuMi01LjdjLS41LTEuOC0xLjUtMy44LTMtNC40YTE1LjY5LDE1LjY5LDAsMCwxLC45LDQuM2MuNywyLjYsMSwyLjcuOSwzLS4yLDAtMS0xLjQtMi4xLTIuNEM1Mi43LDgsNTEuMiw3LjcsNTAuMSw2LjlhMTcuMywxNy4zLDAsMCwwLDMsNC4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTguNSwyMS44YTE0LDE0LDAsMCwwLDEuOC03Yy0uMS0xLjYtLjktNS4zLTItNS45LjMsMy40LS42LDMuNy0uMiw2LjQsMCwuMS4zLDMsLjMsMy4yLS40LS4xLDAtMi42LTUuMy02LjQsMS4xLDIsLjYsMi42LDIuNyw1LjNhOS4yOCw5LjI4LDAsMCwxLDIuNyw0LjQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ni40LDI0LjNhOS41OCw5LjU4LDAsMCwxLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44LS43LDIuMy0xLjcsMi45LTIuMyw0LjgtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjVhMTEuNzksMTEuNzksMCwwLDAtLjktNC42LDE5LjgyLDE5LjgyLDAsMCwwLTEuOS0zLjEsNy41MSw3LjUxLDAsMCwwLDEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQsMjkuNmEzMC45MiwzMC45MiwwLDAsMCwuNyw1LjJjNC42LTEuNSw3LjEtNi44LDcuMS05LjQtMS41LDMuMi0zLjUsMy4yLTYuMiw3LjctLjItMS43LjUtLjQuNS0zLjdzLS44LTMuNS0uOS01LjZjLS45LjktMS4yLDQuNy0xLjIsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMSwzNi40Yy0uNCwxLjgtLjUsMy44LS43LDUuMywyLjYtMSwzLjMtLjIsNi40LTIuMiwxLjQtLjgsNC4xLTQuMSwzLjktNi40LTMuMSwzLjUtMy43LDMuMS01LjIsNC40LTEuNCwxLjEtMi42LDIuOC0zLjYsMi42LS4xLS45LDIuMy0zLDItOC44YTE1Ljg0LDE1Ljg0LDAsMCwwLTIuOCw1LjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NC45LDQwLjhhMTYuMTksMTYuMTksMCwwLDEtMi43LDQuMUEyNi44MSwyNi44MSwwLDAsMCw0Ny43LDQ2YzEuMywwLDYtMS4yLDcuNS00LjQtMi43LDEuNC0yLjcsMS4xLTYuMywxLjktMi42LjYtNC40LDEuNC01LjEsMS4zLjItLjMsMi4yLTEuMiwzLjUtMi45czEtMy45LDIuMy01LjRjLS45LS40LTQsMy40LTQuNyw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNC42LDUxLjhsLS44LS40YTE3LjIsMTcuMiwwLDAsMSwxMy41LTUuNmM4LjUuNSw3LjksMi41LDEyLjUsMi4xLjUsMC0uNC42LS40LjZhMTUuNTYsMTUuNTYsMCwwLDEtMTAtLjJjLTUuNS0xLjgtOS4xLTIuOS0xNC44LDMuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4LDUxLjhsLjgtLjRhMTcsMTcsMCwwLDAtMTMuNC01LjZjLTguNS41LTcuOSwyLjUtMTIuNSwyLjEtLjUsMCwuNC42LjQuNmExNS41NiwxNS41NiwwLDAsMCwxMC0uMmM1LjUtMS44LDktMi45LDE0LjcsMy41Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTguMywyNS41YzAsOC4xLTQuNCwxMi4xLTEzLjQsMTIuMVM3MS41LDMzLjcsNzEuNSwyNS41VjcuNWg5djE2YzAsMywwLDYuOCw0LjQsNi44czQuMy0zLjgsNC4zLTYuOFY3LjVoOS4xdjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwMy43IDcuNCAxMTMgNy40IDEyMS42IDIzLjEgMTIxLjYgMjMuMSAxMjEuNiA3LjQgMTMwLjIgNy40IDEzMC4yIDM2LjggMTIxLjQgMzYuOCAxMTIuNCAyMC44IDExMi4zIDIwLjggMTEyLjMgMzYuOCAxMDMuNyAzNi44IDEwMy43IDcuNCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIxMzUuOCA3LjQgMTQ0LjggNy40IDE0NC44IDE3LjYgMTUzLjMgMTcuNiAxNTMuMyA3LjQgMTYyLjMgNy40IDE2Mi4zIDM2LjggMTUzLjMgMzYuOCAxNTMuMyAyNS4yIDE0NC44IDI1LjIgMTQ0LjggMzYuOCAxMzUuOCAzNi44IDEzNS44IDcuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE4NS41LDE4LjRhNC42OSw0LjY5LDAsMCwwLTQuNy00LjNjLTQuMiwwLTUuNiw0LjEtNS42LDguMXMxLjQsOC4xLDUuNiw4LjFjMywwLDQuMi0yLjEsNC44LTQuOWg4LjljMCw1LjktNC44LDEyLjItMTMuNCwxMi4yLTkuNSwwLTE0LjktNi43LTE0LjktMTUuNCwwLTkuMyw1LjgtMTUuNCwxNC45LTE1LjQsOC4xLDAsMTIuNSw0LjMsMTMuMywxMS42aC04LjkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDcuMywxNC40aDQuMmMzLjUsMCw0LjUsMS4xLDQuNSwyLjksMCwyLjYtMi4zLDIuOS00LDIuOWgtNC43Wm0tOS4xLDIyLjRoOS4xVjI2LjZoNC44YzMuNiwwLDMuOCwyLjksNC4xLDUuN2EyMy4zOCwyMy4zOCwwLDAsMCwuNyw0LjVoOWMtLjgtMS40LS45LTQuOS0xLTYuMy0uMy0zLjctMS45LTYuNC00LjMtNy4zLDMtMS4xLDQuNC00LjMsNC40LTcuNCwwLTUuNi00LjQtOC40LTkuNi04LjRIMTk4LjJWMzYuOCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI3NC41IDQzLjYgNzEuNSA0My42IDcxLjUgNDEuNyA3OS42IDQxLjcgNzkuNiA0My42IDc2LjYgNDMuNiA3Ni42IDUxLjYgNzQuNSA1MS42IDc0LjUgNDMuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTgwLjMsNDEuN2gydjMuN2gwYTIuNDQsMi40NCwwLDAsMSwyLjEtMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRIODV2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMmwuMS05LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04OS43LDQ4LjVxLjE1LDEuOCwxLjgsMS44YTEuNjUsMS42NSwwLDAsMCwxLjUtLjloMS43YTMuMjIsMy4yMiwwLDAsMS0zLjMsMi40LDMuNDYsMy40NiwwLDAsMS0zLjYtMy4zdi0uNGEzLjU5LDMuNTksMCwwLDEsMy40LTMuOGguM2MyLjQsMCwzLjYsMiwzLjUsNC4yWm0zLjItMS4yYy0uMi0xLS42LTEuNS0xLjYtMS41YTEuNTUsMS41NSwwLDAsMC0xLjYsMS40di4xaDMuMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNy42LDQ3LjljMCwyLjctMS42LDQtNC4yLDRzLTQuMi0xLjMtNC4yLTRWNDEuOGgyLjJ2Ni4xYzAsMS4xLjMsMi4xLDIsMi4xLDEuNSwwLDItLjcsMi0yLjFWNDEuOGgyLjJ2Ni4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwOSA0MS43IDExMS4yIDQxLjcgMTE1LjMgNDguMyAxMTUuMyA0OC4zIDExNS4zIDQxLjcgMTE3LjQgNDEuNyAxMTcuNCA1MS42IDExNS4yIDUxLjYgMTExLjEgNDUgMTExLjEgNDUgMTExLjEgNTEuNiAxMDkgNTEuNiAxMDkgNDEuNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUuNCwxLjUsMS40cy0uNSwxLjQtMS41LDEuNGgtMi40Wm0tMi4xLDguMmgyLjJWNDcuOGgyLjJjMS4xLDAsMS41LjUsMS42LDEuNWE2LjcyLDYuNzIsMCwwLDAsLjQsMi40aDIuMmE1Ljg3LDUuODcsMCwwLDEtLjQtMi4zYy0uMS0xLS40LTItMS40LTIuM2gwYTIuNSwyLjUsMCwwLDAsMS42LTIuNSwyLjY5LDIuNjksMCwwLDAtMi43LTIuN2gtNS41bC0uMiw5LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzMuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYy45LDAsMS40LjUsMS42LDEuNVptNS4xLDEuMmMuMS0yLjItMS00LjItMy41LTQuMmEzLjUsMy41LDAsMCwwLTMuNiwzLjVWNDhhMy40LDMuNCwwLDAsMCwzLjIsMy43aC40YTMuMjIsMy4yMiwwLDAsMCwzLjMtMi40aC0xLjdhMS40OSwxLjQ5LDAsMCwxLTEuNS45cS0xLjY1LDAtMS44LTEuOGw1LjIuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzOS42LDQ1LjhoLTEuMlY0NC41aDEuMlY0NGEyLjA1LDIuMDUsMCwwLDEsMi0yLjJoLjRhMy4wOCwzLjA4LDAsMCwxLDEsLjF2MS41aC0uN2MtLjUsMC0uNy4yLS43Ljh2LjRIMTQzdjEuM2gtMS40djUuOGgtMlY0NS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xaDBhMi43NSwyLjc1LDAsMCwxLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOVY0NC41aDJ2NGMwLDEuMi40LDEuOCwxLjMsMS44LDEuMSwwLDEuNS0uNiwxLjUtMlY0NC41aDJ2Ny4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjcsNDkuOWMtMS4yLDAtMS42LTEuMS0xLjYtMi4xcy41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmExLjczLDEuNzMsMCwwLDEtMS41LDJjLS4xLDAtLjEsMC0uMi0uMW0zLjYtNS40aC0xLjl2MWgwYTIsMiwwLDAsMC0yLjEtMS4xLDMuMjEsMy4yMSwwLDAsMC0zLjEsMy41YzAsMS44LjksMy42LDMsMy42YTIuMzYsMi4zNiwwLDAsMCwyLjEtMS4xaDB2LjljMCwxLS41LDEuOC0xLjYsMS44YTEuMzMsMS4zMywwLDAsMS0xLjUtMWgtMS45Yy4xLDEuNiwxLjcsMi4zLDMuMSwyLjMsMy4zLDAsMy43LTIsMy43LTMuMmwuMi02LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjEuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYzEsMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4yMiwzLjIyLDAsMCwwLDMuMy0yLjRoLTEuN2ExLjQ5LDEuNDksMCwwLDEtMS41LjlxLTEuNjUsMC0xLjgtMS44bDUuMi4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4xNSwzLjE1LDAsMCwwLDMuMy0yLjRoLTEuN2ExLjU0LDEuNTQsMCwwLDEtMS42LjlxLTEuNjUsMC0xLjgtMS44bDUuMy4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgzLDQ0LjJoMGwxLjIsMy42aC0yLjZabS00LjgsNy40aDIuMmwuOC0yLjJoMy43bC43LDIuMmgyLjNsLTMuNy05LjhIMTgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5MS41LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMuNS0yLDEuNi0yYzEuMywwLDEuNywxLDEuNywyLjJhMS44LDEuOCwwLDAsMS0xLjUsMmMtLjEsMC0uMiwwLS4yLS4xbTMuNS01LjRoLTEuOXYxaDBhMi4wOSwyLjA5LDAsMCwwLTIuMS0xLjEsMy4yMSwzLjIxLDAsMCwwLTMuMSwzLjVjMCwxLjguOSwzLjYsMy4xLDMuNmEyLjM2LDIuMzYsMCwwLDAsMi4xLTEuMWgwdi45YzAsMS0uNSwxLjgtMS42LDEuOGExLjMzLDEuMzMsMCwwLDEtMS41LTFoLTEuOWMuMSwxLjYsMS43LDIuMywzLjEsMi4zLDMuMywwLDMuNy0yLDMuNy0zLjJsLjEtNi43Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk3LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjIsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNTYsMy41NiwwLDAsMC0zLjYsMy41VjQ4YTMuNCwzLjQsMCwwLDAsMy4yLDMuN2guNGEzLjIyLDMuMjIsMCwwLDAsMy4zLTIuNGgtMS43YTEuNTQsMS41NCwwLDAsMS0xLjYuOXEtMS42NSwwLTEuOC0xLjhsNS4zLjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDMuOSw0NC41aDEuOXYxaC4xYTIuNzUsMi43NSwwLDAsMSwyLjItMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRoLTJ2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMnYtNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNi42LDQ3YTEuMzIsMS4zMiwwLDAsMC0xLjQtMS4yaDBjLTEuMywwLTEuNywxLjMtMS43LDIuM3MuNCwyLjIsMS42LDIuMmExLjYyLDEuNjIsMCwwLDAsMS42LTEuNGgxLjlhMy4wOCwzLjA4LDAsMCwxLTMuNCwyLjloMGEzLjQ2LDMuNDYsMCwwLDEtMy42LTMuM3YtLjNhMy40MywzLjQzLDAsMCwxLDMuMi0zLjhoLjVhMy4xMiwzLjEyLDAsMCwxLDMuNCwyLjdsLTIuMS0uMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMyw1Mi41YTIuMjEsMi4yMSwwLDAsMS0yLjUsMS42LDQuODcsNC44NywwLDAsMS0xLjItLjFWNTIuNGMuNCwwLC44LjEsMS4xLjFhMS4wOCwxLjA4LDAsMCwwLC44LTEuMS4zNy4zNywwLDAsMC0uMS0uM2wtMi41LTYuN2gyLjFsMS42LDQuOWgwbDEuNi00LjloMkwyMjMsNTIuNSIvPjwvc3ZnPg==");
+--unhcr-logowhite: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyMjUuOSA1NC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjUuOSA1NC4zOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zMywzNi43YzAuNiwwLDAuNi0wLjQsMC42LTF2LTMuM2MwLTAuNy0wLjEtMC45LDAuMy0wLjljMS40LDAsMS43LTAuMSwxLjctMS4zVjE3LjljMC0zLjMtMi40LTIuOC0zLTQKCWMtMS0xLjYsMS44LTEuNiwwLjgtNS4yYy0wLjMtMC45LTEuMi0xLjQtMi4xLTEuM2MtMC45LTAuMS0xLjgsMC40LTIuMSwxLjNjLTEsMy42LDEuNywzLjYsMC44LDUuMmMtMC43LDEuMi0zLDAuNy0zLDR2MTIuMwoJYzAsMS4yLDAuNCwxLjMsMS43LDEuM2MwLjQsMCwwLjMsMC4yLDAuMywwLjl2My4zYzAsMC43LTAuMSwxLDAuNiwxSDMzIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMi4zLDEwLjFjLTEuMiwxLjMtMy4xLDQuMy0xLjksNi44YzIuNSwxLDIuMy04LDUuNS03LjljMS42LDEuNC0wLjUsNS43LTEuMSw3LjVjLTAuOCwyLjMtMS40LDcuMS0yLjksOS41CgljLTEuMiwyLTAuMyw4LjEtMC43LDEwLjJjLTEsMS0zLjksMC4zLTUuMSwwLjFjLTAuMS0yLjctMC4zLTUuNS0wLjctOC4yYzAtMC44LTAuOS0xMi43LTAuMi0xNC4xYzEuNC0zLDguOC04LjcsOS44LTkuOAoJUzI5LDAsMzAuMywwYzAuOSwwLjYsMC40LDIsMC4yLDIuNUMyOS4zLDUuNSwyNCw4LjUsMjIuMywxMC4xIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjhjLTIuNiwxLTIuNC04LTUuNS03LjljLTEuNSwxLjQsMC41LDUuNywxLjEsNy41YzAuOCwyLjMsMS40LDcuMSwyLjksOS41CgljMS4yLDIsMC4zLDguMSwwLjcsMTAuMmMxLjEsMSwzLjksMC4zLDUuMSwwLjFjMC4xLTIuNywwLjMtNS41LDAuNy04LjJjMC4xLTAuOCwwLjktMTIuNywwLjItMTQuMWMtMS40LTMtOC44LTguNy05LjgtOS44CglTMzMuNiwwLDMyLjQsMGMtMC45LDAuNi0wLjMsMi0wLjIsMi41QzMzLjUsNS41LDM4LjcsOC41LDQwLjQsMTAuMSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEuNSw2LjFjLTAuNywwLjYtMi4xLDEuMS0zLjIsMi40QzcuOSw3LjgsOC45LDYsMTAuMSw0LjljMS0wLjgsMi4xLTEuNSwzLjItMi4xQzEzLjcsMy43LDEyLjMsNS4xLDExLjUsNi4xIgoJLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkuNCwxMWMtMS4xLDEtMi4zLDEuNS0zLjksMy40QzUsMTIuNSw0LjksMTAuNiw1LjMsOC43YzAuNi0xLjgsMS41LTMuOCwzLTQuNEM3LjgsNS43LDcuNSw3LjEsNy40LDguNgoJYy0wLjcsMi42LTEsMi43LTAuOSwzYzAuMiwwLDEtMS40LDIuMS0yLjRjMS4yLTEuMiwyLjgtMS41LDMuOC0yLjNDMTEuNiw4LjQsMTAuNiw5LjgsOS40LDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjksMjEuOGMtMS4yLTIuMS0xLjgtNC42LTEuOC03YzAuMS0xLjYsMC45LTUuMywyLTUuOWMtMC4zLDMuNCwwLjYsMy43LDAuMiw2LjRjMCwwLjEtMC40LDMtMC40LDMuMgoJYzAuNS0wLjEsMC0yLjYsNS40LTYuNGMtMS4yLDItMC42LDIuNi0yLjcsNS4zQzUuNCwxOC42LDQuNCwyMC4xLDMuOSwyMS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02LjEsMjQuM2MtMC43LDAuOS0xLjEsMi0xLjIsMy4yQzIuMiwyNi0wLjksMTkuOCwwLjIsMTYuN2MwLjcsMi4zLDEuNywyLjksMi40LDQuOGMxLjIsMi45LDEsMy44LDEuOCw0LjUKCWMtMC4xLTEuNiwwLjItMy4yLDAuOS00LjZjMC42LTEuMSwxLjItMi4xLDEuOS0zLjFDNy43LDIwLjQsNy4zLDIyLjEsNi4xLDI0LjMiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTguNSwyOS42Yy0wLjEsMS43LTAuMywzLjUtMC42LDUuMmMtNC42LTEuNS03LjEtNi44LTcuMS05LjRjMS40LDMuMiwzLjUsMy4yLDYuMiw3LjdjMC4yLTEuNy0wLjUtMC40LTAuNi0zLjcKCWMwLjEtMy40LDAuOC0zLjUsMC45LTUuNkM4LjIsMjQuNyw4LjUsMjguNSw4LjUsMjkuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTIuMywzNi40YzAuNCwxLjgsMC41LDMuOCwwLjgsNS4zYy0yLjctMS0zLjMtMC4yLTYuNS0yLjJjLTEuNC0wLjgtNC00LjEtMy45LTYuNGMzLjEsMy41LDMuNywzLjEsNS4yLDQuNAoJYzEuNCwxLjEsMi41LDIuOCwzLjYsMi42YzAuMS0wLjktMi4zLTMtMi04LjhDMTAuOCwzMi44LDExLjcsMzQuNSwxMi4zLDM2LjQiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3LjYsNDAuOGMwLjgsMS4yLDAuNiwxLjcsMi43LDQuMWMtMS44LDAuNi0zLjYsMC45LTUuNSwxLjFjLTEuMywwLTYtMS4yLTcuNi00LjRjMi43LDEuNCwyLjcsMS4xLDYuMywxLjkKCWMyLjYsMC42LDQuNCwxLjQsNS4xLDEuM2MtMC4xLTAuMy0yLjEtMS4yLTMuNS0yLjlzLTEtMy45LTIuMy01LjRDMTMuNywzNi4xLDE2LjksMzkuOSwxNy42LDQwLjgiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxLDYuMWMwLjYsMC42LDIuMiwxLjEsMy4xLDIuNGMwLjQtMC43LTAuNi0yLjUtMS44LTMuNmMtMS0wLjgtMi0xLjUtMy4yLTIuMUM0OC43LDMuNyw1MC4xLDUuMSw1MSw2LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUzLjEsMTFjMS4xLDEsMi4zLDEuNSwzLjksMy40YzAuNS0xLjksMC42LTMuOCwwLjItNS43Yy0wLjUtMS44LTEuNS0zLjgtMy00LjRjMC41LDEuNCwwLjgsMi44LDAuOSw0LjMKCWMwLjcsMi42LDEsMi43LDAuOSwzYy0wLjIsMC0xLTEuNC0yLjEtMi40Yy0xLjItMS4yLTIuNy0xLjUtMy44LTIuM0M1MC45LDguNCw1MS45LDkuOCw1My4xLDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01OC41LDIxLjhjMS4yLTIuMSwxLjgtNC41LDEuOC03Yy0wLjEtMS42LTAuOS01LjMtMi01LjljMC4zLDMuNC0wLjYsMy43LTAuMiw2LjRjMCwwLjEsMC4zLDMsMC4zLDMuMgoJYy0wLjQtMC4xLDAtMi42LTUuMy02LjRjMS4xLDIsMC42LDIuNiwyLjcsNS4zQzU3LjEsMTguNiw1OCwyMC4xLDU4LjUsMjEuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTYuNCwyNC4zYzAuNiwxLDEsMi4xLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44Yy0wLjcsMi4zLTEuNywyLjktMi4zLDQuOGMtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjUKCWMwLTEuNi0wLjMtMy4xLTAuOS00LjZjLTAuNS0xLjEtMS4yLTIuMS0xLjktMy4xQzU0LjgsMjAuNCw1NS4yLDIyLjUsNTYuNCwyNC4zIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01NCwyOS42YzAuMSwxLjgsMC4zLDMuNSwwLjcsNS4yYzQuNi0xLjUsNy4xLTYuOCw3LjEtOS40Yy0xLjUsMy4yLTMuNSwzLjItNi4yLDcuN2MtMC4yLTEuNywwLjUtMC40LDAuNS0zLjcKCXMtMC44LTMuNS0wLjktNS42QzU0LjMsMjQuNyw1NCwyOC41LDU0LDI5LjYiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUwLjEsMzYuNGMtMC40LDEuOC0wLjUsMy44LTAuNyw1LjNjMi42LTEsMy4zLTAuMiw2LjQtMi4yYzEuNC0wLjgsNC4xLTQuMSwzLjktNi40Yy0zLjEsMy41LTMuNywzLjEtNS4yLDQuNAoJYy0xLjQsMS4xLTIuNiwyLjgtMy42LDIuNmMtMC4xLTAuOSwyLjMtMywyLTguOEM1MS43LDMyLjgsNTAuNywzNC41LDUwLjEsMzYuNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDQuOSw0MC44Yy0wLjcsMS41LTEuNiwyLjktMi43LDQuMWMxLjgsMC42LDMuNiwwLjksNS41LDEuMWMxLjMsMCw2LTEuMiw3LjUtNC40Yy0yLjcsMS40LTIuNywxLjEtNi4zLDEuOQoJYy0yLjYsMC42LTQuNCwxLjQtNS4xLDEuM2MwLjItMC4zLDIuMi0xLjIsMy41LTIuOXMxLTMuOSwyLjMtNS40QzQ4LjcsMzYuMSw0NS42LDM5LjksNDQuOSw0MC44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC42LDUxLjhsLTAuOC0wLjRjMy40LTMuOCw4LjQtNS44LDEzLjUtNS42YzguNSwwLjUsNy45LDIuNSwxMi41LDIuMWMwLjUsMC0wLjQsMC42LTAuNCwwLjYKCWMtMy4zLDEtNi44LDEtMTAtMC4yQzMzLjksNDYuNSwzMC4zLDQ1LjQsMjQuNiw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zOCw1MS44bDAuOC0wLjRjLTMuNC0zLjgtOC4zLTUuOC0xMy40LTUuNmMtOC41LDAuNS03LjksMi41LTEyLjUsMi4xYy0wLjUsMCwwLjQsMC42LDAuNCwwLjYKCWMzLjMsMSw2LjgsMSwxMC0wLjJDMjguOCw0Ni41LDMyLjMsNDUuNCwzOCw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05OC4zLDI1LjVjMCw4LjEtNC40LDEyLjEtMTMuNCwxMi4xcy0xMy40LTMuOS0xMy40LTEyLjF2LTE4aDl2MTZjMCwzLDAsNi44LDQuNCw2LjhzNC4zLTMuOCw0LjMtNi44di0xNmg5LjEKCVYyNS41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTAzLjcsNy40IDExMyw3LjQgMTIxLjYsMjMuMSAxMjEuNiwyMy4xIDEyMS42LDcuNCAxMzAuMiw3LjQgMTMwLjIsMzYuOCAxMjEuNCwzNi44IDExMi40LDIwLjggCgkxMTIuMywyMC44IDExMi4zLDM2LjggMTAzLjcsMzYuOCAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMzUuOCw3LjQgMTQ0LjgsNy40IDE0NC44LDE3LjYgMTUzLjMsMTcuNiAxNTMuMyw3LjQgMTYyLjMsNy40IDE2Mi4zLDM2LjggMTUzLjMsMzYuOCAxNTMuMywyNS4yIAoJMTQ0LjgsMjUuMiAxNDQuOCwzNi44IDEzNS44LDM2LjggIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODUuNSwxOC40Yy0wLjItMi40LTIuMy00LjMtNC43LTQuM2MtNC4yLDAtNS42LDQuMS01LjYsOC4xczEuNCw4LjEsNS42LDguMWMzLDAsNC4yLTIuMSw0LjgtNC45aDguOQoJYzAsNS45LTQuOCwxMi4yLTEzLjQsMTIuMmMtOS41LDAtMTQuOS02LjctMTQuOS0xNS40YzAtOS4zLDUuOC0xNS40LDE0LjktMTUuNGM4LjEsMCwxMi41LDQuMywxMy4zLDExLjZMMTg1LjUsMTguNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA3LjMsMTQuNGg0LjJjMy41LDAsNC41LDEuMSw0LjUsMi45YzAsMi42LTIuMywyLjktNCwyLjloLTQuN1YxNC40eiBNMTk4LjIsMzYuOGg5LjFWMjYuNmg0LjgKCWMzLjYsMCwzLjgsMi45LDQuMSw1LjdjMC4xLDEuNSwwLjMsMywwLjcsNC41aDljLTAuOC0xLjQtMC45LTQuOS0xLTYuM2MtMC4zLTMuNy0xLjktNi40LTQuMy03LjNjMy0xLjEsNC40LTQuMyw0LjQtNy40CgljMC01LjYtNC40LTguNC05LjYtOC40aC0xNy4yVjM2LjgiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI3NC41LDQzLjYgNzEuNSw0My42IDcxLjUsNDEuNyA3OS42LDQxLjcgNzkuNiw0My42IDc2LjYsNDMuNiA3Ni42LDUxLjYgNzQuNSw1MS42ICIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNODAuMyw0MS43aDJ2My43bDAsMGMwLjQtMC43LDEuMi0xLjIsMi4xLTEuMmMyLjEsMCwyLjYsMS4yLDIuNiwyLjl2NC40aC0ydi00YzAtMS4yLTAuMy0xLjgtMS4zLTEuOAoJcy0xLjUsMC42LTEuNSwydjMuN2gtMkw4MC4zLDQxLjciLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTg5LjcsNDguNWMwLjEsMS4yLDAuNywxLjgsMS44LDEuOGMwLjYsMCwxLjItMC4zLDEuNS0wLjloMS43Yy0wLjQsMS41LTEuOCwyLjUtMy4zLDIuNAoJYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMCwwLDAsMCwwLDBoMC4zYzIuNCwwLDMuNiwyLDMuNSw0LjJIODkuN3ogTTkyLjksNDcuMwoJYy0wLjItMS0wLjYtMS41LTEuNi0xLjVjLTAuOCwwLTEuNSwwLjYtMS42LDEuNHYwLjFIOTIuOSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTA3LjYsNDcuOWMwLDIuNy0xLjYsNC00LjIsNHMtNC4yLTEuMy00LjItNHYtNi4xaDIuMnY2LjFjMCwxLjEsMC4zLDIuMSwyLDIuMWMxLjUsMCwyLTAuNywyLTIuMXYtNi4xaDIuMgoJVjQ3LjkiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMDksNDEuNyAxMTEuMiw0MS43IDExNS4zLDQ4LjMgMTE1LjMsNDguMyAxMTUuMyw0MS43IDExNy40LDQxLjcgMTE3LjQsNTEuNiAxMTUuMiw1MS42IDExMS4xLDQ1IAoJMTExLjEsNDUgMTExLjEsNTEuNiAxMDksNTEuNiAiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUsMC40LDEuNSwxLjRzLTAuNSwxLjQtMS41LDEuNGgtMi40TDEyNC4yLDQzLjR6IE0xMjIuMSw1MS42aDIuMnYtMy44aDIuMgoJYzEuMSwwLDEuNSwwLjUsMS42LDEuNWMwLDAuOCwwLjEsMS42LDAuNCwyLjRoMi4yYy0wLjMtMC43LTAuNC0xLjUtMC40LTIuM2MtMC4xLTEtMC40LTItMS40LTIuM2wwLDBjMS0wLjQsMS43LTEuNCwxLjYtMi41CgljMC0xLjUtMS4yLTIuNy0yLjctMi43YzAsMCwwLDAsMCwwaC01LjVMMTIyLjEsNTEuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMzLjIsNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVoMC4xYzAuOSwwLDEuNCwwLjUsMS42LDEuNUgxMzMuMnogTTEzOC4zLDQ4LjVjMC4xLTIuMi0xLTQuMi0zLjUtNC4yCgljLTEuOS0wLjEtMy41LDEuNS0zLjYsMy40YzAsMCwwLDAuMSwwLDAuMVY0OGMtMC4yLDEuOSwxLjIsMy41LDMuMSwzLjdjMCwwLDAuMSwwLDAuMSwwaDAuNGMxLjUsMC4xLDIuOS0wLjksMy4zLTIuNGgtMS43CgljLTAuMywwLjYtMC45LDEtMS41LDAuOWMtMS4xLDAtMS43LTAuNi0xLjgtMS44TDEzOC4zLDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEzOS42LDQ1LjhoLTEuMnYtMS4zaDEuMlY0NGMtMC4xLTEuMSwwLjgtMi4xLDEuOS0yLjJjMCwwLDAuMSwwLDAuMSwwaDAuNGMwLjMsMCwwLjcsMCwxLDAuMXYxLjVoLTAuNwoJYy0wLjUsMC0wLjcsMC4yLTAuNywwLjh2MC40aDEuNHYxLjNoLTEuNHY1LjhoLTJWNDUuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xbDAsMGMtMC41LDAuNy0xLjMsMS4yLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOXYtNC40aDJ2NGMwLDEuMiwwLjQsMS44LDEuMywxLjgKCWMxLjEsMCwxLjUtMC42LDEuNS0ydi0zLjhoMnY3LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1NC43LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMwLjUtMiwxLjYtMmMxLjMsMCwxLjcsMSwxLjcsMi4yYzAuMiwwLjktMC41LDEuOC0xLjQsMmMwLDAtMC4xLDAtMC4xLDAKCUMxNTQuOCw1MCwxNTQuOCw1MCwxNTQuNyw0OS45IE0xNTguMyw0NC41aC0xLjl2MWwwLDBjLTAuNC0wLjgtMS4yLTEuMi0yLjEtMS4xYy0xLjgsMC4xLTMuMiwxLjUtMy4xLDMuM2MwLDAuMSwwLDAuMSwwLDAuMgoJYzAsMS44LDAuOSwzLjYsMywzLjZjMC44LDAsMS42LTAuNCwyLjEtMS4xbDAsMHYwLjljMCwxLTAuNSwxLjgtMS42LDEuOGMtMC43LDAuMS0xLjMtMC4zLTEuNS0xaC0xLjljMC4xLDEuNiwxLjcsMi4zLDMuMSwyLjMKCWMzLjMsMCwzLjctMiwzLjctMy4yTDE1OC4zLDQ0LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2MS4yLDQ3LjNjMC0wLjgsMC43LTEuNSwxLjUtMS41aDAuMWMxLDAsMS40LDAuNSwxLjYsMS41SDE2MS4yeiBNMTY2LjMsNDguNWMwLjEtMi4yLTEtNC4yLTMuNS00LjIKCWMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjUsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTY2LjMsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY4LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTY4Ljl6IE0xNzQsNDguNQoJYzAuMS0yLjItMS00LjItMy41LTQuMmMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40CgljMS41LDAuMSwyLjktMC45LDMuMy0yLjRoLTEuN2MtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTc0LDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE4Myw0NC4yTDE4Myw0NC4ybDEuMiwzLjZoLTIuNkwxODMsNDQuMnogTTE3OC4yLDUxLjZoMi4ybDAuOC0yLjJoMy43bDAuNywyLjJoMi4zbC0zLjctOS44SDE4MkwxNzguMiw1MS42eiIKCS8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTEuNSw0OS45Yy0xLjIsMC0xLjYtMS4xLTEuNi0yLjFzMC41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmMwLjEsMS0wLjUsMS44LTEuNSwyCglDMTkxLjYsNTAsMTkxLjUsNTAsMTkxLjUsNDkuOSBNMTk1LDQ0LjVoLTEuOXYxbDAsMGMtMC40LTAuOC0xLjItMS4yLTIuMS0xLjFjLTEuOCwwLjEtMy4yLDEuNS0zLjEsMy4zYzAsMC4xLDAsMC4xLDAsMC4yCgljMCwxLjgsMC45LDMuNiwzLjEsMy42YzAuOCwwLDEuNi0wLjQsMi4xLTEuMWwwLDB2MC45YzAsMS0wLjUsMS44LTEuNiwxLjhjLTAuNywwLjEtMS4zLTAuMy0xLjUtMWgtMS45YzAuMSwxLjYsMS43LDIuMywzLjEsMi4zCgljMy4zLDAsMy43LTIsMy43LTMuMkwxOTUsNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTk3LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTk3Ljl6IE0yMDMuMSw0OC41CgljMC4xLTIuMi0xLTQuMi0zLjUtNC4yYy0yLDAtMy42LDEuNS0zLjYsMy41VjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMjAzLjEsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjAzLjksNDQuNWgxLjl2MWgwLjFjMC41LTAuNywxLjMtMS4yLDIuMi0xLjJjMi4xLDAsMi42LDEuMiwyLjYsMi45djQuNGgtMnYtNGMwLTEuMi0wLjMtMS44LTEuMy0xLjgKCXMtMS41LDAuNi0xLjUsMnYzLjdoLTJWNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjYsNDdjLTAuMS0wLjctMC43LTEuMi0xLjQtMS4ybDAsMGMtMS4zLDAtMS43LDEuMy0xLjcsMi4zczAuNCwyLjIsMS42LDIuMmMwLjgsMCwxLjUtMC42LDEuNi0xLjRoMS45CgljLTAuMSwxLjctMS41LDMtMy4yLDIuOWMtMC4xLDAtMC4xLDAtMC4yLDBsMCwwYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC4zYy0wLjItMS45LDEuMS0zLjYsMy0zLjhjMC4xLDAsMC4xLDAsMC4yLDBoMC41CgljMS43LTAuMiwzLjIsMSwzLjQsMi43TDIxNi42LDQ3Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjMsNTIuNWMtMC4zLDEuMS0xLjQsMS44LTIuNSwxLjZjLTAuNCwwLTAuOCwwLTEuMi0wLjF2LTEuNmMwLjQsMCwwLjgsMC4xLDEuMSwwLjFjMC41LTAuMSwwLjgtMC42LDAuOC0xLjEKCWMwLTAuMSwwLTAuMi0wLjEtMC4zbC0yLjUtNi43aDIuMWwxLjYsNC45bDAsMGwxLjYtNC45aDJMMjIzLDUyLjUiLz4KPC9zdmc+Cg==");
+}