Перший етап будь-якого аналізу даних – це створення набору даних, у якому міститься інформація для вивчення, у потрібному форматі. В R ця задача розподіляється на такі підзадачі:
Поточна та наступна за нею лекції містять опис базових типів даних, що використовуються в R, а саме вектори, фактори, матриці, масиви даних, таблиці даних і списки. Ця лекція присвячена типам даних вектори, фактори та матриці. Дані можна вводити або вручну, або з зовнішнього джерела. Таким джерелом можуть бути текстові файли, електронні таблиці, статистичні програми й системи управління базами даних.
Структури даних
R працює з різними структурами даних, включно з скалярами, векторами, матрицями, масивами даних, таблицями даних і списками. Вони відрізняються типами даних, способом створення, складністю пристрою, а також способом позначати і витягувати їхні окремі елементи. Ці структури даних схематично зображено на рис. 3.1.
Є кілька властивих тільки R термінів, які бентежать нових користувачів. В R об’єктом (object) називається все, що може бути представлено у вигляді змінних, констант, різних типів даних, функцій й діаграм. В об’єктів є вид (визначає, у якому вигляді об’єкт зберігається в пам’яті) і клас (який вказує загальних функцій типу print
, як із ним звертатися).
Таблиця даних (data frame) – це тип структури даних в R, аналогічний тому виду, у якому зберігаються дані у звичайних статистичних програмах (наприклад, в SAS, SPSS та STATA). Стовпці – це змінні, а рядки – це спостереження. В одній таблиці даних можуть міститися змінні різних типів (наприклад, числові й текстові). Таблиці даних – це основний тип структури даних.
Фактори – це номінальні або порядкові змінні. В R вони зберігаються й обробляються особливим чином.
Далі розглянемо всі типи структури даних послідовно, починаючи з векторів.
Вектори
Вектори (vector) – це одномірні масиви даних, які можуть містити числові, текстові або логічні значення. Для створення вектора застосовується функція об’єднання c()
. Нижче наведено приклади векторів кожного типу:
a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
Тут a
– числовий вектор, b
– текстовий вектор, c
– логічний вектор. Зверніть увагу на те, що всі елементи вектора повинні бути одного типу (числові, текстові або логічні). Не можна змішувати дані різних типів в одному векторі. Скаляри – це вектори, що складаються з одного елемента, наприклад, f <- 3
, g <- "US"
і h <- TRUE
. Вони використовуються для позначення констант.
Окремі елементи вектора можна викликати з допомогою числового вектора, що складається з номерів елементів і укладеного у квадратні дужки. Наприклад, a[c(2, 4)]
позначає другий і четвертий елементи вектора a
. Ось ще приклади:
A <- c(1, 2, 5, 3, 6, -2, 4)
A[3]
[1] 5
A[c(1, 3, 5)]
[1] 1 5 6
A[2:6]
[1] 2 5 3 6 -2
Знак двокрапки в останньому прикладі використаний для створення послідовності чисел. Наприклад, a <- c(2:6)
– це те ж саме, що a <- c(2, 3, 4, 5, 6)
.
Матриці
Матриця (matrix) – це двовимірний масив даних, у якому кожен елемент має однаковий тип (числовий, текстовий або логічний). Матриці створюють з допомогою функції matrix()
. Загальний формат такий:
mymatrix <- matrix(vector, nrow=число_рядків, ncol=число_стовпців,
Error: unexpected input in "mymatrix <- matrix(vector, nrow=\"
де vector
містить елементи матриці; nrow
і ncol
визначають число рядків і стовпців у матриці; dimnames
містить назви рядків і стовпців (їх вказувати не обов’язково), які зберігаються у вигляді текстових векторів; параметр byrow
визначає, як повинна заповнюватися матриця – за рядками (byrow=TRUE
) або за стовпцями (byrow=FALSE
). За замовчуванням матриця заповнюється за стовпцями. Наведений нижче програмний код ілюструє застосування функції matrix.
Y <- matrix(1:20, nrow=5, ncol=4)
Y
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
cells <- c(1,26,24,68)
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE,
dimnames=list(rnames, cnames))
mymatrix
C1 C2
R1 1 26
R2 24 68
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=FALSE,
dimnames=list(rnames, cnames))
mymatrix
C1 C2
R1 1 24
R2 26 68
Спочатку ви створюєте матрицю 5×4
. Потім ви робите матрицю 2×2
з назвами рядків і стовпців та заповнюєте її за рядками. Нарешті, ви створюєте матрицю 2×2
і заповнюєте її за стовпцями.
Ви можете позначати рядки, стовпці й елементи матриці з допомогою індексів і квадратних дужок. Наприклад, X[i,]
позначає i-й рядок матриці X
, X[, j]
– позначає її j-ий стовпець, а X[i, j]
відповідає елементу цієї матриці, розташованому на перетині цього рядка й цього стовпчика. У якості індексів i
та j
можна використовувати числові вектори, щоби позначити відразу кілька рядків або стовпців, як це показано нижче.
X <- matrix(1:10, nrow=2)
X
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
X[2,]
[1] 2 4 6 8 10
X[, 2]
[1] 3 4
X[1,4]
[1] 7
X[1, c(4,5)]
[1] 7 9
Спочатку створено матрицю 2×5
, що містить цифри від 1 до 10. За замовчуванням матриця заповнена цифрами за стовпцями. Потім обрано всі елементи в другому рядку, а далі – усі елементи в другому стовпці. Потім обрано елемент, який розташовується в першому рядку й у четвертому стовпці. Нарешті, обрано елементи першого рядка, які містяться в четвертому і п’ятому стовпчиках.
Матриці мають два виміри і, як і вектори, можуть складатися тільки з одного типу даних. Якщо є більше за два виміри, потрібно використовувати масиви даних. Дані різних типів можна зберігати в таблицях.
Масиви даних
Масиви даних (array) схожі з матрицями, але можуть мати понад два виміри. Масиви даних створюються з допомогою функції array()
за таким зразком:
myarray <- array(vector, dimensions, dimnames)
де vector
містить лише дані; dimensions
– це числовий вектор із зазначенням розмірності для кожного вимірювання; dimnames
– це необов’язковий список назв вимірювань. Нижче в якості прикладу представлений програмний код, з допомогою якого створено тривимірний (2×3×4
) масив чисел.
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))
z
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
Очевидно, що масиви даних – це просто розширені матриці. Вони можуть бути корисні у разі створення програм для реалізації нових статистичних методів. Як і в матрицях, усі елементи масиву даних повинні мати однаковий тип. Система позначення елементів тут така ж, як для матриць. У наведеному вище прикладі елемент z[1,2,3]
– це 15.
Таблиці даних
Таблиця даних (data frame) – це більш широко використовуваний у порівнянні з матрицею об’єкт, оскільки різні стовпці можуть містити різні типи даних (числовий, текстовий та ін.). Таблиця даних – найбільш часто використовувана структура даних в R. Набір даних про пацієнтів (табл. 2.1) складається з числових і текстових даних. Ці дані потрібно представити у вигляді таблиці даних, а не матриці, оскільки таблиця містить у собі дані різних типів. Таблиця даних створюється з допомогою функції data.frame()
:
mydata <- data.frame(col1, col2, col3, ...)
де col1, col2, col3, ...
– це вектори будь-якого типу (текстового, числового або логічного), які стануть стовпцями таблиці. Назви кожному стовпчику можна оголосити з допомогою функції names()
. Проілюструємо сказане на прикладі програмного коду.
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes, status)
patientdata
Кожен стовпець повинен містити дані тільки одного типу, водночас в одній таблиці даних можуть бути стовпчики з даними різного типу. Оскільки таблиці даних дуже близькі до того, що аналітики називають наборами даних, під час обговоренні таблиць даних ми будемо використовувати терміни стовпці та змінні в якості синонімів.
Існує кілька способів позначити елементи таблиці даних. Можна використовувати індекси, як ми робили це раніше (наприклад, для матриць), або можна вказувати номери стовпців. Наведений нижче програмний код на прикладі створеної раніше таблиці даних patientdata
демонструє обидва способи.
patientdata[1:2]
patientdata[c("diabetes", "status")]
patientdata$age
[1] 25 34 28 52
Знак $
з третього прикладу використовується для позначення певної змінної в таблиці даних. Наприклад, якщо вам потрібно створити зведену таблицю типів діабету залежно від стану хворого, ви можете використовувати такий програмний код:
table(patientdata$diabetes, patientdata$status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
Оскільки додавання patientdata$ перед назвою кожної змінної може швидко набриднути, наявні команди для швидкого виклику змінної. Для спрощення програмного коду можна використовувати функції attach()
і detach()
або with()
.
Attach(), detach() і with()
Функція attach()
додає зазначену таблицю даних до шляху пошуку R. Коли вказується ім’я змінної, програма шукає цю змінну в таблицях даних, що входять у траєкторію пошуку. У якості прикладу розглянемо таблицю даних mtcars
з лекції 2, використовуючи додатковийпрограмний код, щоби дізнатися основні статистичні дані витрат палива (mpg
), а також відобразити значення цієї змінної на діаграмі залежно від робочого об’єму циліндрів двигуна (disp
) і ваги машини (wt
).
summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
plot(mtcars$mpg, mtcars$disp)

plot(mtcars$mpg, mtcars$wt)

Це можна також записати у вигляді
attach(mtcars)
summary(mpg)
plot(mpg, disp)
plot(mpg, wt)
detach(mtcars)
Функція detach()
видаляє таблицю даних зі шляху пошуку. Зазначимо, що ця функція нічого не робить із самим об’єктом. Введення цієї команди необов’язкове, але воно корисне в процесі програмуванні, і про нього не слід забувати.
Обмеження даного методу стає очевидним, якщо в нас є кілька об’єктів з однаковими назвами. Розглянемо такий програмний код:
mpg <- c(25, 36, 47)
attach(mtcars)
The following object is masked _by_ .GlobalEnv:
mpg
plot(mpg, wt)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
mpg
[1] 25 36 47
Коли ми додали до траєкторії пошуку таблицю даних mtcars
, у робочому просторі вже був об’єкт із назвою mpg
. У подібних випадках перевагу отримує об’єкт, який був створений першим, а це не те, чого ми хотіли. Команда plot()
не виконується, тому що mpg
тепер складається з трьох елементів, а disp
– з 32 елементів. Функції attach()
і detach()
найкраще використовувати в процесі роботи з однією таблицею даних, і ймовірність того, що у вас буде кілька об’єктів з однаковими іменами, мала. У будь-якому випадку звертайте увагу на попередження щодо маскування об’єктів однойменними об’єктами (objects are masked
); іншими словами, об’єкти стають недоступними для безпосереднього виклику.
Альтернативний підхід полягає у використанні функції with()
. Попередній приклад можна записати так:
with(mtcars, {
summary(mpg, disp, wt)
plot(mpg, disp)
plot(mpg, wt)
})


В цьому випадку команди всередині фігурних дужок належать таблиці даних mtcars
. Тепер нам не доведеться піклуватися про конфлікт назв. Якщо потрібно виконати тільки одну команду (наприклад, summary(mpg)
), фігурні дужки необов’язкові.
Обмеження функції with()
полягає в тому, що вона не діє за межами фігурних дужок. Розглянемо такий приклад:
with(mtcars, {
stats <- summary(mpg)
stats
})
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
stats
Error: object 'stats' not found
Якщо потрібно створити об’єкти, які перебуватимуть поза конструкцією with()
, використовуйте спеціальний символ присвоєння <<-
замість звичайного <-
. Цей прийом дозволить зберегти створений об’єкт у робочому просторі поза конструкцією with()
. Це можна показати на прикладі такого програмного коду:
with(mtcars, {
nokeepstats <- summary(mpg)
keepstats <<- summary(mpg)
})
nokeepstats
Error: object 'nokeepstats' not found
keepstats
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
Здебільшого у посібниках з R рекомендується використовувати with()
, а не attach()
, проте вибір залежить від індивідуальних переваг і повинен ґрунтуватися на тому, чого ви хочете досягти.
Назви рядків
У прикладі з даними про хворих стовпець patientID
використовувався для позначення окремих людей у наборі даних. В R назви рядків можуть бути призначені з допомогою параметра rowname
функції створення таблиці даних. Наприклад, програмний код
patientdata <- data.frame(patientID, age, diabetes,
status, row.names=patientID)
призначає patientID
змінній, яка використовуватиметься для позначення рядків під час виведення даних і створення діаграм в R.
LS0tDQp0aXRsZTogItCb0LXQutGG0ZbRjyAzLiDQotC40L/QuCDRgtCwINGB0YLRgNGD0LrRgtGD0YDQuCDQtNCw0L3QuNGFIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICBjb2RlX2ZvbGRpbmc6IG5vbmUNCi0tLQ0KPHN0eWxlPg0KYm9keSB7DQp0ZXh0LWFsaWduOiBqdXN0aWZ5fQ0KPC9zdHlsZT4NCg0KYGBge3IgcGF0aCBhc3NpZ25tZW50LCBlY2hvID0gIkZBTFNFIn0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpvcHRpb25zKGtuaXRyLnRhYmxlLmZvcm1hdCA9ICJodG1sIikNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCf0LXRgNGI0LjQuSDQtdGC0LDQvyDQsdGD0LTRjC3Rj9C60L7Qs9C+INCw0L3QsNC70ZbQt9GDINC00LDQvdC40YUg4oCTINGG0LUg0YHRgtCy0L7RgNC10L3QvdGPINC90LDQsdC+0YDRgyDQtNCw0L3QuNGFLCDRgyDRj9C60L7QvNGDINC80ZbRgdGC0LjRgtGM0YHRjyDRltC90YTQvtGA0LzQsNGG0ZbRjyDQtNC70Y8g0LLQuNCy0YfQtdC90L3Rjywg0YMg0L/QvtGC0YDRltCx0L3QvtC80YMg0YTQvtGA0LzQsNGC0ZYuINCSIFIg0YbRjyDQt9Cw0LTQsNGH0LAg0YDQvtC30L/QvtC00ZbQu9GP0ZTRgtGM0YHRjyDQvdCwINGC0LDQutGWINC/0ZbQtNC30LDQtNCw0YfRljoNCg0KKiDQstC40LHRltGAINGC0LjQv9GDINC00LDQvdC40YU7DQoqINCy0LLQtdC00LXQvdC90Y8g0LTQsNC90LjRhSDQsiDQvtCx0YDQsNC90L7QvNGDINGE0L7RgNC80LDRgtGWLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCf0L7RgtC+0YfQvdCwINGC0LAg0L3QsNGB0YLRg9C/0L3QsCDQt9CwINC90LXRjiDQu9C10LrRhtGW0Zcg0LzRltGB0YLRj9GC0Ywg0L7Qv9C40YEg0LHQsNC30L7QstC40YUg0YLQuNC/0ZbQsiDQtNCw0L3QuNGFLCDRidC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPRjtGC0YzRgdGPINCyIFIsINCwINGB0LDQvNC1INCy0LXQutGC0L7RgNC4LCDRhNCw0LrRgtC+0YDQuCwg0LzQsNGC0YDQuNGG0ZYsINC80LDRgdC40LLQuCDQtNCw0L3QuNGFLCDRgtCw0LHQu9C40YbRliDQtNCw0L3QuNGFINGWINGB0L/QuNGB0LrQuC4g0KbRjyDQu9C10LrRhtGW0Y8g0L/RgNC40YHQstGP0YfQtdC90LAg0YLQuNC/0LDQvCDQtNCw0L3QuNGFINCy0LXQutGC0L7RgNC4LCDRhNCw0LrRgtC+0YDQuCDRgtCwINC80LDRgtGA0LjRhtGWLiDQlNCw0L3RliDQvNC+0LbQvdCwINCy0LLQvtC00LjRgtC4INCw0LHQviDQstGA0YPRh9C90YMsINCw0LHQviDQtyDQt9C+0LLQvdGW0YjQvdGM0L7Qs9C+INC00LbQtdGA0LXQu9CwLiDQotCw0LrQuNC8INC00LbQtdGA0LXQu9C+0Lwg0LzQvtC20YPRgtGMINCx0YPRgtC4INGC0LXQutGB0YLQvtCy0ZYg0YTQsNC50LvQuCwg0LXQu9C10LrRgtGA0L7QvdC90ZYg0YLQsNCx0LvQuNGG0ZYsINGB0YLQsNGC0LjRgdGC0LjRh9C90ZYg0L/RgNC+0LPRgNCw0LzQuCDQuSDRgdC40YHRgtC10LzQuCDRg9C/0YDQsNCy0LvRltC90L3RjyDQsdCw0LfQsNC80Lgg0LTQsNC90LjRhS4gDQoNCiMj0KnQviDRgtCw0LrQtSDQvdCw0LHRltGAINC00LDQvdC40YU/DQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J3QsNCx0ZbRgCDQtNCw0L3QuNGFIOKAkyDRhtC1LCDRj9C6INC/0YDQsNCy0LjQu9C+LCDQv9GA0Y/QvNC+0LrRg9GC0L3QuNC5INC80LDRgdC40LIg0LTQsNC90LjRhSwg0YMg0Y/QutC+0LzRgyDRgNGP0LTQutC4INCy0ZbQtNC/0L7QstGW0LTQsNGO0YLRjCDRgdC/0L7RgdGC0LXRgNC10LbQtdC90L3Rj9C8LCDQsCDRgdGC0L7QstC/0YbRliDigJMg0L7Qt9C90LDQutCw0LwuICoq0KMg0YLQsNCx0LsuIDIuMSoqINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC5INCz0ZbQv9C+0YLQtdGC0LjRh9C90LjQuSDQvdCw0LHRltGAINC00LDQvdC40YUg0L/RgNC+INC/0LDRhtGW0ZTQvdGC0ZbQsi4NCtCf0YDQtdC00YHRgtCw0LLQvdC40LrQuCDRgNGW0LfQvdC40YUg0L/RgNC+0YTQtdGB0ZbQuSDQv9C+LdGA0ZbQt9C90L7QvNGDINC90LDQt9C40LLQsNGO0YLRjCDRgNGP0LTQutC4INGWINGB0YLQvtCy0L/RhtGWINCyINC90LDQsdC+0YDRliDQtNCw0L3QuNGFLiDQodGC0LDRgtC40YHRgtC40LrQuCDQvdCw0LfQuNCy0LDRjtGC0Ywg0ZfRhSDRgdC/0L7RgdGC0LXRgNC10LbQtdC90L3Rj9C80LggKG9ic2VydmF0aW9uKSDRliDQt9C80ZbQvdC90LjQvNC4ICh2YXJpYWJsZSksINCw0L3QsNC70ZbRgtC40LrQuCwg0Y/QutGWINC/0YDQsNGG0Y7RjtGC0Ywg0ZbQtyDQsdCw0LfQsNC80Lgg0LTQsNC90LjRhSwg0LPQvtCy0L7RgNGP0YLRjCDQv9GA0L4g0LfQsNC/0LjRgdC4IChyZWNvcmQpINGWINC/0L7Qu9GPIChmaWVsZCksINCwINGC0ZYsINGF0YLQviDQv9GA0LDRhtGO0ZQg0LIg0L7QsdC70LDRgdGC0ZYg0LfQvdCw0YXQvtC00LbQtdC90L3RjyDQsiDQtNCw0L3QuNGFINC/0YDQuNGF0L7QstCw0L3QvtGXINGW0L3RhNC+0YDQvNCw0YbRltGXIChkYXRhIG1pbmluZykg0ZYg0LzQsNGI0LjQvdC90L7Qs9C+INC90LDQstGH0LDQvdC90Y8gKG1hY2hpbmUgbGVhcm5pbmcpLCDQvdCw0LfQuNCy0LDRjtGC0Ywg0ZfRhSDQt9GA0LDQt9C60LggKGV4YW1wbGUpINGWINCy0LvQsNGB0YLQuNCy0L7RgdGC0ZYgKGF0dHJpYnV0ZSkuINCS0L/RgNC+0LTQvtCy0LYg0YbRjNC+0LPQviDQutGD0YDRgdGDINC80Lgg0LHRg9C00LXQvNC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRgtC10YDQvNGW0L3QuCDRgdC/0L7RgdGC0LXRgNC10LbQtdC90L3RjyDRliDQt9C80ZbQvdC90LAuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J/QvtGC0YDRltCx0L3QviDRgNC+0LfRgNGW0LfQvdGP0YLQuCDRgdGC0YDRg9C60YLRg9GA0YMg0L3QsNCx0L7RgNGDINC00LDQvdC40YUgKNCyINC00LDQvdC+0LzRgyDQstC40L/QsNC00LrRgyDigJMg0L/RgNGP0LzQvtC60YPRgtC90LjQuSDQvNCw0YHQuNCyINC00LDQvdC40YUpINGWINGC0LjQv9C4INC00LDQvdC40YUsINGP0LrRliDQudC+0LPQviDRgdC60LvQsNC00LDRjtGC0YwuINCjINC90LDQsdC+0YDRliDQtNCw0L3QuNGFLCDRidC+INC90LDQstC10LTQtdC90LjQuSDQsiAqKtGC0LDQsdC7LiAyLjEqKiwgYFBhdGllbnRJRGAg4oCTINGG0LUg0L3QsNC30LLQsCDRgNGP0LTQutCwINCw0LHQviDRgdC/0L7RgdGC0LXRgNC10LbQtdC90L3RjywgYEFkbURhdGVgIOKAkyDQt9C80ZbQvdC90LAg0YMg0YTQvtGA0LzQsNGC0ZYg0LTQsNGC0LgsIGBBZ2VgIOKAkyDQvdC10L/QtdGA0LXRgNCy0L3QsCAo0LDQsdC+INC60ZbQu9GM0LrRltGB0L3QsCDigJMgY29udGludW91cykg0LfQvNGW0L3QvdCwLCBgRGlhYmV0ZXNgIOKAkyDQvdC+0LzRltC90LDQu9GM0L3QsCAobm9taW5hbCkg0LfQvNGW0L3QvdCwINGWIGBTdGF0dXNgIOKAkyDRhtC1INC/0L7RgNGP0LTQutC+0LLQsCAob3JkZXJlZCkg0LfQvNGW0L3QvdCwLiAqKtCi0LDQsdC70LjRhtGPIDIuMSoqINCx0YPQtNC1INC/0YDQvtGH0LjRgtCw0L3QsCDQsiBSINGP0Log0YLQsNCx0LvQuNGG0Y8g0LTQsNC90LjRhS4g0KLQsNC60LAg0LLQtdC70LjQutCwINGA0ZbQt9C90L7QvNCw0L3RltGC0L3RltGB0YLRjCDQv9GW0LTRgtGA0LjQvNGD0LLQsNC90LjRhSDRgdGC0YDRg9C60YLRg9GAINC00LDRlCDQvNC+0LLRliBSINCy0LXQu9C40LrRgyDQs9C90YPRh9C60ZbRgdGC0Ywg0YMg0YDQvtCx0L7RgtGWINC3INC00LDQvdC40LzQuC4NCtCi0LjQv9C4INC00LDQvdC40YUg0LIgUiDQsdGD0LLQsNGO0YLRjCDRh9C40YHQu9C+0LLQuNC80LggKG51bWVyaWMpLCDRgtC10LrRgdGC0L7QstC40LzQuCAoY2hhcmFjdGVyKSwg0LvQvtCz0ZbRh9C90LjQvNC4IChUUlVFL0ZBTFNFLCDQv9GA0LDQstC00LAv0LHRgNC10YXQvdGPKSwg0LrQvtC80L/Qu9C10LrRgdC90LjQvNC4ICjRg9GP0LLQvdC1INGH0LjRgdC70L4pINGWINC90LXQvtCx0YDQvtCx0LvQtdC90LjQvNC4ICjQsdCw0LnRgtC4KS4g0JfQvNGW0L3QvdGWIGBQYXRpZW50SURgLCBgQWRtRGF0ZWAg0ZYgYEFnZWAg0LHRg9C00YPRgtGMINC/0YDQvtGH0LjRgtCw0L3RliBSINGP0Log0YfQuNGB0LvQvtCy0ZYsINCwIGBEaWFiZXRlc2Ag0ZYgYFN0YXR1c2Ag4oCTINGP0Log0YLQtdC60YHRgtC+0LLRli4g0KnQtSDQstCw0Lwg0L/QvtGC0YDRltCx0L3QviDQsdGD0LTQtSDCq9C/0L7QstGW0LTQvtC80LjRgtC4wrsg0L/RgNC+0LPRgNCw0LzRliwg0YnQviBgUGF0aWVudElEYCDigJMg0YbQtSDQvdCw0LfQstC4INGB0L/QvtGB0YLQtdGA0LXQttC10L3RjCwg0YnQviDQsiBgQWRtRGF0ZWAg0LfQsNC/0LjRgdCw0L3RliDQtNCw0YLQuCDQuSDRidC+IGBEaWFiZXRlc2Ag0ZYgYFN0YXR1c2Ag4oCTINGG0LUg0L3QvtC80ZbQvdCw0LvRjNC90LAg0Lkg0L/QvtGA0Y/QtNC60L7QstCwINC30LzRltC90L3RliDQstGW0LTQv9C+0LLRltC00L3Qvi4g0JIgUiDRltC80LXQvdCwINGA0Y/QtNC60ZbQsiDQvdCw0LfQuNCy0LDRjtGC0YzRgdGPIGByb3duYW1lc2AsINCwINC60LDRgtC10LPQvtGA0ZbQsNC70YzQvdGWICjQvdC+0LzRltC90LDQu9GM0L3RliDQuSDQv9C+0YDRj9C00LrQvtCy0ZYpINC30LzRltC90L3RliDigJMgYGZhY3RvcmAgKNGE0LDQutGC0L7RgCkuINCU0LDQu9GWINC80Lgg0YDQvtC30LPQu9GP0L3QtdC80L4g0LLRgdC1INC/0L7RgdC70ZbQtNC+0LLQvdC+Lg0KDQojI9Ch0YLRgNGD0LrRgtGD0YDQuCDQtNCw0L3QuNGFDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KUiDQv9GA0LDRhtGO0ZQg0Lcg0YDRltC30L3QuNC80Lgg0YHRgtGA0YPQutGC0YPRgNCw0LzQuCDQtNCw0L3QuNGFLCDQstC60LvRjtGH0L3QviDQtyDRgdC60LDQu9GP0YDQsNC80LgsINCy0LXQutGC0L7RgNCw0LzQuCwg0LzQsNGC0YDQuNGG0Y/QvNC4LCDQvNCw0YHQuNCy0LDQvNC4INC00LDQvdC40YUsINGC0LDQsdC70LjRhtGP0LzQuCDQtNCw0L3QuNGFINGWINGB0L/QuNGB0LrQsNC80LguINCS0L7QvdC4INCy0ZbQtNGA0ZbQt9C90Y/RjtGC0YzRgdGPINGC0LjQv9Cw0LzQuCDQtNCw0L3QuNGFLCDRgdC/0L7RgdC+0LHQvtC8INGB0YLQstC+0YDQtdC90L3Rjywg0YHQutC70LDQtNC90ZbRgdGC0Y4g0L/RgNC40YHRgtGA0L7Rjiwg0LAg0YLQsNC60L7QtiDRgdC/0L7RgdC+0LHQvtC8INC/0L7Qt9C90LDRh9Cw0YLQuCDRliDQstC40YLRj9Cz0YPQstCw0YLQuCDRl9GF0L3RliDQvtC60YDQtdC80ZYg0LXQu9C10LzQtdC90YLQuC4g0KbRliDRgdGC0YDRg9C60YLRg9GA0Lgg0LTQsNC90LjRhSDRgdGF0LXQvNCw0YLQuNGH0L3QviDQt9C+0LHRgNCw0LbQtdC90L4g0L3QsCDRgNC40YEuIDMuMS4NCg0KPGNlbnRlcj4NCg0KIVsqKtCg0LjRgdGD0L3QvtC6IDMuMSoqIC0g0KLQuNC/0Lgg0YHRgtGA0YPQutGC0YPRgNC4INC00LDQvdC40YUg0LIgUl0oaW1hZ2VzL0ZpZ18zXzEuUE5HKXt3aWR0aD02MCV9DQoNCjwvY2VudGVyPg0KDQombmJzcDsNCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQhCDQutGW0LvRjNC60LAg0LLQu9Cw0YHRgtC40LLQuNGFINGC0ZbQu9GM0LrQuCBSINGC0LXRgNC80ZbQvdGW0LIsINGP0LrRliDQsdC10L3RgtC10LbQsNGC0Ywg0L3QvtCy0LjRhSDQutC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIuINCSIFIg0L7QseKAmdGU0LrRgtC+0LwgKG9iamVjdCkg0L3QsNC30LjQstCw0ZTRgtGM0YHRjyDQstGB0LUsINGJ0L4g0LzQvtC20LUg0LHRg9GC0Lgg0L/RgNC10LTRgdGC0LDQstC70LXQvdC+INGDINCy0LjQs9C70Y/QtNGWINC30LzRltC90L3QuNGFLCDQutC+0L3RgdGC0LDQvdGCLCDRgNGW0LfQvdC40YUg0YLQuNC/0ZbQsiDQtNCw0L3QuNGFLCDRhNGD0L3QutGG0ZbQuSDQuSDQtNGW0LDQs9GA0LDQvC4g0JIg0L7QseKAmdGU0LrRgtGW0LIg0ZQg0LLQuNC0ICjQstC40LfQvdCw0YfQsNGULCDRgyDRj9C60L7QvNGDINCy0LjQs9C70Y/QtNGWINC+0LHigJnRlNC60YIg0LfQsdC10YDRltCz0LDRlNGC0YzRgdGPINCyINC/0LDQvOKAmdGP0YLRlikg0ZYg0LrQu9Cw0YEgKNGP0LrQuNC5INCy0LrQsNC30YPRlCDQt9Cw0LPQsNC70YzQvdC40YUg0YTRg9C90LrRhtGW0Lkg0YLQuNC/0YMgYHByaW50YCwg0Y/QuiDRltC3INC90LjQvCDQt9Cy0LXRgNGC0LDRgtC40YHRjykuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KLQsNCx0LvQuNGG0Y8g0LTQsNC90LjRhSAoZGF0YSBmcmFtZSkg4oCTINGG0LUg0YLQuNC/INGB0YLRgNGD0LrRgtGD0YDQuCDQtNCw0L3QuNGFINCyIFIsINCw0L3QsNC70L7Qs9GW0YfQvdC40Lkg0YLQvtC80YMg0LLQuNC00YMsINGDINGP0LrQvtC80YMg0LfQsdC10YDRltCz0LDRjtGC0YzRgdGPINC00LDQvdGWINGDINC30LLQuNGH0LDQudC90LjRhSDRgdGC0LDRgtC40YHRgtC40YfQvdC40YUg0L/RgNC+0LPRgNCw0LzQsNGFICjQvdCw0L/RgNC40LrQu9Cw0LQsINCyIFNBUywgU1BTUyDRgtCwIFNUQVRBKS4g0KHRgtC+0LLQv9GG0ZYg4oCTINGG0LUg0LfQvNGW0L3QvdGWLCDQsCDRgNGP0LTQutC4IOKAkyDRhtC1INGB0L/QvtGB0YLQtdGA0LXQttC10L3QvdGPLiDQkiDQvtC00L3RltC5INGC0LDQsdC70LjRhtGWINC00LDQvdC40YUg0LzQvtC20YPRgtGMINC80ZbRgdGC0LjRgtC40YHRjyDQt9C80ZbQvdC90ZYg0YDRltC30L3QuNGFINGC0LjQv9GW0LIgKNC90LDQv9GA0LjQutC70LDQtCwg0YfQuNGB0LvQvtCy0ZYg0Lkg0YLQtdC60YHRgtC+0LLRlikuINCi0LDQsdC70LjRhtGWINC00LDQvdC40YUg4oCTINGG0LUg0L7RgdC90L7QstC90LjQuSDRgtC40L8g0YHRgtGA0YPQutGC0YPRgNC4INC00LDQvdC40YUuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KTQsNC60YLQvtGA0Lgg4oCTINGG0LUg0L3QvtC80ZbQvdCw0LvRjNC90ZYg0LDQsdC+INC/0L7RgNGP0LTQutC+0LLRliDQt9C80ZbQvdC90ZYuINCSIFIg0LLQvtC90Lgg0LfQsdC10YDRltCz0LDRjtGC0YzRgdGPINC5INC+0LHRgNC+0LHQu9GP0Y7RgtGM0YHRjyDQvtGB0L7QsdC70LjQstC40Lwg0YfQuNC90L7QvC4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQlNCw0LvRliDRgNC+0LfQs9C70Y/QvdC10LzQviDQstGB0ZYg0YLQuNC/0Lgg0YHRgtGA0YPQutGC0YPRgNC4INC00LDQvdC40YUg0L/QvtGB0LvRltC00L7QstC90L4sINC/0L7Rh9C40L3QsNGO0YfQuCDQtyDQstC10LrRgtC+0YDRltCyLg0KDQojIyPQktC10LrRgtC+0YDQuA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCS0LXQutGC0L7RgNC4ICh2ZWN0b3IpIOKAkyDRhtC1INC+0LTQvdC+0LzRltGA0L3RliDQvNCw0YHQuNCy0Lgg0LTQsNC90LjRhSwg0Y/QutGWINC80L7QttGD0YLRjCDQvNGW0YHRgtC40YLQuCDRh9C40YHQu9C+0LLRliwg0YLQtdC60YHRgtC+0LLRliDQsNCx0L4g0LvQvtCz0ZbRh9C90ZYg0LfQvdCw0YfQtdC90L3Rjy4g0JTQu9GPINGB0YLQstC+0YDQtdC90L3RjyDQstC10LrRgtC+0YDQsCDQt9Cw0YHRgtC+0YHQvtCy0YPRlNGC0YzRgdGPINGE0YPQvdC60YbRltGPINC+0LHigJnRlNC00L3QsNC90L3RjyBgYygpYC4g0J3QuNC20YfQtSDQvdCw0LLQtdC00LXQvdC+INC/0YDQuNC60LvQsNC00Lgg0LLQtdC60YLQvtGA0ZbQsiDQutC+0LbQvdC+0LPQviDRgtC40L/RgzoNCg0KYGBge3J9DQphIDwtIGMoMSwgMiwgNSwgMywgNiwgLTIsIDQpDQpiIDwtIGMoIm9uZSIsICJ0d28iLCAidGhyZWUiKQ0KYyA8LSBjKFRSVUUsIFRSVUUsIFRSVUUsIEZBTFNFLCBUUlVFLCBGQUxTRSkNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCi0YPRgiBgYWAg4oCTINGH0LjRgdC70L7QstC40Lkg0LLQtdC60YLQvtGALCBgYmAg4oCTINGC0LXQutGB0YLQvtCy0LjQuSDQstC10LrRgtC+0YAsIGBjYCDigJMg0LvQvtCz0ZbRh9C90LjQuSDQstC10LrRgtC+0YAuINCX0LLQtdGA0L3RltGC0Ywg0YPQstCw0LPRgyDQvdCwINGC0LUsINGJ0L4g0LLRgdGWINC10LvQtdC80LXQvdGC0Lgg0LLQtdC60YLQvtGA0LAg0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0L7QtNC90L7Qs9C+INGC0LjQv9GDICjRh9C40YHQu9C+0LLRliwg0YLQtdC60YHRgtC+0LLRliDQsNCx0L4g0LvQvtCz0ZbRh9C90ZYpLiDQndC1INC80L7QttC90LAg0LfQvNGW0YjRg9Cy0LDRgtC4INC00LDQvdGWINGA0ZbQt9C90LjRhSDRgtC40L/RltCyINCyINC+0LTQvdC+0LzRgyDQstC10LrRgtC+0YDRli4g0KHQutCw0LvRj9GA0Lgg4oCTINGG0LUg0LLQtdC60YLQvtGA0LgsINGJ0L4g0YHQutC70LDQtNCw0Y7RgtGM0YHRjyDQtyDQvtC00L3QvtCz0L4g0LXQu9C10LzQtdC90YLQsCwg0L3QsNC/0YDQuNC60LvQsNC0LCBgZiA8LSAzYCwgYGcgPC0gIlVTImAg0ZYgYGggPC0gVFJVRWAuINCS0L7QvdC4INCy0LjQutC+0YDQuNGB0YLQvtCy0YPRjtGC0YzRgdGPINC00LvRjyDQv9C+0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgdGC0LDQvdGCLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCe0LrRgNC10LzRliDQtdC70LXQvNC10L3RgtC4INCy0LXQutGC0L7RgNCwINC80L7QttC90LAg0LLQuNC60LvQuNC60LDRgtC4INC3INC00L7Qv9C+0LzQvtCz0L7RjiDRh9C40YHQu9C+0LLQvtCz0L4g0LLQtdC60YLQvtGA0LAsINGJ0L4g0YHQutC70LDQtNCw0ZTRgtGM0YHRjyDQtyDQvdC+0LzQtdGA0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0ZYg0YPQutC70LDQtNC10L3QvtCz0L4g0YMg0LrQstCw0LTRgNCw0YLQvdGWINC00YPQttC60LguINCd0LDQv9GA0LjQutC70LDQtCwgYGFbYygyLCA0KV1gINC/0L7Qt9C90LDRh9Cw0ZQg0LTRgNGD0LPQuNC5INGWINGH0LXRgtCy0LXRgNGC0LjQuSDQtdC70LXQvNC10L3RgtC4INCy0LXQutGC0L7RgNCwIGBhYC4g0J7RgdGMINGJ0LUg0L/RgNC40LrQu9Cw0LTQuDoNCg0KYGBge3J9DQpBIDwtIGMoMSwgMiwgNSwgMywgNiwgLTIsIDQpDQpBWzNdDQpBW2MoMSwgMywgNSldDQpBWzI6Nl0NCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCX0L3QsNC6INC00LLQvtC60YDQsNC/0LrQuCDQsiDQvtGB0YLQsNC90L3RjNC+0LzRgyDQv9GA0LjQutC70LDQtNGWINCy0LjQutC+0YDQuNGB0YLQsNC90LjQuSDQtNC70Y8g0YHRgtCy0L7RgNC10L3QvdGPINC/0L7RgdC70ZbQtNC+0LLQvdC+0YHRgtGWINGH0LjRgdC10LsuINCd0LDQv9GA0LjQutC70LDQtCwgYGEgPC0gYygyOjYpYCDigJMg0YbQtSDRgtC1INC2INGB0LDQvNC1LCDRidC+IGBhIDwtIGMoMiwgMywgNCwgNSwgNilgLg0KDQojIyPQnNCw0YLRgNC40YbRlg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCc0LDRgtGA0LjRhtGPIChtYXRyaXgpIOKAkyDRhtC1INC00LLQvtCy0LjQvNGW0YDQvdC40Lkg0LzQsNGB0LjQsiDQtNCw0L3QuNGFLCDRgyDRj9C60L7QvNGDINC60L7QttC10L0g0LXQu9C10LzQtdC90YIg0LzQsNGUINC+0LTQvdCw0LrQvtCy0LjQuSDRgtC40L8gKNGH0LjRgdC70L7QstC40LksINGC0LXQutGB0YLQvtCy0LjQuSDQsNCx0L4g0LvQvtCz0ZbRh9C90LjQuSkuINCc0LDRgtGA0LjRhtGWINGB0YLQstC+0YDRjtGO0YLRjCDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0YTRg9C90LrRhtGW0ZcgYG1hdHJpeCgpYC4g0JfQsNCz0LDQu9GM0L3QuNC5INGE0L7RgNC80LDRgiDRgtCw0LrQuNC5Og0KDQpgYGB7cn0NCm15bWF0cml4IDwtIG1hdHJpeCh2ZWN0b3IsIG5yb3c90YfQuNGB0LvQvl/RgNGP0LTQutGW0LIsIG5jb2w90YfQuNGB0LvQvl/RgdGC0L7QstC/0YbRltCyLA0KICAgICAgICAgICAgICAgICAgIGJ5cm93PdC70L7Qs9GW0YfQvdC40Llf0LLQuNGA0LDQtywgZGltbmFtZXM9bGlzdCgNCiAgICAgICAgICAgICAgICAgICDRgtC10LrRgdGCX9Cy0LXQutGC0L7RgF/QvdCw0LfQstCwX9GA0Y/QtNC60ZbQsiwNCiAgICAgICAgICAgICAgICAgICDRgtC10LrRgdGCX9Cy0LXQutGC0L7RgF/QvdCw0LfQstCwX9GB0YLQvtCy0L/RhtGW0LIpKQ0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0LTQtSBgdmVjdG9yYCDQvNGW0YHRgtC40YLRjCDQtdC70LXQvNC10L3RgtC4INC80LDRgtGA0LjRhtGWOyBgbnJvd2Ag0ZYgYG5jb2xgINCy0LjQt9C90LDRh9Cw0Y7RgtGMINGH0LjRgdC70L4g0YDRj9C00LrRltCyINGWINGB0YLQvtCy0L/RhtGW0LIg0YMg0LzQsNGC0YDQuNGG0ZY7IGBkaW1uYW1lc2Ag0LzRltGB0YLQuNGC0Ywg0L3QsNC30LLQuCDRgNGP0LTQutGW0LIg0ZYg0YHRgtC+0LLQv9GG0ZbQsiAo0ZfRhSDQstC60LDQt9GD0LLQsNGC0Lgg0L3QtSDQvtCx0L7QsuKAmdGP0LfQutC+0LLQviksINGP0LrRliDQt9Cx0LXRgNGW0LPQsNGO0YLRjNGB0Y8g0YMg0LLQuNCz0LvRj9C00ZYg0YLQtdC60YHRgtC+0LLQuNGFINCy0LXQutGC0L7RgNGW0LI7INC/0LDRgNCw0LzQtdGC0YAgYGJ5cm93YCDQstC40LfQvdCw0YfQsNGULCDRj9C6INC/0L7QstC40L3QvdCwINC30LDQv9C+0LLQvdGO0LLQsNGC0LjRgdGPINC80LDRgtGA0LjRhtGPIOKAkyDQt9CwINGA0Y/QtNC60LDQvNC4IChgYnlyb3c9VFJVRWApINCw0LHQviDQt9CwINGB0YLQvtCy0L/RhtGP0LzQuCAoYGJ5cm93PUZBTFNFYCkuINCX0LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LzQsNGC0YDQuNGG0Y8g0LfQsNC/0L7QstC90Y7RlNGC0YzRgdGPINC30LAg0YHRgtC+0LLQv9GG0Y/QvNC4LiDQndCw0LLQtdC00LXQvdC40Lkg0L3QuNC20YfQtSDQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQg0ZbQu9GO0YHRgtGA0YPRlCDQt9Cw0YHRgtC+0YHRg9Cy0LDQvdC90Y8g0YTRg9C90LrRhtGW0ZcgbWF0cml4Lg0KDQpgYGB7cn0NClkgPC0gbWF0cml4KDE6MjAsIG5yb3c9NSwgbmNvbD00KQ0KWQ0KYGBgDQoNCmBgYHtyfQ0KY2VsbHMgPC0gYygxLDI2LDI0LDY4KQ0Kcm5hbWVzIDwtIGMoIlIxIiwgIlIyIikNCmNuYW1lcyA8LSBjKCJDMSIsICJDMiIpDQpgYGANCg0KYGBge3J9DQpteW1hdHJpeCA8LSBtYXRyaXgoY2VsbHMsIG5yb3c9MiwgbmNvbD0yLCBieXJvdz1UUlVFLA0KICAgICAgICAgICAgICAgICAgICBkaW1uYW1lcz1saXN0KHJuYW1lcywgY25hbWVzKSkNCm15bWF0cml4DQpgYGANCg0KYGBge3J9DQpteW1hdHJpeCA8LSBtYXRyaXgoY2VsbHMsIG5yb3c9MiwgbmNvbD0yLCBieXJvdz1GQUxTRSwNCiAgICAgICAgICAgICAgICAgICBkaW1uYW1lcz1saXN0KHJuYW1lcywgY25hbWVzKSkNCm15bWF0cml4DQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQodC/0L7Rh9Cw0YLQutGDINCy0Lgg0YHRgtCy0L7RgNGO0ZTRgtC1INC80LDRgtGA0LjRhtGOIGA1w5c0YC4g0J/QvtGC0ZbQvCDQstC4INGA0L7QsdC40YLQtSDQvNCw0YLRgNC40YbRjiBgMsOXMmAg0Lcg0L3QsNC30LLQsNC80Lgg0YDRj9C00LrRltCyINGWINGB0YLQvtCy0L/RhtGW0LIg0YLQsCDQt9Cw0L/QvtCy0L3RjtGU0YLQtSDRl9GXINC30LAg0YDRj9C00LrQsNC80LguINCd0LDRgNC10YjRgtGWLCDQstC4INGB0YLQstC+0YDRjtGU0YLQtSDQvNCw0YLRgNC40YbRjiBgMsOXMmAg0ZYg0LfQsNC/0L7QstC90Y7RlNGC0LUg0ZfRlyDQt9CwINGB0YLQvtCy0L/RhtGP0LzQuC4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQktC4INC80L7QttC10YLQtSDQv9C+0LfQvdCw0YfQsNGC0Lgg0YDRj9C00LrQuCwg0YHRgtC+0LLQv9GG0ZYg0Lkg0LXQu9C10LzQtdC90YLQuCDQvNCw0YLRgNC40YbRliDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0ZbQvdC00LXQutGB0ZbQsiDRliDQutCy0LDQtNGA0LDRgtC90LjRhSDQtNGD0LbQvtC6LiDQndCw0L/RgNC40LrQu9Cw0LQsIGBYW2ksXWAg0L/QvtC30L3QsNGH0LDRlCAqaSot0Lkg0YDRj9C00L7QuiDQvNCw0YLRgNC40YbRliBgWGAsIGBYWywgal1gIOKAkyDQv9C+0LfQvdCw0YfQsNGUINGX0ZcgKmoqLdC40Lkg0YHRgtC+0LLQv9C10YbRjCwg0LAgYFhbaSwgal1gINCy0ZbQtNC/0L7QstGW0LTQsNGUINC10LvQtdC80LXQvdGC0YMg0YbRltGU0Zcg0LzQsNGC0YDQuNGG0ZYsINGA0L7Qt9GC0LDRiNC+0LLQsNC90L7QvNGDINC90LAg0L/QtdGA0LXRgtC40L3RliDRhtGM0L7Qs9C+INGA0Y/QtNC60LAg0Lkg0YbRjNC+0LPQviDRgdGC0L7QstC/0YfQuNC60LAuINCjINGP0LrQvtGB0YLRliDRltC90LTQtdC60YHRltCyIGBpYCDRgtCwIGBqYCDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRh9C40YHQu9C+0LLRliDQstC10LrRgtC+0YDQuCwg0YnQvtCx0Lgg0L/QvtC30L3QsNGH0LjRgtC4INCy0ZbQtNGA0LDQt9GDINC60ZbQu9GM0LrQsCDRgNGP0LTQutGW0LIg0LDQsdC+INGB0YLQvtCy0L/RhtGW0LIsINGP0Log0YbQtSDQv9C+0LrQsNC30LDQvdC+INC90LjQttGH0LUuDQoNCmBgYHtyfQ0KWCA8LSBtYXRyaXgoMToxMCwgbnJvdz0yKQ0KWA0KYGBgDQoNCmBgYHtyfQ0KWFsyLF0NClhbLCAyXQ0KWFsxLDRdDQpYWzEsIGMoNCw1KV0NCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCh0L/QvtGH0LDRgtC60YMg0YHRgtCy0L7RgNC10L3QviDQvNCw0YLRgNC40YbRjiBgMsOXNWAsINGJ0L4g0LzRltGB0YLQuNGC0Ywg0YbQuNGE0YDQuCDQstGW0LQgMSDQtNC+IDEwLiDQl9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC80LDRgtGA0LjRhtGPINC30LDQv9C+0LLQvdC10L3QsCDRhtC40YTRgNCw0LzQuCDQt9CwINGB0YLQvtCy0L/RhtGP0LzQuC4g0J/QvtGC0ZbQvCDQvtCx0YDQsNC90L4g0LLRgdGWINC10LvQtdC80LXQvdGC0Lgg0LIg0LTRgNGD0LPQvtC80YMg0YDRj9C00LrRgywg0LAg0LTQsNC70ZYg4oCTINGD0YHRliDQtdC70LXQvNC10L3RgtC4INCyINC00YDRg9Cz0L7QvNGDINGB0YLQvtCy0L/RhtGWLiDQn9C+0YLRltC8INC+0LHRgNCw0L3QviDQtdC70LXQvNC10L3Rgiwg0Y/QutC40Lkg0YDQvtC30YLQsNGI0L7QstGD0ZTRgtGM0YHRjyDQsiDQv9C10YDRiNC+0LzRgyDRgNGP0LTQutGDINC5ICDRgyDRh9C10YLQstC10YDRgtC+0LzRgyDRgdGC0L7QstC/0YbRli4g0J3QsNGA0LXRiNGC0ZYsINC+0LHRgNCw0L3QviDQtdC70LXQvNC10L3RgtC4INC/0LXRgNGI0L7Qs9C+INGA0Y/QtNC60LAsINGP0LrRliDQvNGW0YHRgtGP0YLRjNGB0Y8g0LIg0YfQtdGC0LLQtdGA0YLQvtC80YMg0ZYg0L/igJnRj9GC0L7QvNGDINGB0YLQvtCy0L/Rh9C40LrQsNGFLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCc0LDRgtGA0LjRhtGWINC80LDRjtGC0Ywg0LTQstCwINCy0LjQvNGW0YDQuCDRliwg0Y/QuiDRliDQstC10LrRgtC+0YDQuCwg0LzQvtC20YPRgtGMINGB0LrQu9Cw0LTQsNGC0LjRgdGPINGC0ZbQu9GM0LrQuCDQtyDQvtC00L3QvtCz0L4g0YLQuNC/0YMg0LTQsNC90LjRhS4g0K/QutGJ0L4g0ZQg0LHRltC70YzRiNC1INC30LAg0LTQstCwINCy0LjQvNGW0YDQuCwg0L/QvtGC0YDRltCx0L3QviDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0LzQsNGB0LjQstC4INC00LDQvdC40YUuINCU0LDQvdGWINGA0ZbQt9C90LjRhSDRgtC40L/RltCyINC80L7QttC90LAg0LfQsdC10YDRltCz0LDRgtC4INCyINGC0LDQsdC70LjRhtGP0YUuDQoNCiMjI9Cc0LDRgdC40LLQuCDQtNCw0L3QuNGFDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0JzQsNGB0LjQstC4INC00LDQvdC40YUgKGFycmF5KSDRgdGF0L7QttGWINC3INC80LDRgtGA0LjRhtGP0LzQuCwg0LDQu9C1INC80L7QttGD0YLRjCDQvNCw0YLQuCDQv9C+0L3QsNC0INC00LLQsCDQstC40LzRltGA0LguINCc0LDRgdC40LLQuCDQtNCw0L3QuNGFINGB0YLQstC+0YDRjtGO0YLRjNGB0Y8g0Lcg0LTQvtC/0L7QvNC+0LPQvtGOINGE0YPQvdC60YbRltGXIGBhcnJheSgpYCDQt9CwINGC0LDQutC40Lwg0LfRgNCw0LfQutC+0Lw6DQoNCmBgYHtyfQ0KbXlhcnJheSA8LSBhcnJheSh2ZWN0b3IsIGRpbWVuc2lvbnMsIGRpbW5hbWVzKQ0KYGBgDQoNCtC00LUgYHZlY3RvcmAg0LzRltGB0YLQuNGC0Ywg0LvQuNGI0LUg0LTQsNC90ZY7IGBkaW1lbnNpb25zYCDigJMg0YbQtSDRh9C40YHQu9C+0LLQuNC5INCy0LXQutGC0L7RgCDRltC3INC30LDQt9C90LDRh9C10L3QvdGP0Lwg0YDQvtC30LzRltGA0L3QvtGB0YLRliDQtNC70Y8g0LrQvtC20L3QvtCz0L4g0LLQuNC80ZbRgNGO0LLQsNC90L3RjzsgYGRpbW5hbWVzYCDigJMg0YbQtSDQvdC10L7QsdC+0LLigJnRj9C30LrQvtCy0LjQuSDRgdC/0LjRgdC+0Log0L3QsNC30LIg0LLQuNC80ZbRgNGO0LLQsNC90YwuINCd0LjQttGH0LUg0LIg0Y/QutC+0YHRgtGWINC/0YDQuNC60LvQsNC00YMg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0L/RgNC+0LPRgNCw0LzQvdC40Lkg0LrQvtC0LCDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0Y/QutC+0LPQviDRgdGC0LLQvtGA0LXQvdC+INGC0YDQuNCy0LjQvNGW0YDQvdC40LkgKGAyw5czw5c0YCkg0LzQsNGB0LjQsiDRh9C40YHQtdC7Lg0KDQpgYGB7cn0NCmRpbTEgPC0gYygiQTEiLCAiQTIiKQ0KZGltMiA8LSBjKCJCMSIsICJCMiIsICJCMyIpDQpkaW0zIDwtIGMoIkMxIiwgIkMyIiwgIkMzIiwgIkM0IikNCnogPC0gYXJyYXkoMToyNCwgYygyLCAzLCA0KSwgZGltbmFtZXM9bGlzdChkaW0xLCBkaW0yLCBkaW0zKSkNCnoNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCe0YfQtdCy0LjQtNC90L4sINGJ0L4g0LzQsNGB0LjQstC4INC00LDQvdC40YUg4oCTINGG0LUg0L/RgNC+0YHRgtC+INGA0L7Qt9GI0LjRgNC10L3RliDQvNCw0YLRgNC40YbRli4g0JLQvtC90Lgg0LzQvtC20YPRgtGMINCx0YPRgtC4INC60L7RgNC40YHQvdGWINGDINGA0LDQt9GWICDRgdGC0LLQvtGA0LXQvdC90Y8g0L/RgNC+0LPRgNCw0Lwg0LTQu9GPINGA0LXQsNC70ZbQt9Cw0YbRltGXINC90L7QstC40YUg0YHRgtCw0YLQuNGB0YLQuNGH0L3QuNGFINC80LXRgtC+0LTRltCyLiDQr9C6INGWINCyINC80LDRgtGA0LjRhtGP0YUsINGD0YHRliDQtdC70LXQvNC10L3RgtC4INC80LDRgdC40LLRgyDQtNCw0L3QuNGFINC/0L7QstC40L3QvdGWINC80LDRgtC4INC+0LTQvdCw0LrQvtCy0LjQuSDRgtC40L8uINCh0LjRgdGC0LXQvNCwINC/0L7Qt9C90LDRh9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDRgtGD0YIg0YLQsNC60LAg0LYsINGP0Log0LTQu9GPINC80LDRgtGA0LjRhtGMLiDQoyDQvdCw0LLQtdC00LXQvdC+0LzRgyDQstC40YnQtSDQv9GA0LjQutC70LDQtNGWINC10LvQtdC80LXQvdGCIGB6WzEsMiwzXWAg4oCTINGG0LUgMTUuDQoNCiMjI9Ci0LDQsdC70LjRhtGWINC00LDQvdC40YUNCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQotCw0LHQu9C40YbRjyDQtNCw0L3QuNGFIChkYXRhIGZyYW1lKSDigJMg0YbQtSDQsdGW0LvRjNGIINGI0LjRgNC+0LrQviDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNC90LjQuSDRgyDQv9C+0YDRltCy0L3Rj9C90L3RliDQtyDQvNCw0YLRgNC40YbQtdGOINC+0LHigJnRlNC60YIsINC+0YHQutGW0LvRjNC60Lgg0YDRltC30L3RliDRgdGC0L7QstC/0YbRliDQvNC+0LbRg9GC0Ywg0LzRltGB0YLQuNGC0Lgg0YDRltC30L3RliDRgtC40L/QuCDQtNCw0L3QuNGFICjRh9C40YHQu9C+0LLQuNC5LCDRgtC10LrRgdGC0L7QstC40Lkg0YLQsCDRltC9LikuINCi0LDQsdC70LjRhtGPINC00LDQvdC40YUg4oCTINC90LDQudCx0ZbQu9GM0Ygg0YfQsNGB0YLQviDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNC90LAg0YHRgtGA0YPQutGC0YPRgNCwINC00LDQvdC40YUg0LIgUi4g0J3QsNCx0ZbRgCDQtNCw0L3QuNGFINC/0YDQviDQv9Cw0YbRltGU0L3RgtGW0LIgKCoq0YLQsNCx0LsuIDIuMSoqKSDRgdC60LvQsNC00LDRlNGC0YzRgdGPINC3INGH0LjRgdC70L7QstC40YUg0ZYg0YLQtdC60YHRgtC+0LLQuNGFINC00LDQvdC40YUuINCm0ZYg0LTQsNC90ZYg0L/QvtGC0YDRltCx0L3QviDQv9GA0LXQtNGB0YLQsNCy0LjRgtC4INGDINCy0LjQs9C70Y/QtNGWINGC0LDQsdC70LjRhtGWINC00LDQvdC40YUsINCwINC90LUg0LzQsNGC0YDQuNGG0ZYsINC+0YHQutGW0LvRjNC60Lgg0YLQsNCx0LvQuNGG0Y8g0LzRltGB0YLQuNGC0Ywg0YMg0YHQvtCx0ZYg0LTQsNC90ZYg0YDRltC30L3QuNGFINGC0LjQv9GW0LIuINCi0LDQsdC70LjRhtGPINC00LDQvdC40YUg0YHRgtCy0L7RgNGO0ZTRgtGM0YHRjyDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0YTRg9C90LrRhtGW0ZcgYGRhdGEuZnJhbWUoKWA6DQoNCmBgYHtyfQ0KbXlkYXRhIDwtIGRhdGEuZnJhbWUoY29sMSwgY29sMiwgY29sMywgLi4uKQ0KYGBgDQoNCtC00LUgYGNvbDEsIGNvbDIsIGNvbDMsIC4uLmAg4oCTINGG0LUg0LLQtdC60YLQvtGA0Lgg0LHRg9C00Ywt0Y/QutC+0LPQviDRgtC40L/RgyAo0YLQtdC60YHRgtC+0LLQvtCz0L4sINGH0LjRgdC70L7QstC+0LPQviDQsNCx0L4g0LvQvtCz0ZbRh9C90L7Qs9C+KSwg0Y/QutGWINGB0YLQsNC90YPRgtGMINGB0YLQvtCy0L/RhtGP0LzQuCDRgtCw0LHQu9C40YbRli4g0J3QsNC30LLQuCDQutC+0LbQvdC+0LzRgyDRgdGC0L7QstC/0YfQuNC60YMg0LzQvtC20L3QsCDQvtCz0L7Qu9C+0YHQuNGC0Lgg0Lcg0LTQvtC/0L7QvNC+0LPQvtGOINGE0YPQvdC60YbRltGXIGBuYW1lcygpYC4g0J/RgNC+0ZbQu9GO0YHRgtGA0YPRlNC80L4g0YHQutCw0LfQsNC90LUg0L3QsCDQv9GA0LjQutC70LDQtNGWINC/0YDQvtCz0YDQsNC80L3QvtCz0L4g0LrQvtC00YMuDQoNCmBgYHtyfQ0KcGF0aWVudElEIDwtIGMoMSwgMiwgMywgNCkNCmFnZSA8LSBjKDI1LCAzNCwgMjgsIDUyKQ0KZGlhYmV0ZXMgPC0gYygiVHlwZTEiLCAiVHlwZTIiLCAiVHlwZTEiLCAiVHlwZTEiKQ0Kc3RhdHVzIDwtIGMoIlBvb3IiLCAiSW1wcm92ZWQiLCAiRXhjZWxsZW50IiwgIlBvb3IiKQ0KcGF0aWVudGRhdGEgPC0gZGF0YS5mcmFtZShwYXRpZW50SUQsIGFnZSwgZGlhYmV0ZXMsIHN0YXR1cykNCnBhdGllbnRkYXRhDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQmtC+0LbQtdC9INGB0YLQvtCy0L/QtdGG0Ywg0L/QvtCy0LjQvdC10L0g0LzRltGB0YLQuNGC0Lgg0LTQsNC90ZYg0YLRltC70YzQutC4INC+0LTQvdC+0LPQviDRgtC40L/Rgywg0LLQvtC00L3QvtGH0LDRgSDQsiDQvtC00L3RltC5INGC0LDQsdC70LjRhtGWINC00LDQvdC40YUg0LzQvtC20YPRgtGMINCx0YPRgtC4INGB0YLQvtCy0L/Rh9C40LrQuCDQtyDQtNCw0L3QuNC80Lgg0YDRltC30L3QvtCz0L4g0YLQuNC/0YMuINCe0YHQutGW0LvRjNC60Lgg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhSDQtNGD0LbQtSDQsdC70LjQt9GM0LrRliDQtNC+INGC0L7Qs9C+LCDRidC+INCw0L3QsNC70ZbRgtC40LrQuCDQvdCw0LfQuNCy0LDRjtGC0Ywg0L3QsNCx0L7RgNCw0LzQuCDQtNCw0L3QuNGFLCDQv9GW0LQg0YfQsNGBINC+0LHQs9C+0LLQvtGA0LXQvdC90ZYg0YLQsNCx0LvQuNGG0Ywg0LTQsNC90LjRhSDQvNC4INCx0YPQtNC10LzQviDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0YLQtdGA0LzRltC90Lgg0YHRgtC+0LLQv9GG0ZYg0YLQsCDQt9C80ZbQvdC90ZYg0LIg0Y/QutC+0YHRgtGWINGB0LjQvdC+0L3RltC80ZbQsi4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQhtGB0L3Rg9GUINC60ZbQu9GM0LrQsCDRgdC/0L7RgdC+0LHRltCyINC/0L7Qt9C90LDRh9C40YLQuCDQtdC70LXQvNC10L3RgtC4INGC0LDQsdC70LjRhtGWINC00LDQvdC40YUuINCc0L7QttC90LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INGW0L3QtNC10LrRgdC4LCDRj9C6INC80Lgg0YDQvtCx0LjQu9C4INGG0LUg0YDQsNC90ZbRiNC1ICjQvdCw0L/RgNC40LrQu9Cw0LQsINC00LvRjyDQvNCw0YLRgNC40YbRjCksINCw0LHQviDQvNC+0LbQvdCwINCy0LrQsNC30YPQstCw0YLQuCDQvdC+0LzQtdGA0Lgg0YHRgtC+0LLQv9GG0ZbQsi4g0J3QsNCy0LXQtNC10L3QuNC5INC90LjQttGH0LUg0L/RgNC+0LPRgNCw0LzQvdC40Lkg0LrQvtC0INC90LAg0L/RgNC40LrQu9Cw0LTRliDRgdGC0LLQvtGA0LXQvdC+0Zcg0YDQsNC90ZbRiNC1INGC0LDQsdC70LjRhtGWINC00LDQvdC40YUgYHBhdGllbnRkYXRhYCDQtNC10LzQvtC90YHRgtGA0YPRlCDQvtCx0LjQtNCy0LAg0YHQv9C+0YHQvtCx0LguDQoNCmBgYHtyfQ0KcGF0aWVudGRhdGFbMToyXQ0KYGBgDQoNCmBgYHtyfQ0KcGF0aWVudGRhdGFbYygiZGlhYmV0ZXMiLCAic3RhdHVzIildDQpgYGANCg0KYGBge3J9DQpwYXRpZW50ZGF0YSRhZ2UNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCX0L3QsNC6IGAkYCDQtyDRgtGA0LXRgtGM0L7Qs9C+INC/0YDQuNC60LvQsNC00YMg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LTQu9GPINC/0L7Qt9C90LDRh9C10L3QvdGPINC/0LXQstC90L7RlyDQt9C80ZbQvdC90L7RlyDQsiDRgtCw0LHQu9C40YbRliDQtNCw0L3QuNGFLiDQndCw0L/RgNC40LrQu9Cw0LQsINGP0LrRidC+INCy0LDQvCDQv9C+0YLRgNGW0LHQvdC+INGB0YLQstC+0YDQuNGC0Lgg0LfQstC10LTQtdC90YMg0YLQsNCx0LvQuNGG0Y4g0YLQuNC/0ZbQsiDQtNGW0LDQsdC10YLRgyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0YHRgtCw0L3RgyDRhdCy0L7RgNC+0LPQviwg0LLQuCDQvNC+0LbQtdGC0LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INGC0LDQutC40Lkg0L/RgNC+0LPRgNCw0LzQvdC40Lkg0LrQvtC0Og0KDQpgYGB7cn0NCnRhYmxlKHBhdGllbnRkYXRhJGRpYWJldGVzLCBwYXRpZW50ZGF0YSRzdGF0dXMpDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQntGB0LrRltC70YzQutC4INC00L7QtNCw0LLQsNC90L3RjyBwYXRpZW50ZGF0YSQg0L/QtdGA0LXQtCDQvdCw0LfQstC+0Y4g0LrQvtC20L3QvtGXINC30LzRltC90L3QvtGXINC80L7QttC1INGI0LLQuNC00LrQviDQvdCw0LHRgNC40LTQvdGD0YLQuCwg0L3QsNGP0LLQvdGWINC60L7QvNCw0L3QtNC4INC00LvRjyDRiNCy0LjQtNC60L7Qs9C+INCy0LjQutC70LjQutGDINC30LzRltC90L3QvtGXLiDQlNC70Y8g0YHQv9GA0L7RidC10L3QvdGPINC/0YDQvtCz0YDQsNC80L3QvtCz0L4g0LrQvtC00YMg0LzQvtC20L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0YTRg9C90LrRhtGW0ZcgYGF0dGFjaCgpYCDRliBgZGV0YWNoKClgINCw0LHQviBgd2l0aCgpYC4NCg0KIyMjQXR0YWNoKCksIGRldGFjaCgpINGWIHdpdGgoKQ0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCk0YPQvdC60YbRltGPIGBhdHRhY2goKWAg0LTQvtC00LDRlCDQt9Cw0LfQvdCw0YfQtdC90YMg0YLQsNCx0LvQuNGG0Y4g0LTQsNC90LjRhSDQtNC+INGI0LvRj9GF0YMg0L/QvtGI0YPQutGDIFIuINCa0L7Qu9C4INCy0LrQsNC30YPRlNGC0YzRgdGPINGW0LzigJnRjyDQt9C80ZbQvdC90L7Rlywg0L/RgNC+0LPRgNCw0LzQsCDRiNGD0LrQsNGUINGG0Y4g0LfQvNGW0L3QvdGDINCyINGC0LDQsdC70LjRhtGP0YUg0LTQsNC90LjRhSwg0YnQviDQstGF0L7QtNGP0YLRjCDRgyDRgtGA0LDRlNC60YLQvtGA0ZbRjiDQv9C+0YjRg9C60YMuINCjINGP0LrQvtGB0YLRliDQv9GA0LjQutC70LDQtNGDINGA0L7Qt9Cz0LvRj9C90LXQvNC+INGC0LDQsdC70LjRhtGOINC00LDQvdC40YUgYG10Y2Fyc2Ag0Lcg0LvQtdC60YbRltGXIDIsINCy0LjQutC+0YDQuNGB0YLQvtCy0YPRjtGH0Lgg0LTQvtC00LDRgtC60L7QstC40LnQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQsINGJ0L7QsdC4INC00ZbQt9C90LDRgtC40YHRjyDQvtGB0L3QvtCy0L3RliDRgdGC0LDRgtC40YHRgtC40YfQvdGWINC00LDQvdGWINCy0LjRgtGA0LDRgiDQv9Cw0LvQuNCy0LAgKGBtcGdgKSwg0LAg0YLQsNC60L7QtiDQstGW0LTQvtCx0YDQsNC30LjRgtC4INC30L3QsNGH0LXQvdC90Y8g0YbRltGU0Zcg0LfQvNGW0L3QvdC+0Zcg0L3QsCDQtNGW0LDQs9GA0LDQvNGWINC30LDQu9C10LbQvdC+INCy0ZbQtCDRgNC+0LHQvtGH0L7Qs9C+INC+0LHigJnRlNC80YMg0YbQuNC70ZbQvdC00YDRltCyINC00LLQuNCz0YPQvdCwIChgZGlzcGApINGWINCy0LDQs9C4INC80LDRiNC40L3QuCAoYHd0YCkuDQoNCmBgYHtyfQ0Kc3VtbWFyeShtdGNhcnMkbXBnKQ0KcGxvdChtdGNhcnMkbXBnLCBtdGNhcnMkZGlzcCkNCnBsb3QobXRjYXJzJG1wZywgbXRjYXJzJHd0KQ0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KbQtSDQvNC+0LbQvdCwINGC0LDQutC+0LYg0LfQsNC/0LjRgdCw0YLQuCDRgyDQstC40LPQu9GP0LTRlg0KDQpgYGB7cn0NCmF0dGFjaChtdGNhcnMpDQogIHN1bW1hcnkobXBnKQ0KICBwbG90KG1wZywgZGlzcCkNCiAgcGxvdChtcGcsIHd0KQ0KZGV0YWNoKG10Y2FycykNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCk0YPQvdC60YbRltGPIGBkZXRhY2goKWAg0LLQuNC00LDQu9GP0ZQg0YLQsNCx0LvQuNGG0Y4g0LTQsNC90LjRhSDQt9GWINGI0LvRj9GF0YMg0L/QvtGI0YPQutGDLiDQl9Cw0LfQvdCw0YfQuNC80L4sINGJ0L4g0YbRjyDRhNGD0L3QutGG0ZbRjyDQvdGW0YfQvtCz0L4g0L3QtSDRgNC+0LHQuNGC0Ywg0ZbQtyDRgdCw0LzQuNC8INC+0LHigJnRlNC60YLQvtC8LiDQktCy0LXQtNC10L3QvdGPINGG0ZbRlNGXINC60L7QvNCw0L3QtNC4INC90LXQvtCx0L7QsuKAmdGP0LfQutC+0LLQtSwg0LDQu9C1INCy0L7QvdC+INC60L7RgNC40YHQvdC1INCyINC/0YDQvtGG0LXRgdGWINC/0YDQvtCz0YDQsNC80YPQstCw0L3QvdGWLCDRliDQv9GA0L4g0L3RjNC+0LPQviDQvdC1INGB0LvRltC0INC30LDQsdGD0LLQsNGC0LguDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J7QsdC80LXQttC10L3QvdGPINC00LDQvdC+0LPQviDQvNC10YLQvtC00YMg0YHRgtCw0ZQg0L7Rh9C10LLQuNC00L3QuNC8LCDRj9C60YnQviDQsiDQvdCw0YEg0ZQg0LrRltC70YzQutCwINC+0LHigJnRlNC60YLRltCyINC3INC+0LTQvdCw0LrQvtCy0LjQvNC4INC90LDQt9Cy0LDQvNC4LiDQoNC+0LfQs9C70Y/QvdC10LzQviDRgtCw0LrQuNC5INC/0YDQvtCz0YDQsNC80L3QuNC5INC60L7QtDoNCg0KYGBge3J9DQptcGcgPC0gYygyNSwgMzYsIDQ3KQ0KYXR0YWNoKG10Y2FycykNCmBgYA0KDQpgYGB7cn0NCnBsb3QobXBnLCB3dCkNCmBgYA0KDQoNCmBgYHtyfQ0KbXBnDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQmtC+0LvQuCDQvNC4INC00L7QtNCw0LvQuCDQtNC+INGC0YDQsNGU0LrRgtC+0YDRltGXINC/0L7RiNGD0LrRgyDRgtCw0LHQu9C40YbRjiDQtNCw0L3QuNGFIGBtdGNhcnNgLCDRgyDRgNC+0LHQvtGH0L7QvNGDINC/0YDQvtGB0YLQvtGA0ZYg0LLQttC1INCx0YPQsiDQvtCx4oCZ0ZTQutGCINGW0Lcg0L3QsNC30LLQvtGOIGBtcGdgLiDQoyDQv9C+0LTRltCx0L3QuNGFINCy0LjQv9Cw0LTQutCw0YUg0L/QtdGA0LXQstCw0LPRgyDQvtGC0YDQuNC80YPRlCDQvtCx4oCZ0ZTQutGCLCDRj9C60LjQuSDQsdGD0LIg0YHRgtCy0L7RgNC10L3QuNC5INC/0LXRgNGI0LjQvCwg0LAg0YbQtSDQvdC1INGC0LUsINGH0L7Qs9C+INC80Lgg0YXQvtGC0ZbQu9C4LiDQmtC+0LzQsNC90LTQsCBgcGxvdCgpYCDQvdC1INCy0LjQutC+0L3Rg9GU0YLRjNGB0Y8sINGC0L7QvNGDINGJ0L4gYG1wZ2Ag0YLQtdC/0LXRgCDRgdC60LvQsNC00LDRlNGC0YzRgdGPINC3INGC0YDRjNC+0YUg0LXQu9C10LzQtdC90YLRltCyLCDQsCBgZGlzcGAg4oCTINC3IDMyINC10LvQtdC80LXQvdGC0ZbQsi4g0KTRg9C90LrRhtGW0ZcgYGF0dGFjaCgpYCDRliBgZGV0YWNoKClgINC90LDQudC60YDQsNGJ0LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INCyINC/0YDQvtGG0LXRgdGWINGA0L7QsdC+0YLQuCDQtyDQvtC00L3RltGU0Y4g0YLQsNCx0LvQuNGG0LXRjiDQtNCw0L3QuNGFLCDRliDQudC80L7QstGW0YDQvdGW0YHRgtGMINGC0L7Qs9C+LCDRidC+INGDINCy0LDRgSDQsdGD0LTQtSDQutGW0LvRjNC60LAg0L7QseKAmdGU0LrRgtGW0LIg0Lcg0L7QtNC90LDQutC+0LLQuNC80Lgg0ZbQvNC10L3QsNC80LgsINC80LDQu9CwLiDQoyDQsdGD0LTRjC3Rj9C60L7QvNGDINCy0LjQv9Cw0LTQutGDINC30LLQtdGA0YLQsNC50YLQtSDRg9Cy0LDQs9GDINC90LAg0L/QvtC/0LXRgNC10LTQttC10L3QvdGPINGJ0L7QtNC+INC80LDRgdC60YPQstCw0L3QvdGPINC+0LHigJnRlNC60YLRltCyINC+0LTQvdC+0LnQvNC10L3QvdC40LzQuCDQvtCx4oCZ0ZTQutGC0LDQvNC4IChgb2JqZWN0cyBhcmUgbWFza2VkYCk7INGW0L3RiNC40LzQuCDRgdC70L7QstCw0LzQuCwg0L7QseKAmdGU0LrRgtC4INGB0YLQsNGO0YLRjCDQvdC10LTQvtGB0YLRg9C/0L3QuNC80Lgg0LTQu9GPINCx0LXQt9C/0L7RgdC10YDQtdC00L3RjNC+0LPQviDQstC40LrQu9C40LrRgy4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQkNC70YzRgtC10YDQvdCw0YLQuNCy0L3QuNC5INC/0ZbQtNGF0ZbQtCDQv9C+0LvRj9Cz0LDRlCDRgyDQstC40LrQvtGA0LjRgdGC0LDQvdC90ZYg0YTRg9C90LrRhtGW0ZcgYHdpdGgoKWAuINCf0L7Qv9C10YDQtdC00L3RltC5INC/0YDQuNC60LvQsNC0INC80L7QttC90LAg0LfQsNC/0LjRgdCw0YLQuCDRgtCw0Lo6DQoNCmBgYHtyfQ0Kd2l0aChtdGNhcnMsIHsNCiAgc3VtbWFyeShtcGcsIGRpc3AsIHd0KQ0KICBwbG90KG1wZywgZGlzcCkNCiAgcGxvdChtcGcsIHd0KQ0KfSkNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCSINGG0YzQvtC80YMg0LLQuNC/0LDQtNC60YMg0LrQvtC80LDQvdC00Lgg0LLRgdC10YDQtdC00LjQvdGWINGE0ZbQs9GD0YDQvdC40YUg0LTRg9C20L7QuiDQvdCw0LvQtdC20LDRgtGMINGC0LDQsdC70LjRhtGWINC00LDQvdC40YUgYG10Y2Fyc2AuINCi0LXQv9C10YAg0L3QsNC8INC90LUg0LTQvtCy0LXQtNC10YLRjNGB0Y8g0L/RltC60LvRg9Cy0LDRgtC40YHRjyDQv9GA0L4g0LrQvtC90YTQu9GW0LrRgiDQvdCw0LfQsi4g0K/QutGJ0L4g0L/QvtGC0YDRltCx0L3QviDQstC40LrQvtC90LDRgtC4INGC0ZbQu9GM0LrQuCDQvtC00L3RgyDQutC+0LzQsNC90LTRgyAo0L3QsNC/0YDQuNC60LvQsNC0LCBgc3VtbWFyeShtcGcpYCksINGE0ZbQs9GD0YDQvdGWINC00YPQttC60Lgg0L3QtdC+0LHQvtCy4oCZ0Y/Qt9C60L7QstGWLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCe0LHQvNC10LbQtdC90L3RjyDRhNGD0L3QutGG0ZbRlyBgd2l0aCgpYCDQv9C+0LvRj9Cz0LDRlCDQsiDRgtC+0LzRgywg0YnQviDQstC+0L3QsCDQvdC1INC00ZbRlCDQt9CwINC80LXQttCw0LzQuCDRhNGW0LPRg9GA0L3QuNGFINC00YPQttC+0LouINCg0L7Qt9Cz0LvRj9C90LXQvNC+INGC0LDQutC40Lkg0L/RgNC40LrQu9Cw0LQ6DQoNCmBgYHtyfQ0Kd2l0aChtdGNhcnMsIHsNCiAgc3RhdHMgPC0gc3VtbWFyeShtcGcpDQogIHN0YXRzDQp9KQ0KYGBgDQoNCmBgYHtyfQ0Kc3RhdHMNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCv0LrRidC+INC/0L7RgtGA0ZbQsdC90L4g0YHRgtCy0L7RgNC40YLQuCDQvtCx4oCZ0ZTQutGC0LgsINGP0LrRliDQv9C10YDQtdCx0YPQstCw0YLQuNC80YPRgtGMINC/0L7Qt9CwINC60L7QvdGB0YLRgNGD0LrRhtGW0ZTRjiBgd2l0aCgpYCwg0LLQuNC60L7RgNC40YHRgtC+0LLRg9C50YLQtSDRgdC/0LXRhtGW0LDQu9GM0L3QuNC5INGB0LjQvNCy0L7QuyDQv9GA0LjRgdCy0L7RlNC90L3RjyBgPDwtYCDQt9Cw0LzRltGB0YLRjCDQt9Cy0LjRh9Cw0LnQvdC+0LPQviBgPC1gLiDQptC10Lkg0L/RgNC40LnQvtC8INC00L7Qt9Cy0L7Qu9C40YLRjCDQt9Cx0LXRgNC10LPRgtC4INGB0YLQstC+0YDQtdC90LjQuSDQvtCx4oCZ0ZTQutGCINGDINGA0L7QsdC+0YfQvtC80YMg0L/RgNC+0YHRgtC+0YDRliDQv9C+0LfQsCDQutC+0L3RgdGC0YDRg9C60YbRltGU0Y4gYHdpdGgoKWAuINCm0LUg0LzQvtC20L3QsCDQv9C+0LrQsNC30LDRgtC4INC90LAg0L/RgNC40LrQu9Cw0LTRliDRgtCw0LrQvtCz0L4g0L/RgNC+0LPRgNCw0LzQvdC+0LPQviDQutC+0LTRgzoNCg0KYGBge3J9DQp3aXRoKG10Y2Fycywgew0KICBub2tlZXBzdGF0cyA8LSBzdW1tYXJ5KG1wZykNCiAga2VlcHN0YXRzIDw8LSBzdW1tYXJ5KG1wZykNCn0pDQpgYGANCg0KYGBge3J9DQpub2tlZXBzdGF0cw0KYGBgDQoNCmBgYHtyfQ0Ka2VlcHN0YXRzDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQl9C00LXQsdGW0LvRjNGI0L7Qs9C+INGDINC/0L7RgdGW0LHQvdC40LrQsNGFINC3IFIg0YDQtdC60L7QvNC10L3QtNGD0ZTRgtGM0YHRjyDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0LggYHdpdGgoKWAsINCwINC90LUgYGF0dGFjaCgpYCwg0L/RgNC+0YLQtSDQstC40LHRltGAINC30LDQu9C10LbQuNGC0Ywg0LLRltC0INGW0L3QtNC40LLRltC00YPQsNC70YzQvdC40YUg0L/QtdGA0LXQstCw0LMg0ZYg0L/QvtCy0LjQvdC10L0g0pHRgNGD0L3RgtGD0LLQsNGC0LjRgdGPINC90LAg0YLQvtC80YMsINGH0L7Qs9C+INCy0Lgg0YXQvtGH0LXRgtC1INC00L7RgdGP0LPRgtC4Lg0KDQojIyPQndCw0LfQstC4INGA0Y/QtNC60ZbQsg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCjINC/0YDQuNC60LvQsNC00ZYg0Lcg0LTQsNC90LjQvNC4INC/0YDQviDRhdCy0L7RgNC40YUg0YHRgtC+0LLQv9C10YbRjCBgcGF0aWVudElEYCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNCy0YHRjyDQtNC70Y8g0L/QvtC30L3QsNGH0LXQvdC90Y8g0L7QutGA0LXQvNC40YUg0LvRjtC00LXQuSDRgyDQvdCw0LHQvtGA0ZYg0LTQsNC90LjRhS4g0JIgUiDQvdCw0LfQstC4INGA0Y/QtNC60ZbQsiDQvNC+0LbRg9GC0Ywg0LHRg9GC0Lgg0L/RgNC40LfQvdCw0YfQtdC90ZYg0Lcg0LTQvtC/0L7QvNC+0LPQvtGOINC/0LDRgNCw0LzQtdGC0YDQsCBgcm93bmFtZWAg0YTRg9C90LrRhtGW0Zcg0YHRgtCy0L7RgNC10L3QvdGPINGC0LDQsdC70LjRhtGWINC00LDQvdC40YUuINCd0LDQv9GA0LjQutC70LDQtCwg0L/RgNC+0LPRgNCw0LzQvdC40Lkg0LrQvtC0DQoNCmBgYHtyfQ0KcGF0aWVudGRhdGEgPC0gZGF0YS5mcmFtZShwYXRpZW50SUQsIGFnZSwgZGlhYmV0ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcm93Lm5hbWVzPXBhdGllbnRJRCkNCmBgYA0KDQrQv9GA0LjQt9C90LDRh9Cw0ZQgYHBhdGllbnRJRGAg0LfQvNGW0L3QvdGW0LksINGP0LrQsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0LjQvNC10YLRjNGB0Y8g0LTQu9GPINC/0L7Qt9C90LDRh9C10L3QvdGPINGA0Y/QtNC60ZbQsiDQv9GW0LQg0YfQsNGBINCy0LjQstC10LTQtdC90L3RjyDQtNCw0L3QuNGFINGWINGB0YLQstC+0YDQtdC90L3RjyDQtNGW0LDQs9GA0LDQvCDQsiBSLg0K