I. TÓM TẮT NỘI DUNG SÁCH

CHƯƠNG 1: MÔ HÌNH THỐNG KÊ (STATISTICAL MODELS)

1.1 Tổng quan

Mô hình Thống kê đóng vai trò là phần giới thiệu và đặt nền móng cho toàn bộ nội dung, đặc biệt là cho các Mô hình Tuyến tính Tổng quát (Generalized Linear Models - GLMs). Chương này giới thiệu ngôn ngữ, ký hiệu và các vấn đề quan trọng cần thiết cho việc xây dựng và hiểu các mô hình thống kê (previous summary).

1.2 Quy ước mô tả dữ liệu

Giới thiệu các quy ước để mô tả dữ liệu một cách toán học. Đồng thời giải thích cách các biến được đại diện và ký hiệu, bao gồm việc phân biệt giữa các loại biến khác nhau.

Giới thiệu các kí hiệu biến

Biến phản hồi (response variable): Là biến mà chúng ta muốn giải thích sự thay đổi của nó. Biến này thường được ký hiệu là \(y\). \(y_{i}\) ký hiệu giá trị của biến phản hồi cho quan sát thứ \(i\).

Biến giải thích (explanatory variables): Là các biến được sử dụng để giải thích sự thay đổi của biến phản hồi. Chúng còn có thể được gọi bằng nhiều tên khác như biến độc lập, biến dự báo, hoặc yếu tố (factors) và covariate. Các biến giải thích được ký hiệu truyền thống là \(x\). \(x_{ji}\) ký hiệu giá trị của biến giải thích thứ \(j\) cho quan sát thứ \(i\). Số lượng biến giải thích được ký hiệu là \(p\).

Biến định lượng (quantitative explanatory variables) và biến định tính (qualitative explanatory variables): Các biến giải thích định lượng được gọi là covariates, còn các biến giải thích định tính được gọi là factors. LLưu ý rằng các biến không phải là số (biến định tính) cần được mã hóa thành định dạng số để sử dụng trong mô hình thống kê (chi tiết được trình bày trong Phần 1.4).

Kích thước mẫu (sample size): Thường được ký hiệu là n.

Tham số hồi quy (regression parameters): Đây là các hệ số chưa biết trong mô hình, thường được ký hiệu là \(β_{j}\) (ví dụ: \(β_{0}\), \(β_{1}\), …, \(β_{p}\)). Số lượng tham số hồi quy được ký hiệu là \(p'\). Nếu mô hình có thêm hệ số chặn \(β_{0}\) (gần như luôn luôn có), thì \(p' = p + 1\).

Giá trị kỳ vọng của biến phản hồi: Được ký hiệu là \(\mu= E[yi]\).

Giới thiệu Thành phần Hệ thống và Thành phần Ngẫu nhiên

Thành phần hệ thống (systematic component): Mô tả mối quan hệ toán học giữa giá trị trung bình \((\mu_{i})\) của biến phản hồi và các giá trị của các biến giải thích.

Thành phần ngẫu nhiên (random component): Mô tả sự biến thiên (phân phối) của các giá trị biến phản hồi xung quanh giá trị trung bình \((\mu_{i})\) cho một tập hợp các giá trị biến giải thích nhất định.

Ví dụ:

Bộ dữ liệu lungcap: Nguồn gốc: Dữ liệu từ một nghiên cứu trên 654 thanh thiếu niên ở East Boston về mối quan hệ giữa dung tích thở sức ép (Forced Expiratory Volume - FEV) và tình trạng hút thuốc, tuổi, chiều cao, và giới tính. Các biến: Biến phản hồi \((y)\): FEV (đo bằng lít). Biến giải thích \((x)\): Tuổi (Age, \(x_{1}\)), Chiều cao (Height, \(x_{2}\)), Giới tính (Gender, \(x_{3}\)), và Tình trạng hút thuốc (Smoking status, \(x_{4}\)). Kích thước mẫu (n): 654 quan sát (mỗi hàng trong bảng dữ liệu tương ứng với một thanh thiếu niên). Cấu trúc dữ liệu trong R: Phần này cũng giới thiệu cách xem cấu trúc dữ liệu (str()) và tóm tắt dữ liệu (summary()) trong R, cho thấy các biến Tuổi và Hút thuốc là kiểu số nguyên (integers), FEV và Chiều cao là số (numerical), còn Giới tính là một yếu tố (factor) với 2 cấp độ (“F”, “M”). Điều này minh họa trực tiếp sự phân biệt giữa biến định lượng và định tính. ◦ Sách sử dụng dữ liệu này để minh họa khái niệm thành phần hệ thống và ngẫu nhiên, và giới thiệu một mô hình hồi quy tuyến tính có thể có cho dữ liệu này, bao gồm các tham số \(β_{0}\), \(β_{1}\), \(β_{2}\), \(β_{3}\), \(β_{4}\)

1.3 Trực quan hóa dữ liệu

Mục tiêu của việc trực quan hóa dữ liệu là nhấn mạnh tầm quan trọng. Việc tạo ra các biểu đồ đơn giản cho phép người phân tích khám phá cấu trúc của dữ liệu, nhận diện các mối quan hệ tiềm năng giữa các biến phản hồi và biến giải thích, và phát hiện các đặc điểm bất thường (như ngoại lai, xu hướng phi tuyến tính, sự biến thiên không đều). Đây là bước không thể thiếu để chuẩn bị cho việc xây dựng và kiểm tra các mô hình thống kê sau này.

Vẽ biểu đồ mối quan hệ giữa biến phản hồi và biến giải thích: Kỹ thuật chính là sử dụng biểu đồ điểm (scatter plot). Ví dụ điển hình là vẽ FEV theo Age và Height từ bộ dữ liệu lungcap để quan sát xu hướng. Hàm plot() trong R là công cụ được sử dụng cho mục đích này, thường kết hợp với cú pháp formula \((y \sim x)\) và chỉ định dữ liệu \((data =)\).

Kết hợp biến định tính vào biểu đồ: Để hiểu ảnh hưởng của các biến định tính (factors) như Smoke (hút thuốc/không hút thuốc) hoặc Gender (giới tính), tác giả chỉ ra cách vẽ dữ liệu cho từng nhóm riêng biệt hoặc, hiệu quả hơn, sử dụng các ký hiệu (plotting characters - pch) khác nhau trên cùng một biểu đồ để phân biệt các nhóm. Hàm ifelse() trong R có thể được dùng để gán pch dựa trên giá trị của biến định tính. Việc bổ sung chú giải (legend()) là cần thiết để giải thích các ký hiệu này.

Sử dụng Boxplot: Biểu đồ hộp (boxplot()) được giới thiệu như một cách hiệu quả để so sánh phân bố của biến phản hồi giữa các nhóm được định nghĩa bởi một hoặc nhiều biến định tính (ví dụ: FEV theo Gender và Smoke).

Xử lý vấn đề Overplotting: Khi có nhiều điểm dữ liệu có cùng giá trị (thường xảy ra với dữ liệu đếm), các điểm này sẽ bị chồng lên nhau trên biểu đồ, gây khó khăn trong việc quan sát sự phân bố. Mục này giới thiệu hàm jitter() trong R để thêm một lượng nhiễu nhỏ ngẫu nhiên vào các giá trị, giúp các điểm bị chồng được nhìn rõ hơn. Ví dụ sử dụng bộ dữ liệu nminer minh họa kỹ thuật này.

Giới thiệu các hàm R cơ bản: Xuyên suốt mục này, các đoạn mã R cụ thể được cung cấp để minh họa cách tạo các biểu đồ, bao gồm plot(), legend(), boxplot(), subset(), và jitter(). Tác giả cũng đề cập đến các tham số đồ họa hữu ích như las, ylim, xlim, xlab, ylab, main, pch để tùy chỉnh biểu đồ.

1.4 Mã hóa biến phân loại (Coding for factors)

Mục này đưa ra giải thích cho cách biểu diễn các biến phân loại, vốn là dữ liệu không có sẵn dạng số (như giới tính, tình trạng hút thuốc, loại điều trị…), sang dạng số (numerical). Việc này là cần thiết để các biến phân loại có thể được đưa vào và xử lý trong các mô hình thống kê, đặc biệt là mô hình hồi quy tuyến tính, vốn làm việc với dữ liệu có cấu trúc số.

Lược đồ mã hóa (Coding Schemes): Đây là kỹ thuật chính để chuyển đổi biến định tính thành biến số. Giáo trình tập trung vào một phương pháp mã hóa tiêu chuẩn cho các mô hình hồi quy

Mã hóa xử lý (treatment coding): Đây là phương pháp mã hóa phổ biến và được sử dụng mặc định trong R.Trong kiểu mã hóa này, một trong các cấp độ của biến định tính được chọn làm mức tham chiếu (reference level). Các cấp độ còn lại được biểu diễn bằng các biến giả (dummy variables), thường có giá trị 0 hoặc 1. Biến giả có giá trị 1 nếu quan sát thuộc cấp độ đó, và 0 nếu không. Mức tham chiếu sẽ có tất cả các biến giả tương ứng bằng 0.

Diễn giải các hệ số hồi quy: Giải thích rằng, khi sử dụng mã hóa kiểu Treatment, hệ số (parameter estimate - \(\beta\)) gắn với mỗi biến giả biểu thị sự khác biệt ước lượng về giá trị trung bình của biến phản hồi (trên thang đo của hàm liên kết hoặc trên thang đo gốc tùy thuộc vào mô hình và hàm liên kết) giữa cấp độ tương ứng với biến giả đó và mức tham chiếu, sau khi đã điều chỉnh cho ảnh hưởng của các biến giải thích khác trong mô hình. Ví dụ, trong mô hình cho log(FEV), hệ số cho Smoke (-0.04607) cho thấy sự thay đổi (giảm) trung bình của \(log(FEV)\) khi chuyển từ nhóm không hút thuốc (mức tham chiếu) sang nhóm hút thuốc, giả định các biến khác (tuổi, chiều cao, giới tính) không đổi. Trên thang đo gốc của FEV, điều này được diễn giải là một sự thay đổi theo hệ số nhân (factor) (ví dụ: \(exp(-0.04607) = 0.9550\) lần).

Tác giả cũng chỉ ra rằng tồn tại nhiều loại mã hóa khác nhau cho biến phân loại, và mỗi loại có thể mang lại cách diễn giải khác nhau. Do đó, điều quan trọng là phải làm rõ định nghĩa của các biến giả được sử dụng trong bất kỳ phân tích nào. Mục này cũng liên quan đến cách R xử lý biến phân loại, thông qua việc nhận diện tự động các biến không số hoặc yêu cầu sử dụng hàm factor() để đảm bảo xử lý đúng.

1.5 Mô hình thống kê mô tả cả yếu tố ngẫu nhiên và hệ thống của dữ liệu

Mô hình thống kê được xây dựng để mô tả hai khía cạnh chính:

Thành phần ngẫu nhiên (Random component)

Tại mỗi tổ hợp cụ thể của các biến đầu vào (ví dụ: chiều cao, tuổi, giới tính, tình trạng hút thuốc), giá trị fev ghi nhận có thể thay đổi — tạo thành một phân phối xác suất. Mô hình cho phân phối này chính là thành phần ngẫu nhiên của mô hình thống kê.

Thành phần hệ thống (Systematic component)

Tại mỗi tổ hợp của biến đầu vào, giá trị kỳ vọng (mean) của fev được biểu diễn bằng một hàm toán học liên hệ với các biến giải thích.

Ví dụ đơn giản: \[ \mu_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + \beta_3 x_{3i} + \beta_4 x_{4i} \] trong đó \(\mu_i = E[y_{i}]\) là kỳ vọng của fev tại quan sát thứ \(i\), \(x_{1}\) là tuổi, \(x_{2}\) là chiều cao, còn \(x_{3}\)\(x_{4}\) là các biến giả (dummy) đại diện cho giới tính và tình trạng hút thuốc. Tuy nhiên, mối quan hệ thực tế có thể phi tuyến hoặc phức tạp hơn, nên mô hình tuyến tính đơn giản có thể chưa phù hợp.

Mô hình phân phối của sai số

Một giả định phổ biến là: \[ y_i \sim N(\mu_i, \sigma^2) \] Tuy nhiên, với dữ liệu dung tích phổi, phương sai có thể tăng theo fev, nên giả định này có thể không phù hợp.

1.6 Regression models (mô hình hồi quy)

Đây là loại mô hình đóng vai trò trung tâm trong toàn bộ giáo trình. Mục tiêu là làm rõ cách mô hình hồi quy biểu diễn mối quan hệ có hệ thống (systematic feature) trong dữ liệu bằng một công thức toán học, dựa trên mối liên hệ giữa biến phản hồi (response) và các biến giải thích (explanatory variables).

Khái niệm

Mô hình hồi quy giả định giá trị trung bình kỳ vọng (\(E[y_i]\) hay \(μ_i\)) của biến phản hồi cho quan sát thứ \(i\) phụ thuộc vào các biến giải thích (\(x_{1i}, \dots, x_{pi}\)) thông qua một hàm \(f\) và một tập hợp các tham số hồi quy (\(β_0, β_1, \dots, β_q\)). Công thức tổng quát là: \[E[y_i] = μ_i = f(x_{1i}, \dots, x_{pi}; β_0, β_1, \dots, β_q)\].

Hàm \(f\) là tuyến tính theo tham số (linear in the parameters). Điều này là đặc điểm quan trọng, phân biệt loại mô hình này với các mô hình phi tuyến hoàn toàn. Ngay cả khi mối quan hệ với biến \(x\) không tuyến tính (ví dụ: chứa \(x^2\) hoặc \(\log(x)\)), nếu nó có thể viết dưới dạng tổng có trọng số của các hàm của \(x\) với trọng số là \(β\), thì nó vẫn tuyến tính theo tham số.

Hai dạng cấu trúc thành phần hệ thống cụ thể được giới thiệu:

Mô hình Hồi quy Tuyến tính (Linear Regression Models): Thành phần hệ thống là tổng tuyến tính trực tiếp của các biến giải thích và tham số: \[μ_i = β_0 + β_1x_{1i} + \dots + β_px_{pxi}\] Các mô hình này giả định phương sai không đổi cho phần ngẫu nhiên.

Mô hình Tuyến tính Tổng quát (Generalized Linear Models - GLMs): Thành phần hệ thống được liên kết với giá trị trung bình \(μ_i\) thông qua một hàm liên kết \(g\), sao cho \[g(μ_i) = β_0 + β_1x_{1i} + \dots + β_px_{pxi}\] Đây là lớp mô hình tổng quát hơn.

Các quy ước ký hiệu về số lượng biến giải thích (\(p\)) và số lượng tham số (\(p'\), thường là \(p+1\)) cũng được thiết lập.

1.7 Interpreting Regression Models (Diễn giải mô hình hồi quy)

Diễn giải mô hình hồi quyquy nhằm mục đích giúp người đọc hiểu được mối quan hệ có hệ thống (systematic relationship) mà mô hình biểu diễn giữa biến phản hồi và các biến giải thích, đặc biệt là ý nghĩa của các tham số (hệ số) hồi quy trong mô hình.

Giải thích rõ các thành phần của hệ thống: \[E[y_i] = μ_i = f(x_{1i}, \dots, x_{pi}; β_0, β_1, \dots, β_q)\] mô tả sự thay đổi của giá trị trung bình kỳ vọng (\(μ_i\)) của biến phản hồi khi các biến giải thích thay đổi.

Nhấn mạnh rằng cách diễn giải phụ thuộc vào dạng hàm \(f\) được sử dụng, tức là mối liên hệ giữa các biến giải thích (hoặc tổ hợp tuyến tính của chúng) và giá trị trung bình của biến phản hồi. Đối với các mô hình tuyến tính theo tham số (đặc biệt là Mô hình Hồi quy Tuyến tính thông thường), ý nghĩa của các hệ số \(β_j\) được diễn giải là sự thay đổi trung bình của biến phản hồi khi biến giải thích tương ứng \(x_j\) thay đổi một đơn vị, giữ nguyên các biến khác.

Đối với Mô hình Tuyến tính Tổng quát (GLMs), do sử dụng hàm liên kết \(g\) (\(g(μ_i) = \beta_0 + \beta_1x_{1i} + \dots\)), việc diễn giải các hệ số \(β_j\) không trực tiếp là sự thay đổi của \(μ_i\) mà là sự thay đổi trên thang đo của hàm liên kết. Điều này có thể dẫn đến việc diễn giải các đại lượng khác như tỷ lệ chênh (odds ratio) trong mô hình logit, hoặc liên quan đến các biến đổi (transformation) của biến phản hồi như logarit.

Tầm quan trọng của việc diễn giải mô hình trong ngữ cảnh và giới hạn của dữ liệu được nhấn mạnh, bao gồm sự phân biệt giữa mối quan hệ tương quan (association) và quan hệ nhân quả (causality), cũng như khả năng suy rộng của mô hình.

1.8 All Models Are Wrong, but Some Are Useful

All Models Are Wrong, but Some Are Usefullà một tư tưởng quan trọng trong thống kê, bắt nguồn từ câu nói nổi tiếng của nhà thống kê George Box. Nội dung này nhấn mạnh rằng: “Không có mô hình nào hoàn toàn đúng trong việc mô tả thực tế một cách tuyệt đối, nhưng một số mô hình vẫn có thể hữu ích trong việc hiểu, dự đoán hoặc ra quyết định.”

Chúng là các xấp xỉ (approximations) của thực tế, không phải là sự mô tả hoàn hảo. Dựa trên câu trích dẫn nổi tiếng của Box và Draper, mục tiêu là giúp người đọc hiểu rằng dù các mô hình có thể không hoàn toàn đúng (Wrong), nhưng chúng vẫn hữu ích (useful) cho mục đích phân tích dữ liệu và đưa ra kết luận. Nó đặt nền móng cho việc đánh giá mô hình sau này bằng cách nhấn mạnh sự cần thiết phải luôn nhận thức được tính xấp xỉ của chúng.

Vai trò trong thực hành mô hình hóa: Việc chấp nhận rằng mô hình là xấp xỉ nhưng có thể hữu ích định hình toàn bộ quá trình làm việc với mô hình thống kê. Nó là động lực để: Thực hiện chẩn đoán mô hình (model diagnostics) (,,,): Kiểm tra xem mô hình xấp xỉ thực tế tốt đến mức nào, phát hiện các sai lệch so với giả định, và xác định những điểm dữ liệu có ảnh hưởng lớn. Đây là bước thiết yếu vì chúng ta biết mô hình có thể sai.

Xem xét chuyển đổi biến (variable transformations) (,,): Nếu các chẩn đoán cho thấy mô hình hiện tại chưa phải là xấp xỉ tốt, việc biến đổi biến phản hồi hoặc biến giải thích có thể giúp mối quan hệ dữ liệu phù hợp hơn với cấu trúc mô hình được giả định (ví dụ: tuyến tính, phân phối chuẩn cho sai số), làm cho mô hình trở nên hữu ích hơn (,).

Lựa chọn họ phân phối (distribution family) và hàm liên kết (link function) phù hợp trong GLMs (,,): Khung GLM cho phép chúng ta chọn các giả định về phân phối của thành phần ngẫu nhiên sao cho phù hợp với bản chất của dữ liệu phản hồi (ví dụ: Binomial cho tỷ lệ, Poisson cho đếm, Gamma cho dữ liệu liên tục dương, Tweedie cho dữ liệu có nhiều số 0,). Việc lựa chọn đúng giúp mô hình trở thành một xấp xỉ hữu ích hơn cho cấu trúc biến thiên trong dữ liệu.

1.9 Mục đích của một mô hình thống kê ảnh hưởng đến cách nó được xây dựng: Dự báo (Prediction) hay Diễn giải (Interpretation)

Mục tiêu chính của phần này là làm rõ rằng việc xây dựng mô hình thống kê không chỉ là một bài toán kỹ thuật mà còn phụ thuộc vào mục đích sử dụng cuối cùng của mô hình đó. Nó giúp người đọc hiểu tại sao các mô hình có thể được phát triển theo những cách khác nhau tùy thuộc vào mục tiêu cụ thể của nghiên cứu hoặc ứng dụng.

Tác giả nhấn mạnh rằng vai trò chung của mô hình thống kê là biểu diễn chính xác các đặc điểm hệ thống và ngẫu nhiên quan trọng của dữ liệu. Tuy nhiên, đối với mô hình hồi quy, có hai động lực chính để phát triển chúng:

Dự đoán (Prediction): Mục tiêu là tạo ra các dự đoán chính xác cho dữ liệu mới hoặc dữ liệu trong tương lai. Khi mục đích chính là dự đoán, bất kỳ biến dự báo nào giúp cải thiện độ chính xác của dự đoán đều có thể được đưa vào mô hình, ngay cả khi mối quan hệ nhân quả giữa biến dự báo và biến đáp ứng không rõ ràng hoặc hệ số hồi quy có độ bất định tương đối cao.

Hiểu và diễn giải (Understanding and interpretation): Mục tiêu là hiểu mối quan hệ giữa các biến. Đối với mục đích này, kích thước và ý nghĩa thống kê của các hệ số hồi quy rất được quan tâm. Ví dụ, trong nghiên cứu về dung tích phổi (FEV) và hút thuốc, mục đích có thể là hiểu xem hút thuốc có ảnh hưởng (có khả năng nhân quả) đến FEV hay không.

Phần này làm nổi bật sự khác biệt trong cách tiếp cận xây dựng mô hình dựa trên hai mục đích này. Mô hình cho mục đích diễn giải cần các tham số ước lượng đáng tin cậy và có sự hỗ trợ tốt từ dữ liệu. Ngược lại, mô hình cho mục đích dự đoán có thể bao gồm nhiều biến hơn để tối ưu hóa khả năng dự báo, ngay cả khi sự giải thích chi tiết không phải là ưu tiên hàng đầu.

1.10 Độ chính xác và Tính đơn giản

Phần này giới thiệu và thảo luận về các tiêu chí quan trọng dùng để đánh giá và lựa chọn mô hình thống kê. Nó giúp người học hiểu rằng việc xây dựng mô hình không chỉ là việc tìm ra một công thức toán học biểu diễn dữ liệu, mà còn cần cân nhắc đến chất lượng và tính hữu ích của mô hình đó trong thực tế. Đặt nền móng cho việc hiểu nguyên tắc cân bằng khi phát triển mô hình.

Đối với bất kỳ tập dữ liệu nào, thường có rất nhiều thành phần hệ thống và thành phần ngẫu nhiên khác nhau có thể được lựa chọn để xây dựng mô hình. Việc lựa chọn có thể dựa trên lý thuyết nền hoặc hiểu biết về đặc điểm vật lý của vấn đề. Tuy nhiên, nhìn chung, một mô hình thống kê được coi là phù hợp (adequate) khi nó đạt được sự cân bằng giữa hai tiêu chí sau:

Accuracy (Độ chính xác): Mô hình cần mô tả chính xác cả thành phần hệ thống (xu hướng trung bình) và thành phần ngẫu nhiên (biến thiên xung quanh xu hướng đó) của dữ liệu.

Parsimony (Tính cô đọng/Đơn giản): Mô hình nên càng đơn giản càng tốt.

Tác giả giới thiệu nguyên lý Parsimony, còn được gọi là Occam’s Razor, trong ngữ cảnh thống kê: mô hình đơn giản nhất nhưng vẫn chính xác và không mâu thuẫn với dữ liệu là mô hình được ưu tiên. Cảnh báo về những rủi ro khi mô hình quá đơn giản (không mô tả dữ liệu tốt) hoặc quá phức tạp. Một mô hình quá phức tạp có thể khớp rất tốt với dữ liệu đang có (độ chính xác cao trên dữ liệu huấn luyện), nhưng lại không tổng quát hóa tốt (generalize well) cho các tập dữ liệu mới. Hiện tượng này được gọi là over-fitting. Ví dụ 1.7 và Hình 1.6 minh họa trực quan sự khác biệt giữa mô hình quá đơn giản (linear), mô hình over-fitting (10th order polynomial), và một mô hình cân bằng hơn (cubic).

1.11 Thí nghiệm so với Nghiên cứu quan sát: Nhân quả và Tương quan

Thí nghiệm so với Nghiên cứu quan sát: Nhân quả và Tương quan giúp người học nhận thức và hiểu rõ sự khác biệt quan trọng giữa suy luận về mối liên hệ (association) và suy luận về quan hệ nhân quả (causality) khi phân tích dữ liệu bằng mô hình thống kê. Phần này nhấn mạnh rằng phương pháp thu thập dữ liệu có ảnh hưởng sâu sắc đến loại kết luận khoa học hoặc thực tiễn mà chúng ta có thể rút ra từ mô hình đã xây dựng.

Hai phương pháp thu thập dữ liệu chính và ảnh hưởng của chúng đối với khả năng suy luận nhân quả:

Nghiên cứu quan sát (Observational Studies): Trong các nghiên cứu này, các nhà nghiên cứu chỉ đơn thuần quan sát các quá trình tồn tại sẵn mà không can thiệp hay kiểm soát các biến giải thích (explanatory variables). Dù có thể sử dụng thiết bị phức tạp hay bảng hỏi kỹ lưỡng, người nghiên cứu không tác động lên quá trình đang được quan sát. Kết luận từ nghiên cứu quan sát thường chỉ cho phép nói về mối liên hệ (associations) giữa các biến, chứ không phải quan hệ nhân quả (cause-and-effect). Việc sử dụng dữ liệu quan sát đơn thuần thường không đủ để xác nhận kết luận nhân quả, ngay cả khi mối quan hệ đó thực sự là nhân quả. Trong các nghiên cứu quan sát, việc đo lường và hiệu chỉnh ảnh hưởng của các biến ngoại lai (extraneous variables) khác là rất quan trọng để hiểu được mối liên hệ của biến quan tâm.

Thực nghiệm (Designed Experiments): Trong một thực nghiệm được thiết kế, các nhà nghiên cứu can thiệp để kiểm soát giá trị của các biến giải thích. Đặc điểm phân biệt là khả năng của nhà nghiên cứu quyết định điều kiện thử nghiệm nào được áp dụng cho từng đối tượng. Một thực nghiệm ngẫu nhiên (randomized experiment) được thiết kế tốt cho phép suy luận về mối quan hệ nhân quả giữa các biến giải thích và biến đáp ứng. Mặc dù các mô hình thống kê xử lý dữ liệu từ cả hai loại nghiên cứu theo cách tương tự và các kết luận thống kê có thể trông giống nhau bề ngoài, kết luận khoa học từ thực nghiệm thường mạnh mẽ hơn nhiều.

1.12 Thu thập dữ liệu và khả năng khái quát hóa kết quả

Nội dung chính của mục này là để nhấn mạnh tầm quan trọng của phương pháp thu thập dữ liệu đối với phạm vi áp dụng của các kết luận thống kê được rút ra từ một mô hình. Sau khi thảo luận về việc xây dựng và diễn giải mô hình, phần này hướng dẫn người học xem xét kết quả mô hình có thể được suy rộng (generalize) đến quần thể nào ngoài tập dữ liệu đã phân tích. Nó giúp người học hiểu rằng kết quả từ một mô hình chỉ có ý nghĩa trong một ngữ cảnh nhất định, được xác định bởi cách thức và nguồn gốc của dữ liệu.

Thảo luận về phương pháp và thiết kế thu thập dữ liệu (ví dụ, loại mẫu, cách chọn đối tượng) và ảnh hưởng của chúng đến tính đại diện của tập dữ liệu. Câu nói được trích dẫn trong nguồn - “người ta nói rằng thu thập dữ liệu giống như thu gom rác: trước khi thu gom, bạn nên hình dung xem bạn sẽ làm gì với nó” - ngụ ý mạnh mẽ rằng mục đích phân tích phải định hướng quá trình thu thập dữ liệu, và ngược lại, cách dữ liệu được thu thập sẽ xác định những gì có thể được làm với nó.

Giới thiệu và làm rõ khái niệm Generalizability (Khả năng suy rộng/Khái quát hóa). Đây là khả năng áp dụng kết quả phân tích (tức là mô hình hoặc các kết luận từ mô hình) cho một quần thể lớn hơn hoặc các tình huống khác ngoài tập dữ liệu cụ thể đã được sử dụng để xây dựng mô hình.

Giải thích rằng các mô hình thống kê được xây dựng từ một tập dữ liệu chỉ có thể được suy rộng một cách đáng tin cậy đến quần thể mà dữ liệu đó đại diện. Nếu dữ liệu được thu thập từ một mẫu ngẫu nhiên của một quần thể cụ thể, kết quả có thể suy rộng cho quần thể đó. Nếu dữ liệu chỉ là một tập hợp thuận tiện hoặc từ một nghiên cứu quan sát không được thiết kế để đại diện cho bất kỳ quần thể nào, khả năng suy rộng sẽ bị hạn chế nghiêm trọng. Câu hỏi trong Phần Problem 1.7 trực tiếp hỏi về việc xác định quần thể có thể suy rộng kết quả đến, củng cố giả định về nội dung này.

1.13 Sử dụng R để xây dựng mô hình thống kê

R như là công cụ thực hành chính sẽ được sử dụng xuyên suốt giáo trình để xây dựng, phân tích và diễn giải các mô hình thống kê. Sau khi trình bày các khái niệm nền tảng và lý thuyết về mô hình, phần này nhằm mục đích kết nối lý thuyết với thực hành, giúp sinh viên làm quen với môi trường phần mềm sẽ dùng để áp dụng kiến thức đã học.

Nội dung chính bao gồm:

  • Giới thiệu R như một ngôn ngữ và môi trường cho tính toán thống kê.

  • Trình bày một cách tổng quan về cách R sẽ được sử dụng để minh họa và áp dụng các khái niệm mô hình thống kê đã thảo luận trong Chương 1.

  • Có thể bao gồm các ví dụ hoặc hướng dẫn R cơ bản nhất liên quan đến các chủ đề của Chương 1, chẳng hạn như cách tải dữ liệu, thực hiện các phép tính thống kê đơn giản, hoặc tạo các biểu đồ dữ liệu cơ bản đã được đề cập (ví dụ như trong Problem 1.7).

  • Nhấn mạnh rằng R sẽ là nền tảng kỹ thuật để triển khai các kỹ thuật mô hình hóa phức tạp hơn được giới thiệu trong các chương sau.

1.14 Tổng kết

Mục tiêu chính của mục này là tóm tắt lại các khái niệm và ý tưởng cốt lõi đã được trình bày trong toàn bộ Chương 1. Nó nhằm củng cố lại kiến thức nền tảng về mô hình thống kê nói chung và các khía cạnh quan trọng cần cân nhắc khi bắt đầu nghiên cứu về mô hình, giúp người học hệ thống hóa lại các điểm chính đã học.

Dựa trên các tiêu đề của các mục trước đó trong Chương 1, nội dung chính của phần tóm tắt này có khả năng bao gồm:

  • Nhắc lại khái niệm cơ bản về mô hình thống kê, đặc biệt là việc mô tả cả thành phần có hệ thống (systematic) và ngẫu nhiên (random) của dữ liệu.

  • Tóm lược về mô hình hồi quy (regression models) và cách diễn giải chúng.

  • Nhấn mạnh triết lý “All Models Are Wrong, but Some Are Useful” và tầm quan trọng của việc xác định mục đích của mô hình.

  • Đề cập đến hai tiêu chí đánh giá mô hình: độ chính xác (accuracy) và tính cô đọng/tiết kiệm tham số (parsimony).

  • Nhấn mạnh sự khác biệt giữa nghiên cứu thực nghiệm (experiments) và quan sát (observational studies), cũng như khả năng suy luận về nhân quả (causality) so với liên hệ (association).

  • Tóm tắt tầm quan trọng của thu thập dữ liệu (data collection) và khái niệm khả năng suy rộng/khái quát hóa (generalizability) của kết quả mô hình.

  • Nhắc lại việc giới thiệu R như công cụ chính sẽ được sử dụng cho mô hình thống kê trong sách.

CHƯƠNG 2: MÔ HÌNH HỒI QUY TUYẾN TÍNH (Linear Regression Models)

2.1 Giới thiệu tổng quan

Giới thiệu tổng quan về chủ đề trọng tâm của Chương 2 là Mô hình Hồi quy Tuyến tính (Linear Regression Models). Phần giới thiệu đặt nền tảng cho việc khám phá chi tiết về cấu trúc, ước lượng, suy luận và lựa chọn mô hình hồi quy tuyến tính trong các mục tiếp theo của chương. Đây là bước khởi đầu cho một phần giới thiệu sâu sắc về hồi quy tuyến tính, phù hợp cho những người đã có kiến thức thống kê cơ bản. Chương 2 sẽ đi sâu vào định nghĩa chính thức của Mô hình Hồi quy Tuyến tính. Nội dung này báo trước rằng chương sẽ trình bày các phương pháp ước lượng tham số của mô hình, cách thực hiện suy luận thống kê (như kiểm định giả thuyết và khoảng tin cậy), và các chiến lược để so sánh và lựa chọn mô hình phù hợp. Phần này cũng có thể nhấn mạnh việc sử dụng phần mềm R làm công cụ thực hành xuyên suốt chương.

2.2 Mô hình hồi quy tuyến tính (Linear Regression Models Defined)

Mô hình Hồi quy tuyến tính được trình bày rõ ràng cấu trúc toán học và các giả định cơ bản. Mục này được đặt ra để cung cấp cho người đọc một hiểu biết vững chắc về nền tảng của mô hình tuyến tính, đặc biệt là việc xác định hai thành phần cốt lõi của nó: thành phần hệ thống (systematic component) và thành phần ngẫu nhiên (random component).

Định nghĩa Mô hình:

Mô hình Hồi quy Tuyến tính được sử dụng để mô hình hóa dữ liệu với một biến phản hồi y và p biến giải thích \(x_1\), …, \(x_p\). Mô hình này bao gồm hai thành phần quen thuộc (hệ thống và ngẫu nhiên), nhưng với các hình thức cụ thể.

Thành phần Hệ thống: Giả định rằng kỳ vọng của biến phản hồi cho mỗi quan sát \(i\), \(E[y_i] = \mu_i\), có mối quan hệ tuyến tính với các tham số \(β\) và các biến giải thích \(x\). Công thức tổng quát của thành phần hệ thống là: \[\mu_i = β_0 + β_{1}x_{1i} + ... + β_{p}x_{pi}\].

\(β_0, β_1, ..., β_p\) là các tham số hồi quy chưa biết cần được ước lượng từ dữ liệu.

\(β_0\) thường được gọi là hệ số chặn (intercept).

\(p\) biến giải thích và \(p'\) tham số hồi quy (\(p' = p + 1\) nếu có hệ số chặn \(β_0\)).

Thành phần Ngẫu nhiên: Giả định rằng các biến phản hồi \(y_i\) có phương sai không đổi \(σ²\). Hoặc, phương sai có thể tỷ lệ với các trọng số ưu tiên (prior weights) \(w_i\) đã biết và dương, tức là \(var[yi] = \frac {σ²}{w_i}\). Trọng số \(w_i\) được coi là đã biết. Phương sai \(σ²\) là một tham số chưa biết cần được ước lượng. Các biến phản hồi \(y\) được giả định là độc lập với nhau.

Công thức tổng quát: Kết hợp hai thành phần, mô hình hồi quy tuyến tính có dạng:

\[\left\{ \begin{array}{l} {μ_i = β_0 + \sum_{j = 1}^{p} β_j x_{ji}} \\ {var[y_i] = \frac {σ²}{w_i}} \end{array} \right. \]

với \(E[y_i] = μ_i\)

Các Trường hợp Đặc biệt:

  • Hồi quy tuyến tính đơn giản (Simple linear regression): Là trường hợp khi có một biến giải thích duy nhất (p = 1).

Hồi quy tuyến tính thông thường (Ordinary linear regression): Là trường hợp khi tất cả các trọng số ưu tiên \(w_ i\) đều bằng một.

Các Giả định Cốt lõi: Các giả định cần thiết để thiết lập Mô hình bao gồm:

  • Sự phù hợp (Suitability): Cùng một mô hình hồi quy phù hợp cho tất cả các quan sát.

  • Tính tuyến tính (Linearity): Mối quan hệ thực sự giữa μ và mỗi biến giải thích định lượng là tuyến tính.

  • Phương sai không đổi (Constant variance): Phần chưa biết của phương sai (σ²) là không đổi.

  • Tính độc lập (Independence): Các biến phản hồi y độc lập với nhau.

Ví dụ minh họa:

Ví dụ 2.1 (Dữ liệu thai kỳ - Gestation data): Tài liệu sử dụng dữ liệu về cân nặng trung bình khi sinh (y) và tuổi thai (x) để minh họa. Mặc dù chi tiết ước lượng được trình bày sau, mục này giới thiệu dữ liệu và cách sử dụng các hàm R cơ bản như library(), data(), str(), summary() để khám phá dữ liệu. Hình 2.1 minh họa một mô hình hồi quy tuyến tính đơn giản (với trọng số wi=1), thể hiện các điểm dữ liệu, đường thẳng biểu diễn thành phần hệ thống (μ), và các đường gạch ngang/mũi tên biểu thị sự biến thiên xung quanh đường thẳng (thành phần ngẫu nhiên), nhấn mạnh giả định phương sai xấp xỉ không đổi.

2.3 Simple Linear Regression (Hồi quy tuyến tính đơn)

Định nghĩa Mô hình Hồi quy Tuyến tính Đơn

Mô hình hồi quy tuyến tính đơn bao gồm hai thành phần đặc trưng:

Thành phần ngẫu nhiên (Random component): Giả định rằng biến phản hồi \(y_i\) có phương sai không đổi \(\sigma^2\) hoặc phương sai tỷ lệ với các trọng số dương đã biết \(w_i\), tức là \(\text{var}[y_i] = \sigma^2/w_i\) cho \(i = 1, 2, \dots, n\). \(w_i\) được gọi là trọng số trước (prior weights).

Thành phần hệ thống (Systematic component): Biểu thị mối quan hệ tuyến tính giữa kỳ vọng của biến phản hồi \(\mu_i = \text{E}[y_i]\) và biến giải thích \(x_i\). Công thức tổng quát của mô hình hồi quy tuyến tính (với \(p=1\) biến giải thích) là \(\mu_i = \beta_0 + \beta_1x_i\). Trong đó, \(\beta_0\)\(\beta_1\) là các tham số hồi quy chưa biết cần ước lượng từ dữ liệu. \(\beta_0\) thường được gọi là hệ số chặn, là giá trị của \(y\) khi \(x\) bằng 0.

Mô hình (2.2) trong tài liệu là một ví dụ về mô hình hồi quy tuyến tính có trọng số, được áp dụng cho dữ liệu về cân nặng trẻ sơ sinh theo tuổi thai (gestation data). Trọng số \(w_i = m_i\) (số lượng quan sát dựa vào đó tính cân nặng trung bình) được sử dụng để phản ánh rằng các giá trị trung bình dựa trên nhiều quan sát hơn mang lại nhiều thông tin hơn. Công thức của mô hình trong ví dụ này là: \[\mu_i = \beta_0 + \beta_1x_i\] với \[\text{var}[y_i] = \sigma^2/m_i\]

Ước lượng Bình phương Tối thiểu (Least-Squares Estimation)

Mục tiêu của phương pháp này là tìm các giá trị của tham số (\(\beta_0, \beta_1\)) sao cho tổng bình phương các sai lệch có trọng số giữa giá trị quan sát \(y_i\) và giá trị trung bình dự đoán \(\mu_i\) là nhỏ nhất. Tổng bình phương các sai lệch có trọng số được ký hiệu là \[S(\beta_0, \beta_1) = \sum_{i=1}^n w_i(y_i - \mu_i)^2 = \sum_{i=1}^n w_i(y_i - \beta_0 - \beta_1x_i)^2\]. Ví dụ 2.2:

Minh họa việc tính toán giá trị \(S\) cho ba quan sát giả định về cân nặng và tuổi, sử dụng hai bộ giá trị khác nhau cho \(\beta_0\)\(\beta_1\) (-0.9 và 0.1, sau đó -3 và 0.15). Các biểu đồ cho thấy sai lệch từ đường hồi quy dự đoán. Việc tính toán cho thấy bộ giá trị \(\beta_0 = -0.9\)\(\beta_1 = 0.1\) cho \(S = 186.1\), trong khi bộ giá trị thứ hai cho \(S = 343.4433\).

Để tìm các giá trị \(\beta_0\)\(\beta_1\) cực tiểu hóa \(S\), ta lấy đạo hàm riêng của \(S\) theo \(\beta_0\)\(\beta_1\) và đặt chúng bằng 0. Các phương trình đạo hàm riêng là:

\[\frac{\partial S(\beta_0, \beta_1)}{\partial \beta_0} = -2 \sum_{i=1}^n w_i(y_i - \mu_i)\] \[\frac{\partial S(\beta_0, \beta_1)}{\partial \beta_1} = -2 \sum_{i=1}^n w_ix_i(y_i - \mu_i)\].

Giải hệ phương trình này (được yêu cầu chứng minh trong Bài tập 2.2) cho ra các ước lượng bình phương tối thiểu \(\hat{\beta}_0\)\(\hat{\beta}_1\):

\[\hat{\beta}_0 = \bar{y}_w - \hat{\beta}_1\bar{x}_w\].

\[\hat{\beta}1 = \frac{\sum{i=1}^n w_i(x_i - \bar{x}w)y_i}{\sum{i=1}^n w_i(x_i - \bar{x}_w)^2}44\].

Trong đó:

\(\bar{x}_w\)\(\bar{y}_w\) là các trung bình có trọng số.

Các ước lượng \(\hat{\beta}_0\)\(\hat{\beta}_1\) là các ước lượng không chệch (unbiased estimators) của \(\beta_0\)\(\beta_1\).

Các giá trị phù hợp (fitted values) được ước lượng bởi \(\hat{\mu}_i = \hat{\beta}_0 + \hat{\beta}_1x_i\).

Giá trị cực tiểu của \(S(\beta_0, \beta_1)\), khi được tính tại các ước lượng bình phương tối thiểu, được gọi là tổng bình phương dư (residual sum-of-squares - rss). rss được tính bằng \(\sum_{i=1}^n w_i(y_i - \hat{\mu}_i)^2\). \(r_i = y_i - \hat{\mu}_i\) được gọi là phần dư thô (raw residuals).

2.4 Estimation for Multiple Regression

Định nghĩa Mô hình Hồi quy Tuyến tính (Đa biến):

Mô hình hồi quy tuyến tính có thể có nhiều biến giải thích. Mô hình này được định nghĩa bởi hai thành phần:

Thành phần ngẫu nhiên (Random component): Giả định phương sai của biến phản hồi \(y_i\) tỷ lệ nghịch với trọng số đã biết \(w_i\), tức là \(\text{var}[y_i] = \sigma^2/w_i\). Trọng số trước (prior weights) \(w_i\) là các giá trị dương đã biết.

Thành phần hệ thống (Systematic component): Biểu diễn kỳ vọng của biến phản hồi \(\mu_i = \text{E}[y_i]\) là một hàm tuyến tính của \(p\) biến giải thích \(x_{j}\) và một hệ số chặn \(\beta_0\). Công thức là: \[\mu_i = \beta_0 + \sum_{j=1}^p \beta_jx_{ji}\].

Các tham số \(\beta_0, \beta_1, \dots, \beta_p\) là các tham số hồi quy chưa biết cần ước lượng. Số lượng tham số hồi quy được ký hiệu là \(p'\), trong đó \(p' = p + 1\) nếu có hệ số chặn \(\beta_0\).

Biểu diễn Ma trận của Mô hình Tuyến tính:

Để xử lý hiệu quả các mô hình với nhiều biến giải thích, người ta sử dụng ký hiệu ma trận.

Vectơ phản hồi: \(\mathbf{y}\) là vectơ \(n \times 1\) chứa các giá trị quan sát \(y_i\).

Ma trận mô hình: \(\mathbf{X}\) là ma trận \(n \times p'\) chứa các giá trị của biến giải thích cho mỗi quan sát, cùng với một cột toàn số 1 cho hệ số chặn (nếu có). Các cột của \(\mathbf{X}\) thường bao gồm cột cho hệ số chặn, và các cột cho các biến giải thích.

Vectơ tham số: \(\boldsymbol{\beta}\) là vectơ \(p' \times 1\) chứa các tham số hồi quy \(\beta_0, \beta_1, \dots, \beta_p\).

Ma trận trọng số: \(\mathbf{W}\) là ma trận chéo \(n \times n\) với các trọng số \(w_i\) trên đường chéo chính. Ma trận nghịch đảo \(\mathbf{W}^{-1}\) có các giá trị \(1/w_i\) trên đường chéo chính. Nếu không có trọng số (tất cả \(w_i=1\)), \(\mathbf{W}\) là ma trận đơn vị \(\mathbf{I}_n\).

Quan hệ ma trận của mô hình: \[\text{E}[\mathbf{y}] = \boldsymbol{\mu} = \mathbf{X}\boldsymbol{\beta}\]\[\text{var}[\mathbf{y}] = \mathbf{W}^{-1}\sigma^2\].

Ước lượng Bình phương Tối thiểu bằng Ma trận:

Phương pháp bình phương tối thiểu có trọng số tìm vectơ tham số \(\boldsymbol{\beta}\) cực tiểu hóa tổng bình phương các sai lệch có trọng số \(S(\boldsymbol{\beta}) = \sum_{i=1}^n w_i(y_i - \mu_i)^2\), có thể viết trong ký hiệu ma trận là: \[S(\boldsymbol{\beta}) = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^T \mathbf{W} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})\].

Ước lượng Hệ số (\(\hat{\boldsymbol{\beta}}\)):

Bằng cách cực tiểu hóa \(S(\boldsymbol{\beta})\), ước lượng bình phương tối thiểu cho vectơ tham số \(\boldsymbol{\beta}\) được tính bằng công thức ma trận: \[\hat{\boldsymbol{\beta}} = (\mathbf{X}^T \mathbf{WX})^{-1}\mathbf{X}^T \mathbf{Wy}\].

Các ước lượng \(\hat{\beta}_j\) là các ước lượng không chệch (unbiased estimators) của \(\beta_j\).

Ví dụ 2.9: Minh họa việc thiết lập vectơ \(\mathbf{y}\) và ma trận mô hình \(\mathbf{X}\) cho dữ liệu lungcap, bao gồm các biến Age, Ht, Gender, Smoke, và một hệ số chặn. Ma trận \(\mathbf{W}\) là ma trận đơn vị do các quan sát không được trọng số hóa.

Ví dụ 2.10: Trình bày cách sử dụng mã R để tính toán ước lượng \(\hat{\boldsymbol{\beta}}\) cho mô hình lungcap bằng cách áp dụng công thức ma trận \(\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}\) (trường hợp không trọng số, \(\mathbf{W}=\mathbf{I}\)). Mã R sử dụng model.matrix() để tạo ma trận \(\mathbf{X}\), t() cho chuyển vị, %*% cho nhân ma trận, và solve() cho nghịch đảo ma trận. Kết quả ước lượng cho từng hệ số được hiển thị.

Ước lượng Phương sai Sai số (\(\sigma^2\)):

Ước lượng không chệch của phương sai sai số \(\sigma^2\) được ký hiệu là \(s^2\) hoặc mse (mean square error) và được tính từ tổng bình phương dư (residual sum-of-squares - rss). Công thức ma trận cho rss là: \[(\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}})^T \mathbf{W} (\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}})\],

\[s^2 = \text{rss} / (n - p')\].

Sai số Chuẩn của Hệ số (\(\text{se}(\hat{\boldsymbol{\beta}})\)):

Ma trận hiệp phương sai của các ước lượng hệ số \(\hat{\boldsymbol{\beta}}\) được cho bởi \(\text{var}[\hat{\boldsymbol{\beta}}] = (\mathbf{X}^T \mathbf{WX})^{-1}\sigma^2\). Sai số chuẩn của từng hệ số \(\hat{\beta}_j\) là căn bậc hai của phần tử thứ \(j\) trên đường chéo chính của ma trận hiệp phương sai này, sau khi thay \(\sigma^2\) bằng ước lượng \(s^2\).

Sai số Chuẩn của Giá trị Phù hợp (\(\text{se}(\hat{\boldsymbol{\mu}}_g)\)):

Đối với một vectơ giá trị biến giải thích mới \(\mathbf{x}_g\) (là một vectơ hàng \(1 \times p'\)), giá trị trung bình dự đoán là \(\hat{\mu}_g = \mathbf{x}_g\hat{\boldsymbol{\beta}}\). Phương sai của \(\hat{\mu}_g\)\(\text{var}[\hat{\mu}_g] = \mathbf{x}_g(\mathbf{X}^T \mathbf{WX})^{-1}\mathbf{x}_g^T \sigma^2\). Sai số chuẩn của \(\hat{\mu}_g\) là căn bậc hai của phương sai này với \(\sigma^2\) được thay bằng \(s^2\).

Ví dụ 2.13: Minh họa cách tính sai số chuẩn của giá trị phù hợp \(\text{log(fev)}\) dự đoán cho một cá nhân cụ thể (nữ, hút thuốc, 18 tuổi, cao 66 inch) sử dụng mô hình lungcap và công thức ma trận.

2.5 Biểu diễn mô hình hồi quy tuyến tính bằng ma trận

Ký hiệu Ma trận của Mô hình Hồi quy Tuyến tính

Mô hình hồi quy tuyến tính với \(p\) biến giải thích và hệ số chặn (tổng cộng \(p' = p+1\) tham số) được biểu diễn gọn lại bằng ma trận.

Vectơ phản hồi (\(\mathbf{y}\)): Một vectơ cột \(n \times 1\) chứa các giá trị quan sát của biến phản hồi (\(y_i\)).

Ma trận mô hình (\(\mathbf{X}\)): Một ma trận \(n \times p'\) chứa các giá trị của các biến giải thích cho mỗi quan sát. Cột đầu tiên của \(\mathbf{X}\) thường là cột chứa toàn số 1, tương ứng với hệ số chặn \(\beta_0\). Các cột tiếp theo chứa giá trị của các biến giải thích \(x_1, \dots, x_p\).

Vectơ tham số (\(\boldsymbol{\beta}\)): Một vectơ cột \(p' \times 1\) chứa các tham số hồi quy chưa biết \(\beta_0, \beta_1, \dots, \beta_p\) cần ước lượng.

Ma trận trọng số (\(\mathbf{W}\)): Một ma trận chéo \(n \times n\) với các trọng số dương đã biết \(w_i\) trên đường chéo chính. Nếu không có trọng số (tất cả \(w_i = 1\)), \(\mathbf{W}\) là ma trận đơn vị \(\mathbf{I}_n\).

Biểu diễn ma trận của mô hình:

Thành phần hệ thống: \[\text{E}[\mathbf{y}] = \boldsymbol{\mu} = \mathbf{X}\boldsymbol{\beta}\].

Thành phần ngẫu nhiên: \[\text{var}[\mathbf{y}] = \mathbf{W}^{-1}\sigma^2\].

Ví dụ 2.9:

Minh họa cách thiết lập các ma trận \(\mathbf{y}\), \(\mathbf{X}\)\(\mathbf{W}^{-1}\) (hoặc \(\mathbf{W}\)) cho dữ liệu gestation và lungcap. Đối với dữ liệu lungcap, vectơ \(\mathbf{y}\)\(\text{log(fev)}\), ma trận \(\mathbf{X}\) có các cột là hệ số chặn, Age, Ht, biến giả cho Gender và Smoke. Ma trận trọng số \(\mathbf{W}\) là ma trận đơn vị vì không có trọng số. Ví dụ này cho thấy cách cấu trúc dữ liệu và mô hình vào định dạng ma trận chuẩn.

Ước lượng Hệ số

Ước lượng bình phương tối thiểu có trọng số cho vectơ tham số \(\boldsymbol{\beta}\), ký hiệu là \(\hat{\boldsymbol{\beta}}\), được tìm bằng cách cực tiểu hóa tổng bình phương các sai lệch có trọng số trong ký hiệu ma trận \(S(\boldsymbol{\beta}) = (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})^T \mathbf{W} (\mathbf{y} - \mathbf{X}\boldsymbol{\beta})\).

Công thức ước lượng \(\hat{\boldsymbol{\beta}}\) là:

\[\hat{\boldsymbol{\beta}} = (\mathbf{X}^T \mathbf{WX})^{-1}\mathbf{X}^T \mathbf{Wy}\]. Đây là công thức ma trận tổng quát của ước lượng bình phương tối thiểu có trọng số.

Ví dụ 2.10:

Trình bày mã R để tính \(\hat{\boldsymbol{\beta}}\) cho mô hình lungcap. Mã này sử dụng hàm model.matrix để tạo ma trận \(\mathbf{X}\), các phép toán ma trận t() (chuyển vị), %*% (nhân ma trận), và solve() (nghịch đảo ma trận) để áp dụng trực tiếp công thức \(\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}\) (trong trường hợp \(\mathbf{W} = \mathbf{I}\)). Ví dụ này minh họa cách công thức ma trận được triển khai trong phần mềm thống kê để nhận được các ước lượng hệ số.

Ước lượng Phương sai Sai số (\(\sigma^2\))

Tổng bình phương dư (residual sum-of-squares - rss) trong ký hiệu ma trận là \[(\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}})^T \mathbf{W} (\mathbf{y} - \mathbf{X}\hat{\boldsymbol{\beta}})\].

Ước lượng không chệch của phương sai sai số \(\sigma^2\) được ký hiệu là \(s^2\) hoặc mse, và được tính bằng công thức: \(s^2 = \text{rss} / (n - p')\). Mẫu số \(n-p'\) là bậc tự do dư.

Ví dụ 2.11:

Minh họa cách tính RSS và \(s^2\) cho mô hình lungcap trong R. Ví dụ này áp dụng công thức ma trận cho RSS và công thức tính \(s^2\) để thu được ước lượng phương sai sai số.

Ước lượng Phương sai và Sai số Chuẩn

Phương sai của Ước lượng Hệ số (\(\hat{\boldsymbol{\beta}}\)): Ma trận hiệp phương sai của vectơ ước lượng \(\hat{\boldsymbol{\beta}}\) được cho bởi công thức ma trận: \[\text{var}[\hat{\boldsymbol{\beta}}] = (\mathbf{X}^T \mathbf{WX})^{-1}\sigma^2\]. Các phần tử trên đường chéo chính của ma trận này là phương sai của từng ước lượng hệ số \(\hat{\beta}_j\).

Sai số Chuẩn của Hệ số (\(\text{se}(\hat{\boldsymbol{\beta}}_j)\)): Sai số chuẩn của từng hệ số \(\hat{\beta}_j\) là căn bậc hai của phần tử thứ \(j\) trên đường chéo chính của \(\text{var}[\hat{\boldsymbol{\beta}}]\), sau khi thay thế \(\sigma^2\) bằng ước lượng \(s^2\).

Phương sai của Giá trị Phù hợp (\(\hat{\mu}_g\)): Đối với một tập hợp giá trị biến giải thích mới được biểu diễn dưới dạng vectơ hàng \(\mathbf{x}_g\), giá trị phù hợp (dự đoán) là: \[\hat{\mu}_g = \mathbf{x}_g\hat{\boldsymbol{\beta}}\].

Phương sai của giá trị phù hợp này là: \[\text{var}[\hat{\mu}_g] = \mathbf{x}_g(\mathbf{X}^T \mathbf{WX})^{-1}\mathbf{x}_g^T \sigma^2\].

Sai số Chuẩn của Giá trị Phù hợp (\(\text{se}(\hat{\mu}_g)\)): Sai số chuẩn của \(\hat{\mu}_g\) là căn bậc hai của phương sai này, thay \(\sigma^2\) bằng \(s^2\).

Ví dụ 2.13:

Minh họa cách tính giá trị dự đoán và sai số chuẩn của giá trị dự đoán đó cho một cá nhân cụ thể từ dữ liệu lungcap. Mã R sử dụng các phép toán ma trận để tính \(\mathbf{x}_g\hat{\boldsymbol{\beta}}\) và áp dụng công thức phương sai của giá trị phù hợp, thay \(s^2\) cho \(\sigma^2\), sau đó lấy căn bậc hai để có sai số chuẩn. Ví dụ này cho thấy cách các công thức ma trận được dùng để tính toán độ bất định của các dự đoán.

2.6 Ước lượng mô hình hồi quy tuyến tính bằng phần mềm R

Hàm lm() để Khớp Mô hình Hồi quy Tuyến tính

Trong R, hàm chính được sử dụng để khớp (fit) các mô hình tuyến tính (bao gồm hồi quy tuyến tính) là lm(). Hàm này xử lý cả hồi quy tuyến tính đơn giản (một biến giải thích) và hồi quy tuyến tính đa biến (nhiều biến giải thích).

Cấu trúc cơ bản của hàm lm() sử dụng cú pháp formula để mô tả mối quan hệ giữa biến phản hồi và các biến giải thích (ví dụ: BienPhanHoi ~ BienGiaiThich1 + BienGiaiThich2).

Khớp Mô hình Hồi quy Tuyến tính Có Trọng số

Mô hình hồi quy tuyến tính có thể bao gồm trọng số đã biết \(w_i\). Hàm lm() hỗ trợ điều này thông qua đối số weights.

Ví dụ:

Tài liệu minh họa việc khớp một mô hình hồi quy tuyến tính có trọng số cho dữ liệu gestation, trong đó Weight là biến phản hồi, Age là biến giải thích, và Births được sử dụng làm trọng số. Đoạn mã R lm(formula = Weight ~ Age, data = gestation, weights = Births) thể hiện cách chỉ định trọng số trong hàm lm(). Kết quả từ summary() cho thấy các ước lượng hệ số và thông tin thống kê liên quan được tính toán dựa trên trọng số này.

Khớp Mô hình Hồi quy Tuyến tính Đa biến

Để khớp mô hình với nhiều biến giải thích, các biến này được liệt kê trong phần formula của hàm lm() và được nối với nhau bằng dấu +.

Ví dụ:

Minh họa việc khớp một mô hình hồi quy tuyến tính đa biến cho dữ liệu lungcap, nơi log(FEV) là biến phản hồi và Age, Ht, Gender, Smoke là các biến giải thích. Đoạn mã R lm( log(FEV) ~ Age + Ht + Gender + Smoke, data = lungcap ) cho thấy cách đưa nhiều biến giải thích vào formula.

Truy cập và Tóm tắt Kết quả

Hàm lm() trả về một đối tượng chứa kết quả của mô hình đã khớp.

Hàm summary() được sử dụng để xem tóm tắt chi tiết về kết quả mô hình, bao gồm ước lượng các hệ số (\(\hat{\boldsymbol{\beta}}\)), sai số chuẩn của chúng, giá trị t-statistic, p-value, ước lượng phương sai sai số (\(s^2\)), R-squared, v.v..

Các thành phần cụ thể của kết quả mô hình (ví dụ: các hệ số) có thể được trích xuất bằng các hàm khác như coef().

Các hàm đồ họa như abline() có thể sử dụng kết quả từ lm() (ví dụ: hệ số chặn và hệ số góc) để vẽ đường hồi quy lên biểu đồ.

CHƯƠNG 3: Các mô hình hồi quy tuyến tính – Chẩn đoán và xây dựng mô hình

“Mô hình Hồi quy Tuyến tính: Chẩn đoán và Xây dựng Mô hình”, tập trung vào việc đánh giá và cải thiện tính phù hợp của các mô hình hồi quy tuyến tính sau khi chúng đã được fitted. Mục tiêu chính là trang bị cho người đọc các công cụ chẩn đoán để kiểm tra các giả định của mô hình tuyến tính và thảo luận về các biện pháp khắc phục các vấn đề đã được xác định. Quá trình kiểm tra và xác định các vi phạm giả định mô hình được gọi là phân tích chẩn đoán.

Nội dung cốt lõi của chương bao gồm:

Xem xét các giả định của mô hình hồi quy tuyến tính từ góc độ thực tế, bao gồm tính tuyến tính của bộ dự báo (linear predictor), phương sai hằng số (constant variance), tính độc lập (independence), và tính chuẩn (normality).

Các công cụ chính cho phân tích chẩn đoán là phần dư (residuals) và đòn bẩy (leverage). Chương giới thiệu các loại biểu đồ phần dư để kiểm tra giả định, như biểu đồ phần dư so với biến giải thích (linearity), biểu đồ phần dư so với giá trị fitted (constant variance), và biểu đồ Q-Q để kiểm tra tính chuẩn.

Các kỹ thuật nhận dạng giá trị ngoại lai (outliers) và quan sát có ảnh hưởng (influential observations) cũng được trình bày, sử dụng phần dư student hóa và khoảng cách Cook.

Các biện pháp khắc phục bao gồm biến đổi biến phản hồi (như biến đổi Box-Cox), biến đổi biến giải thích, sử dụng đa thức hoặc spline hồi quy để mô hình hóa mối quan hệ phi tuyến tính, và xử lý vấn đề độ đa cộng tuyến (collinearity).

Dữ liệu về heat capacity được sử dụng làm ví dụ để minh họa việc sử dụng spline hồi quy tự nhiên nhằm mô hình hóa mối quan hệ phi tuyến tính giữa nhiệt dung và nhiệt độ.

Vai trò

Chương 3 là phần tiếp theo tự nhiên của Chương 2, nơi các mô hình hồi quy tuyến tính được định nghĩa và fitted. Nó giúp xác định các điểm yếu của mô hình tuyến tính tiêu chuẩn, đặc biệt là vi phạm giả định phương sai hằng số, điều này được Chương 4 chỉ ra là không đúng với mọi loại dữ liệu. Chương 3 do đó là cầu nối quan trọng dẫn đến việc giới thiệu và sử dụng Mô hình Tuyến tính Tổng quát (GLMs) trong Chương 5, vì GLMs được thiết kế để xử lý các cấu trúc dữ liệu và phương sai phức tạp hơn mà mô hình tuyến tính không giải quyết được. Các khái niệm và công cụ chẩn đoán từ Chương 3 cũng được mở rộng và áp dụng cho GLMs trong Chương 8

Chương 4: Ngoài Mô hình Hồi quy Tuyến tính – Phương pháp ước lượng hợp lý cực đại (MLE)

“Ngoài Mô hình Hồi quy Tuyến tính: Phương pháp Ước lượng Hợp lý Cực đại”, tập trung vào việc vượt ra ngoài khuôn khổ của mô hình hồi quy tuyến tính chuẩn, đặc biệt khi các giả định của nó không còn phù hợp với dữ liệu.

Mục tiêu chính của chương là giới thiệu và giải thích Phương pháp Ước lượng Hợp lý Cực đại (Maximum Likelihood Estimation - MLE) như một cách tiếp cận tổng quát và phù hợp để ước lượng tham số cho các mô hình thống kê linh hoạt hơn, đặc biệt là những mô hình sẽ dẫn đến các Mô hình Tuyến tính Tổng quát (Generalized Linear Models - GLMs).

Nội dung chính của chương:

Bắt đầu bằng việc chỉ ra sự hạn chế của mô hình hồi quy tuyến tính khi giả định phương sai hằng số và/hoặc phân phối chuẩn cho biến phản hồi bị vi phạm. Chương thảo luận về các tình huống dữ liệu phổ biến mà mô hình tuyến tính thất bại, bao gồm dữ liệu nhị phân hoặc đếm (như kết quả thành công/thất bại, số lượng sự kiện), và dữ liệu liên tục dương. Để xử lý các trường hợp này, chương giới thiệu Ý tưởng về Ước lượng Hợp lý (Likelihood Estimation). Khái niệm cốt lõi là hàm hợp lý (likelihood function), đo lường mức độ khả thi của các giá trị tham số khác nhau dựa trên dữ liệu quan sát.

Việc ước lượng tham số thông qua MLE là tìm tập hợp các giá trị tham số tối đa hóa hàm hợp lý (hoặc tương đương, hàm log-hợp lý). Chương trình bày chi tiết cách dẫn xuất các phương trình điểm (score equations) bằng cách lấy đạo hàm hàm log-hợp lý theo các tham số và đặt chúng bằng không. Ma trận đạo hàm bậc hai của hàm log-hợp lý được gọi là Thông tin quan sát (Observed Information), và kỳ vọng của nó là Thông tin kỳ vọng (Expected Information); ma trận này đóng vai trò quan trọng trong việc tính toán phương sai và sai số chuẩn của các ước lượng MLE.

Chương cũng trình bày các công thức ma trận cho MLE. Các phương pháp suy luận thống kê dựa trên MLE cũng được trình bày, bao gồm các kết quả tiệm cận mẫu lớn (large sample asymptotic results) cho kiểm định giả thuyết (như kiểm định Wald, kiểm định Tỷ số Hợp lý (Likelihood Ratio Test), và kiểm định Điểm (Score Test)) và xây dựng khoảng tin cậy.

Các phương pháp so sánh các mô hình không lồng nhau, như AIC và BIC, cũng được đề cập.

Dữ liệu về lượng mưa tại Quilpie (Quilpie rainfall data) được sử dụng làm ví dụ minh họa để giới thiệu hàm hợp lý và log-hợp lý cho việc ước lượng một tham số duy nhất (trung bình) và cách tính sai số chuẩn từ thông tin.

Về vai trò

Chương 4 là cầu nối lý thuyết quan trọng giữa mô hình hồi quy tuyến tính chuẩn và các mô hình tổng quát hơn. Nó dựa trên nền tảng của hồi quy tuyến tính được giới thiệu trong Chương 2 và các vấn đề chẩn đoán được thảo luận trong Chương 3. Trong khi Chương 3 tập trung vào việc chẩn đoán và cố gắng khắc phục vấn đề trong khuôn khổ mô hình tuyến tính (thường bằng biến đổi), Chương 4 giải thích lý do tại sao cần có một cách tiếp cận mô hình hóa khác (MLE) khi các giả định cơ bản về phân phối và phương sai không được thỏa mãn. Chương 4 cung cấp cơ sở lý thuyết về MLE, phương pháp ước lượng cần thiết để xây dựng và fitted các Mô hình Tuyến tính Tổng quát (GLMs). Do đó, nó chuẩn bị trực tiếp cho Chương 5, nơi cấu trúc của GLMs được định nghĩa, và Chương 6, nơi phương pháp ước lượng MLE cho GLMs được trình bày chi tiết. Chương 4 cũng đặt nền móng cho các phương pháp suy luận cho GLMs được trình bày trong Chương 7 và các kỹ thuật chẩn đoán GLMs trong Chương 8.

CHƯƠNG 5: MÔ HÌNH TUYẾN TÍNH TỔNG QUÁT: CẤU TRÚC

Chương 5, “Mô hình Tuyến tính Tổng quát: Cấu trúc”, đánh dấu sự chuyển dịch trọng tâm từ các mô hình hồi quy tuyến tính chuẩn đã được thảo luận chi tiết trong Chương 2 và Chương 3. Chương này nhận định rằng các giả định của mô hình tuyến tính (đặc biệt là giả định về phương sai hằng số) thường không đúng với nhiều loại dữ liệu thực tế, như đã được chỉ ra trong Chương 4. Do đó, mục tiêu chính của Chương 5 là giới thiệu và định nghĩa cấu trúc cơ bản của Mô hình Tuyến tính Tổng quát (Generalized Linear Model - GLM). Chương này đặt nền tảng lý thuyết cho việc hiểu cách GLMs có thể mô hình hóa dữ liệu với các đặc điểm phân phối và cấu trúc phương sai đa dạng hơn so với mô hình tuyến tính truyền thống.

5.1 Nội dung chính

Chương 5 trình bày cấu trúc của GLMs thông qua việc phân chia chúng thành hai thành phần chính, tương tự như mô hình hồi quy tuyến tính, nhưng với các định nghĩa được tổng quát hóa. Hai thành phần này được lựa chọn một cách riêng biệt.

Thành phần Ngẫu nhiên (Random Component):

Thành phần này mô tả cách biến phản hồi (responses) được phân phối. Khác với mô hình tuyến tính chuẩn chỉ giả định phân phối chuẩn với phương sai hằng số, GLMs giả định rằng biến phản hồi đến từ một phân phối thuộc Họ Mô hình Phân tán Hàm mũ (Exponential Dispersion Model - EDM). Chương giới thiệu định nghĩa tổng quát của EDM và nêu bật các đặc tính quan trọng như hàm tích lũy (cumulant function) κ(θ), tham số chính tắc (canonical parameter) θ, tham số phân tán (dispersion parameter) φ, và đặc biệt là hàm phương sai (variance function) V(μ), mô tả mối quan hệ giữa phương sai của biến phản hồi và giá trị trung bình của nó. Các phân phối phổ biến thuộc họ EDM và được sử dụng rộng rãi trong GLMs bao gồm phân phối Chuẩn (Normal), Poisson, Nhị thức (Binomial), Gamma, và Nhị thức âm (Negative Binomial). Chương cũng trình bày dạng mô hình phân tán của EDM.

Thành phần Hệ thống (Systematic Component):

Thành phần này mô tả mối quan hệ giữa giá trị trung bình của biến phản hồi và các biến giải thích. Giống như hồi quy tuyến tính, nó dựa trên một bộ dự báo tuyến tính (linear predictor), là một tổ hợp tuyến tính của các biến giải thích: \(ηi = β_0 + β_1 x_{1i} + · · · + β_px_{pi}\).

Điểm khác biệt cốt lõi của GLMs nằm ở cách hai thành phần này được liên kết. Thay vì giả định trực tiếp \(E[yi] = μi = ηi\) như trong mô hình tuyến tính chuẩn, GLMs sử dụng một Hàm Liên kết (Link Function), ký hiệu là \(g\). Hàm \(g\) này liên kết giá trị trung bình của biến phản hồi \((μi)\) với bộ dự báo tuyến tính \((ηi)\) theo mối quan hệ: \(ηi = g(μi)\). Việc lựa chọn hàm liên kết phù hợp cho phép GLMs mô hình hóa các mối quan hệ phi tuyến tính giữa giá trị trung bình và bộ dự báo tuyến tính, đồng thời đảm bảo rằng giá trị trung bình dự đoán nằm trong phạm vi cho phép của phân phối đã chọn (ví dụ: giá trị trung bình của biến đếm phải không âm).

Chương cũng giới thiệu khái niệm độ lệch (deviance), một thước đo về mức độ phù hợp của mô hình. Độ lệch trong GLMs đóng vai trò tương tự như tổng bình phương phần dư (sum of squares of residuals) trong hồi quy tuyến tính, cung cấp cơ sở để đánh giá và so sánh các mô hình GLM. Khái niệm độ lệch đơn vị (unit deviance) cũng được trình bày. Cuối cùng, chương so sánh việc sử dụng GLMs với kỹ thuật biến đổi biến phản hồi trong hồi quy tuyến tính.

Ví dụ minh họa:

Mặc dù các ví dụ fitted mô hình cụ thể thường được trình bày chi tiết trong các chương sau (như Chương 9 cho dữ liệu tỷ lệ, Chương 10 cho dữ liệu đếm, v.v.), cấu trúc GLM được giới thiệu trong Chương 5 cho phép mô hình hóa nhiều loại dữ liệu không phù hợp với mô hình tuyến tính. Chẳng hạn, xem xét dữ liệu về FEV (Forced Expiratory Volume) được đề cập trong các chương trước. Chương 3 thảo luận về việc biến đổi log(FEV) để cố gắng đáp ứng giả định phương sai hằng số. Chương 5 cung cấp cơ sở để hiểu rằng nếu FEV không tuân theo phân phối chuẩn với phương sai hằng số, thay vì biến đổi dữ liệu theo cách thủ công, chúng ta có thể sử dụng cấu trúc GLM bằng cách chọn một phân phối thuộc họ EDM phù hợp với đặc điểm của FEV (ví dụ: nếu FEV là giá trị liên tục dương và có phương sai tăng theo trung bình, phân phối Gamma hoặc Tweedie có thể phù hợp). Thành phần ngẫu nhiên của GLM sẽ được xác định bởi phân phối này, và hàm liên kết sẽ ánh xạ giá trị trung bình FEV (dự đoán) tới bộ dự báo tuyến tính. Điều này minh họa cách cấu trúc GLM cho phép linh hoạt trong việc lựa chọn phân phối và mối quan hệ giữa trung bình và bộ dự báo tuyến tính, vượt qua những hạn chế của mô hình tuyến tính ngay từ cấu trúc ban đầu.

5.2 Vai trò

Chương 5 đóng vai trò là chương nền tảng cốt lõi trong tài liệu về Mô hình Tuyến tính Tổng quát. Nó dựa trên sự giới thiệu về mô hình tuyến tính (Chương 2) và những hạn chế của nó được xác định qua chẩn đoán (Chương 3) và thảo luận về ước lượng hợp lý cực đại (Chương 4). Cụ thể, nó giải quyết trực tiếp vấn đề về giả định phương sai không hằng số được nhận thấy trong hồi quy tuyến tính truyền thống. Quan trọng hơn, Chương 5 chuẩn bị trực tiếp cho các chương tiếp theo.

CHƯƠNG 6: MÔ HÌNH TUYẾN TÍNH TỔNG QUÁT: ƯỚC LƯỢNG

Chương 6, “Mô hình Tuyến tính Tổng quát: Ước lượng”, tiếp nối Chương 5, nơi cấu trúc cơ bản của Mô hình Tuyến tính Tổng quát (GLM) đã được định nghĩa. Nếu Chương 5 giới thiệu “GLM là gì” bằng cách xác định các thành phần ngẫu nhiên (dựa trên Exponential Dispersion Model - EDM) và hệ thống (dựa trên bộ dự báo tuyến tính và hàm liên kết), thì mục tiêu chính của Chương 6 là giải thích cách ước lượng các tham số chưa biết trong cấu trúc GLM đó khi có dữ liệu. Chương này tập trung vào việc sử dụng phương pháp Ước lượng Hợp lý Cực đại (Maximum Likelihood Estimation - MLE), một khái niệm quan trọng đã được trình bày ở Chương 4, để tìm ra các giá trị tốt nhất cho các hệ số hồi quy β và tham số phân tán φ (nếu có).

6.1 Nội dung chính

Ước lượng Tham số Hệ số Hồi quy β:

Việc ước lượng \(β\) dựa trên việc tính toán hàm hợp lý (likelihood function) cho dữ liệu theo cấu trúc GLM. Các tham số β được tìm thấy bằng cách tối đa hóa hàm hợp lý này.

Quá trình này dẫn đến việc giải các phương trình điểm (Score Equations), là đạo hàm bậc nhất của log-hàm hợp lý theo từng tham số \(βj\) và được đặt bằng không. Đối với GLMs, các phương trình điểm này thường là phi tuyến tính, khác với mô hình hồi quy tuyến tính chuẩn.

Do tính chất phi tuyến tính, việc ước lượng \(β\) thường đòi hỏi các phương pháp lặp lại để giải các phương trình điểm. Chương 6 mô tả cách tính toán này, bao gồm cả cách biểu diễn bằng ma trận.

Một điểm quan trọng được nhấn mạnh là quá trình ước lượng GLMs cục bộ giống như hồi quy tuyến tính.

Sau khi ước lượng được $mũ $, chương cũng chỉ ra cách tính sai số chuẩn (standard errors) cho các ước lượng này, sử dụng ma trận thông tin (Information matrix).

Ước lượng Tham số Phân tán φ:

Ngoài các hệ số \(β\), GLMs cho các phân phối như Normal, Gamma, Inverse Gaussian, và Tweedie còn có thêm một tham số phân tán \(\phi\). Các phân phối Poisson và Binomial thường được coi là có \(\phi\) = 1 hoặc đã biết.

Chương 6 thảo luận về các phương pháp khác nhau để ước lượng \(\phi\). Các phương pháp này bao gồm Ước lượng Hợp lý Cực đại (MLE), Ước lượng Log-hàm hợp lý biên (Modified Profile Log-Likelihood Estimator), Ước lượng Độ lệch Trung bình (Mean Deviance Estimator), và Ước lượng Pearson (Pearson Estimator). Chương cũng đưa ra so sánh về việc nên sử dụng loại ước lượng \(\phi\) nào là tốt nhất trong các trường hợp khác nhau.

Độ lệch Dư (Residual Deviance):

Chương giới thiệu khái niệm Độ lệch Dư, một đại lượng đo lường mức độ phù hợp của mô hình. Độ lệch dư đóng vai trò tương tự như Tổng bình phương phần dư (Sum of Squares of Residuals) trong hồi quy tuyến tính chuẩn và có liên quan chặt chẽ đến log-hàm hợp lý. Nó được sử dụng trong quá trình ước lượng và đánh giá mô hình sau này.

Ví dụ minh họa:

Mặc dù các đoạn trích từ Chương 6 không đi sâu vào một ví dụ dữ liệu cụ thể để trình bày chi tiết các bước tính toán ước lượng, chúng chỉ ra rằng chương này giải thích cách sử dụng R để fitted GLMs. Cụ thể hơn, phần giải bài tập của Chương 6 minh họa việc sử dụng lệnh glm(Number~Age, data=blocks, family=poisson) với dữ liệu blocks. Lệnh glm() trong R thực hiện toàn bộ quá trình ước lượng các tham số cho mô hình GLM (trong ví dụ này là Poisson GLM mô hình hóa Number dựa trên Age) bằng cách áp dụng các phương pháp lặp lại để giải các phương trình điểm, như đã mô tả trong chương. Kết quả từ lệnh summary(m1) hiển thị các ước lượng của hệ số (ví dụ: cho Age) và sai số chuẩn tương ứng, là sản phẩm trực tiếp của quá trình ước lượng được thảo luận trong chương. Điều này minh họa cách lý thuyết ước lượng phức tạp được đóng gói trong các hàm thống kê thực tế.

6.2 Vai trò

Chương 6 đóng vai trò là cầu nối thiết yếu giữa cấu trúc lý thuyết của GLMs (Chương 5) và việc áp dụng chúng vào dữ liệu thực tế. Nó cung cấp phương pháp luận cốt lõi để chuyển đổi mô hình toán học thành mô hình fitted có thể sử dụng được.

Chương 6 dựa trên nền tảng:

  • Chương 4 (Maximum Likelihood): Toàn bộ phương pháp ước lượng β và φ được xây dựng dựa trên các nguyên tắc và kỹ thuật của Ước lượng Hợp lý Cực đại đã được giới thiệu ở Chương 4.

  • Chương 5 (GLM Structure): Cấu trúc GLM, bao gồm EDM (Random Component), bộ dự báo tuyến tính và hàm liên kết (Systematic Component), và định nghĩa về độ lệch, là điều kiện tiên quyết để thiết lập hàm hợp lý và các phương trình điểm cần thiết cho việc ước lượng trong Chương 6.

CHƯƠNG 7: MÔ HÌNH TUYẾN TÍNH TỔNG QUÁT: SUY LUẬN

Chương 7, “Mô hình Tuyến tính Tổng quát: Suy luận”, là bước tiếp theo sau Chương 6 về ước lượng. Nếu Chương 6 tập trung vào việc tìm ra các giá trị ước lượng tốt nhất cho các tham số của GLM từ dữ liệu mẫu (chủ yếu thông qua Ước lượng Hợp lý Cực đại - MLE), thì mục tiêu chính của Chương 7 là sử dụng những ước lượng đó để đưa ra các kết luận suy luận (inference) về các tham số thực sự trong quần thể. Chương này cung cấp các phương pháp để kiểm định giả thuyết thống kê về các hệ số hồi quy β và tham số phân tán φ, cũng như xây dựng khoảng tin cậy cho chúng. Ngoài ra, chương còn đề cập đến các cách so sánh giữa các mô hình GLM khác nhau.

7.1 Nội dung chính

Nội dung cốt lõi của Chương 7 xoay quanh các kỹ thuật suy luận cho mô hình GLM, chủ yếu dựa trên các kết quả tiệm cận của MLE (từ Chương 4) và các ước lượng thu được từ Chương 6.

Suy luận về các Hệ số Hồi quy β

Chương 7 trình bày các phương pháp kiểm định giả thuyết về các hệ số hồi quy \(β_j\). Các giả thuyết thường gặp là kiểm định xem một hệ số cụ thể có bằng 0 hay không (tức là biến giải thích tương ứng có ý nghĩa thống kê hay không), hoặc kiểm định một tập hợp con các hệ số có bằng 0 hay không.

Ba phương pháp kiểm định chính được thảo luận là Kiểm định Tỷ số Hợp lý (Likelihood Ratio Test - LRT), Kiểm định Wald (Wald Test), và Kiểm định Điểm số (Score Test). Các kiểm định này đều dựa trên lý thuyết tiệm cận của MLE (từ Chương 4), đặc biệt hiệu quả với cỡ mẫu lớn. Chương này so sánh ưu nhược điểm của từng phương pháp và khi nào nên sử dụng chúng.

Kiểm định Tỷ số Hợp lý so sánh độ phù hợp của mô hình đầy đủ với mô hình bị ràng buộc (nested model), thường sử dụng Độ lệch Dư (Residual Deviance). Sự khác biệt về Độ lệch Dư có phân phối xấp xỉ Chi-bình phương dưới giả thuyết null.

Kiểm định Wald sử dụng ước lượng tham số \(β mũ\) và sai số chuẩn của nó (được tính trong Chương 6). Đối với cỡ mẫu lớn, tỷ số Wald xấp xỉ phân phối Chuẩn tắc (Z) hoặc t (nếu \(\phi\) được ước lượng).

Kiểm định Điểm số dựa trên đạo hàm của log-hàm hợp lý (Score function) tại giá trị tham số dưới giả thuyết null (được giới thiệu trong Chương 4 và sử dụng để tìm ước lượng trong Chương 6).

Chương cũng hướng dẫn cách xây dựng Khoảng Tin cậy (Confidence Intervals) cho từng hệ số \(β_j\), dựa trên ước lượng \(β̂j\) và sai số chuẩn của nó, sử dụng phân phối xấp xỉ Chuẩn tắc.

Suy luận về Tham số Phân tán φ:

Đối với các GLM có tham số phân tán \(\phi\) chưa biết (như Normal, Gamma, Inverse Gaussian, Tweedie), Chương 6 đã trình bày các cách ước lượng \(\phi\). Chương 7 đề cập đến suy luận liên quan đến \(\phi\), mặc dù phần lớn trọng tâm vẫn là suy luận về \(β\) khi \(\phi\) được coi là đã biết hoặc đã được ước lượng. Các kiểm định về \(β\) có thể cần điều chỉnh khi \(\phi\) được ước lượng (ví dụ: sử dụng phân phối t thay vì Z).

So sánh các Mô hình GLM:

Chương cung cấp các phương pháp để so sánh giữa các mô hình GLM khác nhau.

Đối với các mô hình lồng nhau (nested models), Kiểm định Tỷ số Hợp lý (thông qua so sánh Độ lệch Dư) là phương pháp tiêu chuẩn. Khái niệm mô hình lồng nhau và cách so sánh đã được giới thiệu cho Hồi quy Tuyến tính trong Chương 2.

Đối với các mô hình không lồng nhau (non-nested models), chương giới thiệu việc sử dụng các tiêu chí thông tin như AIC (Akaike Information Criterion) và BIC (Bayesian Information Criterion). AIC và BIC cân bằng giữa độ phù hợp của mô hình và số lượng tham số, giúp lựa chọn mô hình tốt nhất một cách khách quan hơn.

Các phương pháp lựa chọn mô hình tự động cũng được nhắc đến.

Ví dụ minh họa:

Chương 7 minh họa việc thực hiện suy luận cho GLMs bằng cách sử dụng phần mềm R. Mặc dù không có dữ liệu cụ thể và các bước tính toán chi tiết trong các đoạn trích TOC, các chương trước đã giới thiệu cách sử dụng hàm glm() trong R để fitted GLMs (ví dụ: glm(Number~Age, data=blocks, family=poisson)) và cách xem kết quả tóm tắt bằng summary(). Output từ summary() thường bao gồm ước lượng hệ số, sai số chuẩn, giá trị kiểm định Wald (thường dưới dạng z-value hoặc t-value) và p-value tương ứng cho từng hệ số, cho phép kiểm định giả thuyết \(β_j=0\). Chương 7 giải thích cách diễn giải những con số này để đưa ra kết luận thống kê. Ngoài ra, lệnh anova() trong R có thể được sử dụng để thực hiện Kiểm định Tỷ số Hợp lý cho các mô hình lồng nhau. Ví dụ về lệnh anova() với mô hình Gamma trong nguồn cho thấy kết quả kiểm định F (xấp xỉ LRT) cho các biến trong mô hình, minh họa cách so sánh mô hình và đánh giá ý nghĩa của các nhóm biến.

7.2 Vai trò

Chương 7 đóng vai trò quan trọng trong việc cho phép người dùng đưa ra kết luận có ý nghĩa thống kê từ các mô hình GLM đã fitted. Nó chuyển đổi các ước lượng điểm (từ Chương 6) thành suy luận về quần thể. Chương 7 dựa trên nền tảng lý thuyết từ các chương trước:

  • Chương 6 (Estimation): Cung cấp các ước lượng tham số β̂ và φ̂ cùng với ma trận hiệp phương sai/sai số chuẩn của chúng, là đầu vào thiết yếu cho các kiểm định Wald và xây dựng khoảng tin cậy.

  • Chương 5 (GLM Structure): Cấu trúc GLM, đặc biệt là khái niệm Độ lệch (Deviance), là cơ sở để xây dựng Kiểm định Tỷ số Hợp lý.

  • Chương 4 (Maximum Likelihood): Cung cấp lý thuyết nền tảng về tính chất tiệm cận của MLE, hàm điểm số (Score function), ma trận thông tin, và ba phương pháp kiểm định (LRT, Wald, Score). Các kết quả này là xương sống cho các kỹ thuật suy luận trong Chương 7.

  • Chương 2 (Linear Regression): Các khái niệm cơ bản về kiểm định giả thuyết, khoảng tin cậy, và so sánh mô hình (ANOVA, AIC/BIC) trong hồi quy tuyến tính chuẩn là tiền đề và được mở rộng cho GLMs trong chương này.

CHƯƠNG 8: MÔ HÌNH TUYẾN TÍNH TỔNG QUÁT: CHUẨN ĐOÁN

Chương 8, “Mô hình Tuyến tính Tổng quát: Chẩn đoán”, tập trung vào việc đánh giá tính phù hợp của một mô hình Tuyến tính Tổng quát (GLM) đã được fitted với dữ liệu. Mục tiêu chính là cung cấp các công cụ và phương pháp để phát hiện các vi phạm đối với các giả định cơ bản của mô hình GLM. Điều này là cực kỳ quan trọng vì các kết quả ước lượng và suy luận từ các chương trước (Chương 6 và 7) chỉ đáng tin cậy nếu các giả định của mô hình được thỏa mãn một cách hợp lý. Chương này cũng thảo luận về các biện pháp khắc phục khi phát hiện vấn đề.

8.1 Nội dung chính

Nội dung cốt lõi của Chương 8 xoay quanh các kỹ thuật chẩn đoán mô hình GLM, mở rộng các khái niệm từ hồi quy tuyến tính chuẩn (Chương 3) sang cấu trúc linh hoạt hơn của GLMs.

Các Khái niệm và Lý thuyết Cốt lõi:

Trung tâm của chẩn đoán GLM là việc kiểm tra các giả định của mô hình. Các giả định này bao gồm cấu trúc của thành phần ngẫu nhiên (thuộc gia đình phân phối hàm mũ - EDM, như thảo luận trong Chương 5), mối quan hệ giữa trung bình và bộ dự báo tuyến tính thông qua hàm liên kết (link function), và tính độc lập của các quan sát.

Các công cụ chính được sử dụng là Phần dư (Residuals) và Độ đòn bẩy (Leverage).

Có ba loại phần dư cơ bản được trình bày cho GLMs: Pearson Residuals, Deviance Residuals, và Quantile Residuals. Mỗi loại có những đặc tính riêng và hữu ích cho các mục đích chẩn đoán khác nhau. Phần dư đáp ứng (Response Residuals) được coi là không đủ cho GLMs.

Độ đòn bẩy là một thước đo vị trí của các giá trị biến giải thích của một quan sát so với các quan sát khác và mức độ ảnh hưởng tiềm năng của quan sát đó đến việc fitted mô hình. Khái niệm này tương tự như trong hồi quy tuyến tính chuẩn.

Kết hợp phần dư và độ đòn bẩy dẫn đến các loại phần dư được chuẩn hóa (standardized residuals), giúp việc phát hiện các quan sát bất thường (outliers) trở nên đáng tin cậy hơn.

Các Phương pháp Chẩn đoán và Biện pháp Khắc phục:

Chương này trình bày các phương pháp chính để kiểm tra giả định bằng cách sử dụng các công cụ trên, chủ yếu thông qua các biểu đồ chẩn đoán (diagnostic plots).

Các loại biểu đồ phổ biến bao gồm vẽ phần dư (đã chuẩn hóa) chống lại các giá trị đã fitted (fitted values), chống lại các biến giải thích, hoặc chống lại bộ dự báo tuyến tính (linear predictor). Các biểu đồ này giúp kiểm tra tính phù hợp của hàm liên kết, cấu trúc của thành phần ngẫu nhiên (đặc biệt là hàm phương sai - variance function), và các giả định khác.

Biểu đồ Q-Q (Q-Q plots) được sử dụng để kiểm tra giả định về phân phối của thành phần ngẫu nhiên (sau khi chuẩn hóa phần dư). Biểu đồ Lag plots có thể được sử dụng để kiểm tra tính độc lập.

Chương cũng thảo luận cách xác định các quan sát bất thường (outliers) và các quan sát gây ảnh hưởng (influential observations), sử dụng các chỉ số như phần dư studentized và Cook’s distance.

Khi các vấn đề được xác định thông qua chẩn đoán, chương sẽ đề cập đến các biện pháp khắc phục (remedies). Các biện pháp này có thể bao gồm biến đổi biến (cả biến phản hồi và biến giải thích, như trong Chương 3), xử lý các quan sát bất thường/gây ảnh hưởng, hoặc xem xét các mô hình thay thế.

Một biện pháp khắc phục quan trọng được giới thiệu là sử dụng Ước lượng Quasi-Likelihood và Extended Quasi-Likelihood, đặc biệt hữu ích khi có hiện tượng phân tán quá mức (overdispersion), tức là phương sai lớn hơn so với giả định của mô hình (ví dụ: Poisson hoặc Binomial).

Vấn đề đa cộng tuyến (collinearity) cũng được thảo luận như một vấn đề tiềm ẩn trong mô hình GLM, tương tự như trong hồi quy tuyến tính.

Ví dụ Minh họa:

Chương 8 sử dụng biểu đồ chẩn đoán từ việc phân tích dữ liệu cây anh đào (cherry tree data) để minh họa các kỹ thuật chẩn đoán. Các biểu đồ này hiển thị phần dư deviance đã chuẩn hóa (standardized deviance residuals) được vẽ chống lại các giá trị đã fitted (log μ̂i), chống lại các biến giải thích (log(Girth) và log(Height)), chống lại bộ dự báo tuyến tính và working responses. Những biểu đồ này giúp người dùng kiểm tra trực quan liệu mối quan hệ giữa biến giải thích và phản hồi có phù hợp với dạng tuyến tính trên thang đo của bộ dự báo tuyến tính hay không, và liệu phương sai của các phần dư có đồng nhất (constant variance) hay tuân theo hàm phương sai được giả định hay không.

Ngoài ra, các biểu đồ chẩn đoán như biểu đồ phần dư deviance chống lại căn bậc hai của fitted values và biểu đồ Cook’s distance cũng được hiển thị trong phần Case Study của Chương 10 (cho dữ liệu sỏi thận - kidney stone data), minh họa cách áp dụng các công cụ từ Chương 8 cho một GLM cụ thể (Poisson) để kiểm tra sự phù hợp và xác định các điểm ảnh hưởng.

8.2 Vai trò và Liên kết

Chương 8 đóng vai trò là một bước kiểm tra chất lượng thiết yếu trong quy trình mô hình hóa GLM. Nó cung cấp các kỹ thuật để xác thực các giả định của mô hình đã được fitted bằng các phương pháp ước lượng từ Chương 6 và được sử dụng để đưa ra suy luận trong Chương 7.

CHƯƠNG 9: MÔ HÌNH TUYẾN TÍNH TỔNG QUÁT (GLM) NHỊ THỨC (BINOMIAL GLM)

Chương 9 tập trung vào việc trình bày chi tiết Mô hình Tuyến tính Tổng quát (GLM) nhị thức (Binomial GLM), một loại GLM được mô tả là phổ biến nhất trong tất cả các loại GLM. Mục tiêu chính là hướng dẫn người đọc cách mô hình hóa dữ liệu tỷ lệ (proportions), nơi dữ liệu thu được dưới dạng số trường hợp ‘thành công’ trên tổng số thử nghiệm độc lập. Chương này đi sâu vào cấu trúc của mô hình, các hàm liên kết (link functions) thông dụng, cách diễn giải kết quả, và thảo luận các vấn đề thực tế như phân tán quá mức (overdispersion). Nó áp dụng lý thuyết GLM tổng quát từ các chương trước vào một trường hợp cụ thể và rất hữu ích.

9.1 Nội dung chính

Nội dung chính của Chương 9 bao gồm các khái niệm cốt lõi, các phương pháp mô hình hóa, và các vấn đề liên quan đến Binomial GLM.

Các Khái niệm và Lý thuyết Cốt lõi:

Dữ liệu được mô hình hóa là dữ liệu tỷ lệ, thường phát sinh từ các tình huống có số lượng thử nghiệm cố định và đếm số lần “thành công”.

Thành phần ngẫu nhiên của mô hình là phân phối nhị thức (Binomial distribution),. Phân phối nhị thức là một thành viên của họ Mô hình Phân tán Hàm mũ (Exponential Dispersion Models - EDM),. Các đặc tính của phân phối nhị thức như hàm phương sai V(μ) = μ(1-μ), tham số chính tắc (canonical parameter) \(θ = log(μ/(1-μ))\), và độ lệch đơn vị (unit deviance) được liệt kê.

Mô hình nhị thức, như các GLM khác, bao gồm một thành phần ngẫu nhiên và một thành phần hệ thống được liên kết bởi một hàm liên kết. Thành phần hệ thống là bộ dự báo tuyến tính (linear predictor).

Các khái niệm về Tỷ lệ cược (Odds) và Tỷ lệ cược chênh lệch (Odds Ratios) là trọng tâm để diễn giải kết quả khi sử dụng hàm liên kết logit,.

Hàm liên kết cũng có thể được diễn giải theo cách tiếp cận ngưỡng (threshold interpretation),.

Các Mô hình và Phương pháp:

Mô hình chính là Binomial GLM. Nó có dạng kết nối giá trị trung bình (tỷ lệ thành công) của biến phản hồi với bộ dự báo tuyến tính thông qua hàm liên kết đã chọn,.

Chương thảo luận các hàm liên kết phổ biến cho dữ liệu tỷ lệ:

  • Hàm liên kết Logit (logit link): \(log(μ/(1-μ))\). Đây là hàm liên kết chính tắc (canonical link) và thường được sử dụng vì cho phép diễn giải kết quả dễ dàng dưới dạng tỷ lệ cược,.

  • Hàm liên kết Probit (probit link): liên quan đến phân phối tích lũy chuẩn (normal CDF) và có thể được diễn giải dưới dạng ngưỡng,.

  • Hàm liên kết Log-Log bù (complementary log-log link): cũng được giới thiệu và có thể phù hợp cho một số loại dữ liệu nhất định, ví dụ trong phân tích assay,.

    Các phương pháp ước lượng (từ Chương 6), và suy luận (từ Chương 7), cho GLM tổng quát được áp dụng. Tuy nhiên, chương có một cảnh báo về việc kiểm định Wald (Wald tests) có thể thất bại trong một số trường hợp của Binomial GLM.

    Vấn đề phân tán quá mức (overdispersion), là một trọng tâm, xảy ra khi phương sai quan sát được lớn hơn giả định của mô hình nhị thức. Chương 8 đã giới thiệu các biện pháp khắc phục chung như Ước lượng Quasi-Likelihood, và Chương 9 thảo luận về sự xuất hiện của overdispersion trong Binomial GLM và các tác động của nó,.

    Các kỹ thuật chẩn đoán mô hình từ Chương 8 được áp dụng. Biểu đồ phần dư (residuals plots), đặc biệt là phần dư quantile (Quantile residuals), và biểu đồ Q-Q chuẩn (Normal Q-Q plot) được sử dụng để kiểm tra sự phù hợp của mô hình và phát hiện các vấn đề như phân tán quá mức hoặc sai sót trong cấu trúc hệ thống. Một điểm quan trọng được nhấn mạnh là kiểm định sự phù hợp tổng thể (goodness-of-fit tests) không phù hợp cho dữ liệu nhị phân (binary responses), tức là trường hợp chỉ có 1 thử nghiệm cho mỗi quan sát (m=1),.

Ví dụ Cụ thể:

Chương sử dụng dữ liệu về thuốc diệt côn trùng (deposit), để minh họa việc fitted một Binomial GLM. Dữ liệu này bao gồm tỷ lệ côn trùng bị tiêu diệt (Killed/Number) phụ thuộc vào lượng thuốc (Deposit) và loại thuốc (Insecticide).

Các biểu đồ chẩn đoán được trình bày cho mô hình fitted từ dữ liệu này, bao gồm biểu đồ phần dư quantile (Quantile residuals) vẽ chống lại các giá trị đã fitted (fitted values). Biểu đồ này giúp trực quan hóa liệu phần dư có phân tán ngẫu nhiên xung quanh 0 và có đồng nhất phương sai hay không, hỗ trợ kiểm tra giả định mô hình. Biểu đồ log-odds (logit) vẽ chống lại log(Deposit) cũng được sử dụng để đánh giá sự phù hợp của hàm liên kết logit.

Dữ liệu về sự nảy mầm của hạt (germ) cũng được sử dụng, thể hiện kết quả phân tích phương sai (ANOVA) từ một Binomial GLM, cho thấy cách đánh giá đóng góp của các biến giải thích vào mô hình.

Bộ dữ liệu về số ca mắc hội chứng Down (Downs Syndrome births) được đưa ra trong phần bài tập như một ví dụ dữ liệu tỷ lệ có thể được mô hình hóa bằng Binomial GLM.

9.2 Vai trò

Chương 9 đóng vai trò là ứng dụng chuyên sâu đầu tiên của khung lý thuyết GLM tổng quát cho một loại dữ liệu cụ thể và phổ biến: dữ liệu tỷ lệ,. Nó minh họa cách các nguyên tắc của GLM hoạt động trong thực tế và các thách thức (như overdispersion) có thể phát sinh.

CHƯƠNG 10: CÁC MÔ HÌNH CHO DỮ LIỆU ĐẾM - MÔ HÌNH GLM POISSON VÀ NEGATIVE

Chương 10 tập trung vào việc mô hình hóa dữ liệu đếm (count data), là dữ liệu thể hiện số lần xảy ra của một sự kiện (ví dụ: số ca bệnh, số sản phẩm lỗi, số cuộc gọi). Đây là loại dữ liệu rời rạc, không âm và thường không phù hợp với mô hình hồi quy tuyến tính chuẩn do tính chất và phân phối của chúng. Mục tiêu chính của chương là giới thiệu và trình bày cách sử dụng Mô hình Tuyến tính Tổng quát (GLM) với phân phối Poisson (Poisson GLM) và phân phối Negative Binomial (Negative Binomial GLM) như các công cụ phù hợp để phân tích dữ liệu đếm. Chương này đi sâu vào cấu trúc, cách diễn giải, ứng dụng, và đặc biệt là xử lý vấn đề phân tán quá mức (overdispersion), một vấn đề phổ biến trong dữ liệu đếm Poisson.

10.1 Nội dung chính

Các Khái niệm và Lý thuyết Cốt lõi:

Dữ liệu được mô hình hóa là dữ liệu đếm.

Thành phần ngẫu nhiên ban đầu dựa trên phân phối Poisson. Phân phối Poisson là một thành viên của họ Mô hình Phân tán Hàm mũ (EDM), với đặc tính quan trọng là trung bình bằng phương sai \((V(μ) = μ)\). Tham số chính tắc (canonical parameter) cho Poisson là \(log(μ)\).

Đối với dữ liệu đếm có phân tán quá mức, tức là phương sai lớn hơn trung bình, phân phối Poisson không còn phù hợp. Phân phối Negative Binomial được giới thiệu như một lựa chọn thay thế vì nó có cấu trúc phương sai cho phép phương sai lớn hơn trung bình (ví dụ: \(V(μ) = μ + μ²/k\)).

Hàm liên kết phổ biến nhất cho dữ liệu đếm là hàm liên kết log (log link): \(log(μ) = η\). Hàm liên kết này đảm bảo giá trị trung bình dự đoán (μ) luôn dương, phù hợp với bản chất của dữ liệu đếm, và cho phép diễn giải hiệu ứng của các biến giải thích dưới dạng nhân trên giá trị trung bình.

Khái niệm Offset được giới thiệu. Offset là một biến trong bộ dự báo tuyến tính có hệ số cố định bằng 1 (thường là log của một biến đo lường “exposure” hoặc “quy mô”), rất hữu ích khi mô hình hóa tốc độ (rates) (ví dụ: số sự kiện trên một đơn vị thời gian hoặc diện tích).

Các Mô hình và Phương pháp:

Poisson GLM là mô hình cơ bản cho dữ liệu đếm. Nó mô hình log của giá trị trung bình kỳ vọng của số đếm (μ) như một hàm tuyến tính của các biến giải thích: $log(μ) = β₀ + β₁x₁ + … + βₚxₚ $.

Mô hình Log-Linear (Log-Linear Models) được trình bày như một ứng dụng cụ thể của Poisson GLM để phân tích bảng tần suất (contingency tables). Các mô hình này giúp khám phá mối quan hệ và tương tác giữa các biến phân loại bằng cách mô hình hóa log của số đếm trong mỗi ô của bảng.

Negative Binomial GLM được sử dụng khi phát hiện phân tán quá mức. Nó là một mô hình thay thế cho Poisson GLM, cho phép phương sai linh hoạt hơn.

Mô hình Quasi-Poisson (Quasi-Poisson Models) là một cách khác để xử lý phân tán quá mức trong dữ liệu đếm bằng cách sử dụng ước lượng Quasi-Likelihood. Phương pháp này không giả định một phân phối cụ thể ngoài mối quan hệ trung bình-phương sai.

Các kỹ thuật chẩn đoán mô hình từ Chương 8 được áp dụng, bao gồm sử dụng phần dư (residuals) để kiểm tra sự phù hợp của mô hình. Kiểm định sự phù hợp tổng thể (Goodness-of-fit tests) sử dụng độ lệch (deviance) được thảo luận cho Poisson GLMs.

Ví dụ Cụ thể:

Chương sử dụng dữ liệu về sỏi thận (kidney stone data) để minh họa ứng dụng của mô hình log-linear cho bảng tần suất. Dữ liệu bao gồm số ca thành công/thất bại của hai phương pháp điều trị sỏi thận khác nhau, phân loại theo kích thước sỏi. Bằng cách fitted các Poisson GLM khác nhau (ví dụ: mô hình độc lập lẫn nhau, mô hình độc lập từng phần), chương cho thấy cách phân tích mối liên hệ giữa phương pháp điều trị, kích thước sỏi và kết quả điều trị. Ví dụ này minh họa cách Poisson GLM có thể được sử dụng để kiểm tra các giả định độc lập trong dữ liệu tần suất.

Dữ liệu pock (pock data) được dùng để minh họa vấn đề phân tán quá mức và cách sử dụng mô hình Negative Binomial hoặc Quasi-Poisson. Dữ liệu này cho thấy số lượng pock (dấu vết hoạt động của virus) đếm được ở các độ pha loãng khác nhau. Biểu đồ cho thấy phương sai tăng theo giá trị trung bình, vi phạm giả định Poisson. Mô hình Negative Binomial và Quasi-Poisson được fitted và các biểu đồ chẩn đoán cho thấy sự phù hợp tốt hơn so với mô hình Poisson chuẩn.

10.2 Vai trò

Chương 10 là một trong những chương ứng dụng cốt lõi sau khi trình bày lý thuyết GLM tổng quát (Chương 5-8). Nó cung cấp các mô hình thiết yếu cho một loại dữ liệu rất phổ biến (dữ liệu đếm), mở rộng khả năng mô hình hóa vượt ra ngoài hồi quy tuyến tính chuẩn.

CHƯƠNG 11: DỮ LIỆU LIÊN TỤC DƯƠNG - MÔ HÌNH GLM VỚI PHÂN PHỐI GAMMA VÀ INVERSE GAUSSION

Chương 11 tập trung vào việc mô hình hóa dữ liệu liên tục dương, tức là dữ liệu có giá trị thực và luôn lớn hơn 0 (ví dụ: thời gian, trọng lượng, giá trị tiền tệ). Đây là một loại dữ liệu phổ biến không đáp ứng các giả định của hồi quy tuyến tính chuẩn, đặc biệt là giả định về phân phối và mối quan hệ trung bình-phương sai. Mục tiêu chính của chương là giới thiệu và hướng dẫn áp dụng Mô hình Tuyến tính Tổng quát (GLM) sử dụng phân phối Gamma (Gamma GLM) và phân phối Inverse Gaussian (Inverse Gaussian GLM) như các công cụ phù hợp cho loại dữ liệu này. Chương này khám phá cấu trúc của các mô hình này, cách diễn giải kết quả, và cách áp dụng các kỹ thuật chẩn đoán GLM vào chúng.

11.1 Nội dung chính

Các Khái niệm và Lý thuyết Cốt lõi:

Dữ liệu phản hồi được mô hình hóa là dữ liệu liên tục dương.

Thành phần ngẫu nhiên của GLM cho loại dữ liệu này dựa trên hai phân phối từ họ Mô hình Phân tán Hàm mũ (EDM): phân phối Gamma và phân phối Inverse Gaussian.

Điểm khác biệt quan trọng so với phân phối chuẩn (được sử dụng trong hồi quy tuyến tính) là mối quan hệ giữa trung bình (μ) và phương sai (\(var[y] = φV(μ)\)). Đối với phân phối Gamma, hàm phương sai là \(V(μ) = μ²\), ngụ ý hệ số biến thiên \(CV = √var[y]/μ\) là hằng số. Đối với phân phối Inverse Gaussian, hàm phương sai là \(V(μ) = μ³\)

Tham số phân tán (\(\phi\)) là một thành phần của mô hình, ảnh hưởng đến phương sai nhưng không bị ảnh hưởng bởi các biến giải thích trực tiếp. Việc ước lượng tham số này là một phần quan trọng của việc fitted mô hình.

Các hàm liên kết phổ biến được sử dụng bao gồm hàm liên kết log (log link) (\(η = log μ\)), hàm liên kết identity (\(η = μ\)), và hàm liên kết inverse (\(η = 1/μ\)). Hàm liên kết log đảm bảo giá trị trung bình dự đoán luôn dương và cho phép diễn giải hiệu ứng của biến giải thích dưới dạng nhân trên trung bình. Hàm liên kết log là hàm liên kết chính tắc (canonical link) cho phân phối Gamma, và hàm liên kết inverse là chính tắc cho phân phối Inverse Gaussian.

Các Mô hình và Phương pháp:

Gamma GLM được sử dụng khi dữ liệu có tính chất mà phương sai tăng tỷ lệ thuận với bình phương của giá trị trung bình, hoặc khi hệ số biến thiên được giả định là gần như hằng số.

Inverse Gaussian GLM được sử dụng khi phương sai tăng tỷ lệ thuận với lũy thừa bậc ba của giá trị trung bình, hoặc dựa trên cơ sở lý thuyết cho các quá trình như thời gian chờ đợi (hitting times).

Chương này thảo luận việc lựa chọn hàm liên kết phù hợp dựa trên bản chất dữ liệu và mục tiêu phân tích.

Các phương pháp ước lượng tham số mô hình được dựa trên nguyên lý ước lượng hợp lý tối đa (Maximum Likelihood Estimation - MLE) hoặc Quasi-Likelihood, đã được giới thiệu trong các chương trước (Chương 6, 8).

Kiểm tra giả định mô hình và chẩn đoán được thực hiện bằng cách sử dụng các kỹ thuật đã trình bày trong Chương 8 (Diagnostics). Điều này bao gồm việc sử dụng các loại phần dư khác nhau (deviance residuals, Pearson residuals, quantile residuals) và các biểu đồ chẩn đoán để kiểm tra sự phù hợp của thành phần ngẫu nhiên và thành phần hệ thống.

Ví dụ Cụ thể:

Chương sử dụng dữ liệu về tính thấm của vật liệu xây dựng (perm data) làm trường hợp nghiên cứu (Case Study 1). Dữ liệu này đo lường tính thấm (một giá trị liên tục dương) của các tấm vật liệu. Biểu đồ của dữ liệu cho thấy rõ ràng phương sai tăng theo giá trị trung bình, cho thấy mô hình hồi quy tuyến tính chuẩn không phù hợp. Mô hình Inverse Gaussian được đề xuất dựa trên cơ sở lý thuyết về chuyển động Brown của các hạt qua vật liệu. Việc fitted một Inverse Gaussian GLM với hàm liên kết log và diễn giải hệ số cho biến Machine minh họa cách áp dụng và diễn giải kết quả cho loại dữ liệu này. Ví dụ này nhấn mạnh tầm quan trọng của việc kiểm tra mối quan hệ trung bình-phương sai để chọn mô hình GLM phù hợp.

Trường hợp nghiên cứu thứ hai sử dụng dữ liệu năng suất và mật độ (yieldden data) để minh họa việc sử dụng Gamma GLM. Dữ liệu bao gồm Yield và Dens, và biến phản hồi được xem xét là Yield * Dens. Một mô hình sử dụng phân phối Gamma với hàm liên kết inverse được fitted, dựa trên một mô hình lý thuyết. Bảng ANOVA cho thấy sự đóng góp của các biến vào mô hình.

Vai trò

Chương 11 đóng vai trò là một trong những chương ứng dụng chính của khuôn khổ GLM, tập trung vào loại dữ liệu liên tục dương, bổ sung vào các ứng dụng cho dữ liệu nhị phân (Chương 9) và dữ liệu đếm (Chương 10). Nó minh họa cách áp dụng lý thuyết GLM tổng quát vào các tình huống cụ thể với các đặc điểm dữ liệu khác nhau.

CHƯƠNG 12: PHÂN PHỐI TWEEDIE (TWEEDIE GLM)

Chương 12 mở rộng phạm vi của các Mô hình Tuyến tính Tổng quát (GLM) bằng cách giới thiệu GLM dựa trên Phân phối Tweedie (Tweedie GLM). Trong khi các chương trước đã tập trung vào các phân phối cụ thể như Binomial (Chương 9), Poisson và Negative Binomial (Chương 10), Gamma và Inverse Gaussian (Chương 11), Chương 12 cung cấp một khuôn khổ thống nhất cho nhiều loại dữ liệu phản hồi, đặc biệt là những dữ liệu mà phương sai có mối quan hệ hàm mũ với giá trị trung bình, được mô tả bởi hàm phương sai \(V(\mu) = \mu^\xi\). Mục tiêu chính của chương là trình bày cấu trúc của Phân phối Tweedie như một mô hình phân tán hàm mũ (EDM), khám phá cách các phân phối phổ biến khác là các trường hợp đặc biệt của nó, và hướng dẫn cách ước lượng và áp dụng Tweedie GLM, bao gồm cả việc ước lượng tham số chỉ mục \(\xi\).

12.1 Nội dung chính

Các Khái niệm và Lý thuyết Cốt lõi:

Phân phối Tweedie là một họ các mô hình phân tán hàm mũ (EDM).

Đặc điểm xác định của Phân phối Tweedie là hàm phương sai \(V(\mu)\) có dạng \(V(\mu) = \mu^\xi\), trong đó \(\mu\) là giá trị trung bình và \(\xi\) (xi) là tham số chỉ mục (index parameter).

Tham số chỉ mục \(\xi\) quyết định hình dạng và tính chất của phân phối. Các giá trị cụ thể của \(\xi\) tương ứng với các phân phối đã biết:

  • \(\xi = 1\) là Phân phối Poisson (khi tham số phân tán \(\phi = 1\)).

  • \(\xi = 2\) là Phân phối Gamma.

  • \(\xi = 3\) là Phân phối Inverse Gaussian.

Các giá trị \(\xi\) khác cho phép mô hình hóa các mối quan hệ trung bình-phương sai đa dạng hơn.

Chương thảo luận về cấu trúc của Tweedie EDM, bao gồm mối quan hệ giữa tham số chính tắc \(\theta\) và hàm tích lũy (cumulant function) \(\kappa(\theta)\) dựa trên \(\xi\). Nó lưu ý rằng Phân phối Tweedie là EDM nếu \(\xi\) được biết trước.

Các Mô hình và Phương pháp:

Tweedie GLM được xây dựng bằng cách sử dụng Phân phối Tweedie làm thành phần ngẫu nhiên, kết hợp với thành phần hệ thống (linear predictor) thông qua hàm liên kết. Hàm liên kết chính tắc (canonical link) cho Phân phối Tweedie phụ thuộc vào giá trị của \(\xi\).

Điểm đặc biệt của Tweedie GLM so với các GLM cụ thể (\(\xi\) cố định) là khả năng ước lượng tham số chỉ mục \(\xi\) từ dữ liệu. Các phương pháp ước lượng \(\xi\) được trình bày chi tiết (Mục 12.3.2).

Việc ước lượng các tham số mô hình khác (hệ số hồi quy \(\beta\) và tham số phân tán \(\phi\)) được thực hiện bằng các kỹ thuật ước lượng hợp lý tối đa (MLE) hoặc Quasi-Likelihood, tương tự như các GLM khác, dựa trên framework đã học trong Chương 6. Quy trình fitted Tweedie GLM được mô tả trong Mục 12.3.3.

Tweedie GLM đặc biệt hữu ích cho dữ liệu liên tục dương, bao gồm cả trường hợp có các giá trị bằng 0 chính xác. Đây là loại dữ liệu phổ biến trong các lĩnh vực như bảo hiểm (ví dụ: số tiền yêu cầu bồi thường, có thể bằng 0), nơi mô hình Compound Poisson-Gamma (\(\xi\) trong khoảng (1, 2)) thường được sử dụng [không trực tiếp trong nguồn, nhưng suy ra từ việc Tweedie (1,2) bao gồm 0 và liên tục].

Ví dụ Cụ thể:

Chương bao gồm các trường hợp nghiên cứu (Case Studies) (Mục 12.4). Một ví dụ khả dĩ (được gợi ý bởi bảng dữ liệu trong nguồn) là dữ liệu về việc sử dụng polythene và doanh thu của các công ty mỹ phẩm ở Anh (Problem 12.10 / Table 12.4). Dữ liệu này có thể chứa các giá trị bằng 0 (một số công ty không sử dụng polythene hoặc có doanh thu bằng 0 trong một giai đoạn), đồng thời các giá trị dương là liên tục.

Việc mô hình hóa dữ liệu này bằng Tweedie GLM cho phép phân tích mối quan hệ giữa các biến phản hồi (ví dụ: Polythene use) và các biến giải thích (ví dụ: Turnover), đồng thời xử lý hiệu quả sự hiện diện của cả giá trị 0 và giá trị dương liên tục trong biến phản hồi. Điều này minh họa khả năng của Tweedie GLM trong việc xử lý các cấu trúc dữ liệu phức tạp mà các GLM truyền thống (như Poisson cho số đếm rời rạc hoặc Gamma cho giá trị dương liên tục) không phù hợp một cách trực tiếp.

12.2 Vai trò

Chương 12 đóng vai trò là chương tổng hợp và mở rộng trong cấu trúc tài liệu, mang đến một cái nhìn thống nhất về nhiều phân phối khác nhau dưới cùng một mái nhà Tweedie. Nó giới thiệu một công cụ mạnh mẽ và linh hoạt cho phép mô hình hóa một phạm vi rộng hơn các loại dữ liệu so với các GLM đã thảo luận trước đó, đặc biệt là dữ liệu liên tục dương có hoặc không có giá trị 0. Chương này dựa trên nền tảng của toàn bộ khuôn khổ GLM đã được xây dựng:

  • Cấu trúc GLM (Chương 5): Định nghĩa EDM và cấu trúc chung của GLM. Tweedie được trình bày như một họ EDM quan trọng.

  • Ước lượng GLM (Chương 6): Các phương pháp ước lượng (MLE, Quasi-Likelihood) là cơ sở để fitted Tweedie GLM và ước lượng các tham số \(\beta\)\(\phi\).

  • Suy luận GLM (Chương 7): Các kỹ thuật kiểm định giả thuyết và khoảng tin cậy được áp dụng để diễn giải kết quả của Tweedie GLM.

  • Chẩn đoán GLM (Chương 8): Mặc dù không được chi tiết trong các đoạn trích về Chương 12, các kỹ thuật chẩn đoán tổng quát từ Chương 8 là cần thiết để đánh giá sự phù hợp của mô hình Tweedie. Khái niệm Quasi-Likelihood từ Chương 8 cũng liên quan đến việc ước lượng \(\phi\)

CHƯƠNG 13: BÀI TẬP BỔ SUNG

Chương 13, mang tiêu đề “Extra Problems”, không giới thiệu lý thuyết mới mà đóng vai trò là một tập hợp các bài tập và nghiên cứu điển hình bổ sung. Mục tiêu chính của chương này là cung cấp cho người đọc cơ hội để vận dụng và củng cố kiến thức đã học về Mô hình Tuyến tính Tổng quát (GLM) từ các chương trước, thông qua việc giải quyết các vấn đề phân tích dữ liệu thực tế. Chương nhấn mạnh vào việc ứng dụng thực hành các phương pháp và mô hình GLM đã được trình bày, cho phép người đọc làm quen với việc xử lý các loại dữ liệu đa dạng và diễn giải kết quả mô hình.

13.1 Nội dung chính

Chương 13 không giới thiệu các khái niệm hoặc lý thuyết cốt lõi mới. Thay vào đó, nó yêu cầu người đọc áp dụng sâu sắc các nguyên lý nền tảng của GLM.

Các khái niệm trọng tâm được vận dụng bao gồm:

  • Cấu trúc GLM: Thành phần ngẫu nhiên (lựa chọn phân phối phù hợp từ họ EDM), thành phần hệ thống (hồi quy tuyến tính), và hàm liên kết phù hợp.

  • Ước lượng mô hình: Sử dụng các phương pháp ước lượng tham số (như Hợp lý Tối đa hoặc Quasi-Likelihood).

  • Suy luận thống kê: Thực hiện kiểm định giả thuyết và xây dựng khoảng tin cậy cho các tham số mô hình.

  • Chẩn đoán mô hình: Đánh giá sự phù hợp của mô hình với dữ liệu bằng cách sử dụng các công cụ chẩn đoán như phần dư (residuals) và các kỹ thuật kiểm tra giả định.

Các Mô hình và Phương pháp:

Chương tập trung vào việc áp dụng các mô hình GLM cụ thể đã được trình bày chi tiết trong các chương trước cho các bộ dữ liệu khác nhau. Trọng tâm là việc lựa chọn mô hình phù hợp (phân phối, hàm liên kết) dựa trên đặc điểm của biến phản hồi và các biến giải thích, sau đó fitted mô hình và diễn giải kết quả.

Các loại mô hình GLM được ngụ ý sử dụng trong các bài tập bao gồm, nhưng không giới hạn ở:

  • Binomial GLMs (Chương 9) cho dữ liệu tỷ lệ hoặc số lần thành công trong tổng số thử nghiệm (ví dụ: số ca bệnh trên tổng số ca sinh, số phôi chết trên tổng số phôi, tỷ lệ chết trên tổng số trứng).

  • Poisson GLMs và Negative Binomial GLMs (Chương 10) cho dữ liệu đếm (ví dụ: số yêu cầu bồi thường trong dữ liệu bảo hiểm, số loài trên các đảo). Việc xử lý overdispersion là một khía cạnh quan trọng.

  • Gamma GLMs và có thể Tweedie GLMs (Chương 11 & 12) cho dữ liệu liên tục dương, đặc biệt là dữ liệu tiền tệ như chi phí yêu cầu bồi thường trong bảo hiểm, có thể có cả giá trị 0.

  • Các phương pháp được thực hành bao gồm fitted mô hình bằng phần mềm thống kê (như R), phân tích phương sai (ANOVA) cho GLM, và sử dụng các đồ thị chẩn đoán để kiểm tra giả định.

Ví dụ Cụ thể:

Một ví dụ cụ thể được cung cấp dưới dạng dữ liệu trong bài tập là Dữ liệu bảo hiểm ô tô của Canada (Problem 13.6, được gọi là “motorins”). Bộ dữ liệu này bao gồm các thông tin như Hạng mức (Merit Class), Số người được bảo hiểm (Insured), Phí bảo hiểm (Premium), Số yêu cầu bồi thường (Claims Cost), và Số yêu cầu bồi thường (Claims Cost).

Dữ liệu này minh họa việc áp dụng GLM cho dữ liệu có cấu trúc phức tạp thường gặp trong bảo hiểm. Biến phản hồi có thể là:

  • Số yêu cầu bồi thường: Đây là dữ liệu đếm, có thể được mô hình hóa bằng Poisson hoặc Negative Binomial GLM (Chương 10). Số người được bảo hiểm hoặc phí bảo hiểm có thể được sử dụng làm offset để mô hình hóa tỷ lệ yêu cầu bồi thường trên mỗi người được bảo hiểm hoặc mỗi phí bảo hiểm.

  • Chi phí yêu cầu bồi thường: Đây là dữ liệu liên tục dương, thường được mô hình hóa bằng Gamma GLM (Chương 11). Nếu chi phí có thể bằng 0, Tweedie GLM (Chương 12) sẽ là lựa chọn phù hợp hơn.

    Ví dụ này buộc người đọc phải lựa chọn phân phối và hàm liên kết thích hợp, xây dựng thành phần hệ thống với các biến giải thích (như Merit Class), fitted mô hình bằng phần mềm, và diễn giải ý nghĩa của các hệ số hồi quy trong ngữ cảnh của bảo hiểm.

13.2 Vai trò

Chương 13 đóng vai trò là giai đoạn tích hợp và thực hành trong tài liệu. Nó không phải là nền tảng lý thuyết mới hay cầu nối đến các chủ đề nâng cao (vì nó là một trong những chương cuối cùng chứa nội dung cốt lõi trước phần phụ lục và lời giải). Thay vào đó, vai trò của nó là củng cố sự hiểu biết bằng cách cho phép người đọc áp dụng toàn bộ khuôn khổ GLM đã học vào các tình huống dữ liệu đa dạng của thế giới thực. Chương này phụ thuộc hoàn toàn vào nội dung của các chương trước.

PHỤ LỤC A: USING R FOR DATA ANALYST

Phụ lục A “Using R for Data Analysis”, là phần giới thiệu về R, một môi trường mạnh mẽ và miễn phí dành cho tính toán thống kê và đồ họa. Mục tiêu chính của phụ lục này là giúp người đọc làm quen với những kiến thức cơ bản và kỹ năng thực hành cần thiết để sử dụng R trong phân tích dữ liệu, đặc biệt là để làm việc với các Mô hình Tuyến tính Tổng quát (GLM) sẽ được trình bày chi tiết ở các chương sau của sách.

Trước khi sử dụng R, bạn cần chuẩn bị môi trường làm việc. Điều này bao gồm việc tải xuống và cài đặt R từ các trang web chính thức như The R Project for Statistical Computing hoặc CRAN (Comprehensive R Archive Network). CRAN là nơi chứa các tệp cần thiết để tải xuống R và các gói (packages) bổ sung. Các gói này chứa các hàm R thêm chức năng cho R. Một gói quan trọng cho cuốn sách này là gói GLMsData, chứa hầu hết các bộ dữ liệu được sử dụng trong sách. Bạn có thể cài đặt gói bằng cách sử dụng hàm install.packages() trong R. Sau khi cài đặt, bạn phải nạp gói vào phiên làm việc hiện tại của R bằng lệnh library(package_name) trước khi sử dụng các hàm hoặc dữ liệu trong gói đó. Ví dụ, để sử dụng dữ liệu từ gói GLMsData, bạn cần chạy library(GLMsData).

Phụ lục hướng dẫn sử dụng R một cách cơ bản. R hoạt động thông qua dòng lệnh, nơi bạn nhập các lệnh tại dấu nhắc >. Bạn có thể sử dụng R như một máy tính nâng cao để thực hiện các phép tính. Kết quả tính toán hoặc dữ liệu có thể được gán vào biến bằng ký hiệu \(<-\) hoặc \(=\). Tên biến trong R có phân biệt chữ hoa, chữ thường (ví dụ: HT, Ht và ht là ba biến khác nhau) và không được bắt đầu bằng chữ số. Dữ liệu trong R thường được lưu trữ dưới dạng data frame. Data frame có cấu trúc giống bảng, với các biến (cột) và các trường hợp/quan sát (hàng). Bạn có thể nạp dữ liệu vào R data frame bằng nhiều cách. Các bộ dữ liệu đi kèm R hoặc các gói đã cài đặt (như GLMsData) có thể được nạp bằng hàm data(dataset_name). Dữ liệu lưu trữ trong tệp văn bản (như .csv, .txt) có thể được đọc vào R bằng các hàm như read.csv() hoặc read.delim().

Sau khi nạp data frame, các biến riêng lẻ bên trong nó chưa hiển thị trực tiếp. Bạn có thể truy cập từng biến bằng cách sử dụng ký hiệu \(, ví dụ data_frame_name\)variable_name (như lungcap$Age). Hàm with() cũng là một cách khác để làm việc với các biến trong data frame mà không cần lặp lại tên data frame. Việc sử dụng attach() được đề cập nhưng không khuyến khích do có thể gây ra các tác dụng phụ không mong muốn.

Phụ lục giới thiệu một số hàm cơ bản để làm việc với dữ liệu và thực hiện thống kê. Bạn có thể xem tên các biến trong data frame bằng hàm names(). Hàm summary(object) cung cấp bản tóm tắt của biến hoặc data frame. Lưu ý rằng summary() sẽ hiển thị kết quả khác nhau cho biến định lượng (quantitative) và biến định tính (qualitative/factor). Bạn có thể chuyển đổi một biến định lượng thành biến định tính (factor) bằng hàm factor(). Các hàm thống kê cơ bản khác như mean(), median(), sd(), var() cũng được giới thiệu.

Vẽ đồ thị cơ bản cũng là một phần quan trọng. Hàm plot() thường được sử dụng để tạo đồ thị. Bạn có thể chỉ định biến cho trục y và x bằng công thức dạng \(y \sim x\) và sử dụng đối số data để chỉ định data frame chứa các biến đó, ví dụ: plot(FEV ~ Age, data = lungcap).

Một ví dụ nổi bật được sử dụng trong phụ lục này và xuyên suốt các chương đầu là dữ liệu dung tích phổi (lungcap), bao gồm các biến như Tuổi, FEV (dung tích thở cưỡng bức), Chiều cao, Giới tính, và Tình trạng hút thuốc. Dữ liệu này minh họa cách nạp, xem, tóm tắt và vẽ đồ thị trong R.

Cuối cùng, phụ lục hướng dẫn cách tìm kiếm trợ giúp trong R bằng cách sử dụng ?function_name. Ngoài ra, bạn cũng có thể tự viết các hàm đơn giản của riêng mình.

Tóm lại, Phụ lục A là nền tảng thực hành quan trọng, trang bị cho người đọc các kỹ năng cơ bản nhất để có thể sử dụng R để nạp dữ liệu, thao tác, tóm tắt và vẽ đồ thị. Những kỹ năng này là bắt buộc để theo dõi và thực hành các ví dụ về Hồi quy Tuyến tính (lm()) và GLM (glm()) cùng các phân tích chẩn đoán và mô hình phức tạp hơn được trình bày trong các chương tiếp theo của sách. Việc sử dụng R được tích hợp chặt chẽ trong toàn bộ cuốn sách

PHỤ LỤC B: THE GLMsDATA PACKAGE

Gói GLMsData là một gói trong môi trường tính toán thống kê R. Nó được tạo ra bởi các tác giả của cuốn sách “Generalized Linear Models With Examples in R”, Peter K. Dunn và Gordon K. Smyth. Mục đích chính của gói này là tổng hợp và cung cấp hầu hết các bộ dữ liệu được sử dụng làm ví dụ và bài tập trong cuốn sách. Việc sử dụng gói GLMsData được coi là thiết yếu để chạy các đoạn mã R và thực hành theo nội dung cuốn sách. Gói này hiện có sẵn trên mạng lưới kho lưu trữ toàn diện cho R, được gọi là CRAN (Comprehensive R Archive Network), và có thể được tải xuống từ đó. Phiên bản cụ thể của GLMsData được sử dụng khi chuẩn bị cuốn sách là 1.0.0.

Để sử dụng GLMsData, bạn cần tải xuống và cài đặt gói này, khác với một số gói đi kèm sẵn với bản cài đặt R cơ bản. Quá trình cài đặt có thể được thực hiện một cách tiện lợi thông qua menu trong R hoặc RStudio (bằng cách chọn CRAN mirror và tìm tên gói), hoặc đơn giản hơn bằng cách sử dụng lệnh install.packages(“GLMsData”) từ dòng lệnh R. Sau khi gói đã được cài đặt thành công trên máy tính của bạn, bạn có thể sử dụng nó trong bất kỳ phiên làm việc nào của R.

Trong một phiên R cụ thể, gói GLMsData (hoặc bất kỳ gói nào khác đã cài đặt) phải được nạp vào phiên làm việc bằng cách sử dụng lệnh library(GLMsData). Sau khi nạp gói, bạn có thể truy cập các bộ dữ liệu riêng lẻ mà nó chứa bằng cách sử dụng hàm data(dataset_name), ví dụ: lệnh data(lungcap) sẽ đưa bộ dữ liệu lungcap vào môi trường làm việc của bạn. Gói này bao gồm 97 bộ dữ liệu khác nhau, được liệt kê chi tiết cùng với mô tả ngắn gọn trong phụ lục B của sách. Các ví dụ về dữ liệu có trong gói bao gồm dữ liệu dung tích phổi (lungcap), dữ liệu về chim ồn ào (nminer), dữ liệu cây bồ đề (lime), dữ liệu độ thấm vật liệu (perm), và nhiều bộ dữ liệu khác được sử dụng trong các chương sau. Khi dữ liệu đã được nạp dưới dạng data frame, các biến cụ thể bên trong data frame đó có thể được truy cập bằng ký hiệu $ (ví dụ: lungcap$Age).

Để nhận trợ giúp về gói GLMsData nói chung (nếu đã được cài đặt), bạn có thể sử dụng lệnh library(help=“GLMsData”) tại dấu nhắc R. Nếu gói đã được nạp, bạn có thể tìm hiểu chi tiết về một bộ dữ liệu cụ thể trong gói bằng lệnh ?dataset_name, chẳng hạn như ?lungcap.

Tóm lại, gói GLMsData đóng vai trò là một nguồn tài nguyên dữ liệu trung tâm cho cuốn sách, cung cấp các bộ dữ liệu thực tế cần thiết để người đọc có thể trực tiếp áp dụng và thực hành các kỹ thuật phân tích dữ liệu và Mô hình Tuyến tính Tổng quát bằng R, giúp việc học lý thuyết trở nên hiệu quả hơn thông qua các ví dụ cụ thể.


II. THỐNG KÊ MÔ TẢ

Thống kê mô tả (Descriptive Statistics) là bước đầu tiên trong quá trình phân tích dữ liệu, nhằm mục đích tóm tắt, trình bày và mô tả các đặc trưng cơ bản của dữ liệu thu thập được. Thông qua các chỉ số như tần suất, trung bình, độ lệch chuẩn, giá trị cực trị, và biểu đồ, thống kê mô tả giúp người phân tích hiểu rõ cấu trúc dữ liệu, xác định được xu hướng tổng quát, kiểm tra sự bất thường và đưa ra các nhận định ban đầu để phục vụ cho các phân tích sâu hơn.

Tổng quan bộ dữ liệu

Bộ dữ liệu Supermarket Transactions là một tập dữ liệu mô phỏng các giao dịch mua hàng được thực hiện tại một hệ thống siêu thị. Dữ liệu này chứa các thông tin đa dạng liên quan đến hành vi tiêu dùng của khách hàng, đặc điểm nhân khẩu học và chi tiết sản phẩm. Cụ thể, mỗi dòng dữ liệu đại diện cho một giao dịch duy nhất, bao gồm các trường như ngày mua hàng (PurchaseDate), mã khách hàng (CustomerID), giới tính (Gender), tình trạng hôn nhân (MaritalStatus), sở hữu nhà (Homeowner), số lượng con (Children), thu nhập hàng năm (AnnualIncome), vị trí địa lý (City, StateorProvince, Country), cũng như thông tin sản phẩm như nhóm ngành hàng (ProductFamily), bộ phận sản phẩm (ProductDepartment), danh mục sản phẩm (ProductCategory), số lượng bán (UnitsSold) và doanh thu (Revenue).

Các biến trong dữ liệu được chia thành ba nhóm chính:

Biến định danh (Identifier / ID Variables): là các biến dùng để phân biệt giữa các đối tượng quan sát, không mang thông tin thống kê, bao gồm:

  • PurchaseDate

  • CustomerID

Biến định tính (Categorical / Qualitative Variables): bao gồm các biến phân loại không có ý nghĩa số học, bao gồm:

  • Gender

  • MaritalStatus

  • Homeowner

  • AnnualIncome

  • City

  • StateorProvince

  • Country

  • ProductFamily

  • ProductDepartment

  • ProductCategory

Biến định lượng (Numerical / Quantitative Variables): là các biến có thể đo lường được bằng số và có ý nghĩa số học, bao gồm:

  • Children

  • UnitsSold

  • Revenue

Việc xác định đúng loại biến giúp lựa chọn phương pháp mô tả phù hợp, đồng thời đảm bảo tính chính xác và hợp lý trong quá trình xử lý, phân tích dữ liệu.

library(csv)
tt <- read.csv('C:/Users/Admin/OneDrive/Desktop/TÀI LIỆU HỌC TẬP/PTDLDT/Supermarket Transactions.csv', header = T, sep = ";")

Thống kê mô tả biến định danh

Biến định danh không mang ý nghĩa đo lường hay phân loại có giá trị thống kê. Chúng chỉ có vai trò nhận diện, đánh dấu cá thể riêng biệt trong tập dữ liệu. Do đó:

  • CustomerID: là mã khách hàng duy nhất cho từng giao dịch – không có ý nghĩa để tính trung bình, tần suất hay vẽ biểu đồ. Mỗi giá trị là duy nhất → không thể nhóm hay tóm tắt một cách có ý nghĩa.

  • PurchaseDate: là thông tin thời gian của giao dịch – không phải biến định lượng hay phân loại, nên không thể tính các đặc trưng như trung bình hay độ lệch chuẩn một cách trực tiếp. Tuy nhiên, nó có thể dùng để trích xuất thông tin như tháng, quý, năm để phục vụ thống kê theo thời gian.

Thống kê mô tả biến định tính

1. Gender (giới tính)

Biến Gender là một biến định tính phân loại nhị phân, phản ánh giới tính của khách hàng trong tập dữ liệu. Việc thống kê mô tả biến này giúp nhận diện cơ cấu giới tính, từ đó hỗ trợ phân tích hành vi tiêu dùng hoặc xây dựng mô hình dự báo có phân biệt theo giới.

gender_freq <- table(tt$Gender)                 # Đếm số lượng F và M
gender_pct <- round(prop.table(gender_freq) * 100, 1)  # Tính phần trăm và làm tròn 1 chữ số
labels <- paste(names(gender_freq), "(", gender_pct, "%)", sep = "")  # Gộp nhãn
pie(gender_freq,
    labels = labels,
    col = c("lightpink", "lightblue"),
    main = "Biểu đồ thể hiện tỷ lệ giới tính")

Kết quả thống kê mô tả cho thấy tỷ lệ giới tính giữa nữ (F) và nam (M) trong tập dữ liệu khá cân bằng, với nữ chiếm 51% và nam chiếm 49%. Điều này cho thấy không có sự chênh lệch đáng kể giữa hai nhóm giới tính, giúp đảm bảo tính đại diện và hạn chế rủi ro sai lệch mẫu (sampling bias) khi thực hiện phân tích tiếp theo. Ngoài ra, việc phân bố giới tính đồng đều cũng tạo điều kiện thuận lợi cho các mô hình thống kê và phân tích dự báo có liên quan đến yếu tố giới.

2. MaritalStatus (tình trạng hôn nhân)

Biến MaritalStatus thể hiện tình trạng hôn nhân của khách hàng, trong đó giá trị ‘S’ đại diện cho độc thân (Single) và ‘M’ đại diện cho đã kết hôn (Married). Đây là một biến phân loại định tính nhị phân, thường được sử dụng trong phân tích hành vi tiêu dùng để tìm hiểu sự khác biệt trong nhu cầu và xu hướng mua sắm giữa các nhóm khách hàng. Ví dụ, khách hàng độc thân có thể ưu tiên tiêu dùng cho bản thân, trong khi khách hàng đã kết hôn có xu hướng chi tiêu cho gia đình hoặc cân nhắc tài chính nhiều hơn. Việc đưa biến này vào phân tích giúp hiểu sâu hơn về đặc điểm nhân khẩu học của khách hàng, từ đó phục vụ cho các mục tiêu tiếp thị, dự báo và phân khúc thị trường hiệu quả hơn.

marry_freq <- table(tt$MaritalStatus)                
marry_pct <- round(prop.table(marry_freq) * 100, 1) 
labels <- paste(names(marry_freq), "(", marry_pct, "%)", sep = "") 
pie(marry_freq,
    labels = labels,
    col = c("red", "green"),
    main = "Biểu đồ thể hiện tình trạng hôn nhân ")

Kết quả thống kê cho thấy tỷ lệ khách hàng đã kết hôn (M) chiếm khoảng 48.8%, trong khi tỷ lệ còn lại (51.2%) là khách hàng độc thân (S). Sự phân bố này tương đối đồng đều giữa hai nhóm tình trạng hôn nhân, cho thấy tập dữ liệu có tính đại diện tốt về mặt đặc điểm xã hội. Việc tỷ lệ khách hàng độc thân nhỉnh hơn một chút có thể phản ánh đặc điểm nhân khẩu học của tệp khách hàng, từ đó gợi ý rằng các chiến lược kinh doanh hoặc tiếp thị nên xem xét đến nhu cầu tiêu dùng cá nhân và linh hoạt của nhóm khách hàng này.

3. Homeowner

Biến Homeowner phản ánh tình trạng sở hữu nhà ở của khách hàng, với giá trị ‘Y’ biểu thị có sở hữu nhà và ‘N’ biểu thị không sở hữu nhà. Đây là một biến định tính nhị phân, thường được sử dụng để phân tích khả năng tài chính hoặc mức độ ổn định kinh tế của khách hàng. Việc sở hữu nhà có thể liên quan đến mức thu nhập, thói quen chi tiêu hoặc nhu cầu sản phẩm cụ thể, đặc biệt trong các ngành như bảo hiểm, bất động sản, hoặc tài chính tiêu dùng.

home_freq <- table(tt$Homeowner)                
home_pct <- round(prop.table(home_freq) * 100, 1) 
labels <- paste(names(home_freq), "(", home_pct, "%)", sep = "") 
pie(home_freq,
    labels = labels,
    col = c("grey", "yellow"),
    main = "Biểu đồ thể hiện tình trạng sở hữu nhà  ")

Kết quả thống kê cho thấy có 60.1% khách hàng trong tập dữ liệu sở hữu nhà ở (Y), trong khi 39.9% khách hàng không sở hữu nhà (N). Điều này cho thấy phần lớn khách hàng có mức độ ổn định tài chính tương đối cao. Việc sở hữu nhà có thể đồng nghĩa với nhu cầu tiêu dùng có xu hướng đầu tư và bền vững hơn, đồng thời cũng là một đặc điểm quan trọng để phân khúc khách hàng theo khả năng tài chính hoặc mục tiêu tiếp thị. Tuy nhiên, tỷ lệ gần 40% không sở hữu nhà cũng phản ánh một nhóm khách hàng đáng kể với các nhu cầu linh hoạt hơn, có thể hướng đến các sản phẩm dịch vụ có tính tiện lợi và ngắn hạn.

4. AnnualIncome

Biến AnnualIncome thể hiện khoảng thu nhập hàng năm của khách hàng, được phân loại thành các nhóm theo mức thu nhập tăng dần. Đây là biến định tính có thứ tự (ordinal categorical variable), vì các mức thu nhập được sắp xếp theo thứ tự từ thấp đến cao.

# Thống kê tần suất
table_income <- table(tt$AnnualIncome)
prop_income <- prop.table(table_income) * 100  # Tỷ lệ phần trăm

# Kết hợp thành data frame 
income_freq <- data.frame(
  Annualincome = names(table_income),
  Frequency = as.vector(table_income),
  Percentage = round(as.vector(prop_income), 2))

print(income_freq)
##    Annualincome Frequency Percentage
## 1   $10K - $30K      3090      21.98
## 2 $110K - $130K       643       4.57
## 3 $130K - $150K       760       5.41
## 4       $150K +       273       1.94
## 5   $30K - $50K      4601      32.73
## 6   $50K - $70K      2370      16.86
## 7   $70K - $90K      1709      12.16
## 8  $90K - $110K       613       4.36
library(ggplot2)
ggplot(income_freq, aes(x = reorder(Annualincome, -Frequency), y = Frequency)) +
  geom_bar(stat = "identity", fill = "purple") +
  labs(title = "Thu nhập hằng năm của khách hàng",
       x = "Mức thu nhập ",
       y = "Tần suất ") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Phân bố thu nhập của khách hàng cho thấy số lượng khách hàng lớn nhất thuộc nhóm có thu nhập từ 30K đến 50K đô la, với hơn 4,600 khách hàng. Nhóm có thu nhập thấp nhất, từ 10K đến 30K đô la, cũng có số lượng đáng kể, gần 3,100 khách hàng. Các nhóm thu nhập trung bình như 50K đến 70K và 70K đến 90K đô la cũng có lượng khách hàng khá lớn, lần lượt khoảng 2,370 và 1,700 khách hàng. Trong khi đó, số lượng khách hàng ở các nhóm thu nhập cao hơn, bao gồm từ 90K đến trên 150K đô la, thấp hơn nhiều, dao động từ khoảng 270 đến 760 khách hàng. Điều này cho thấy phần lớn khách hàng trong bộ dữ liệu tập trung vào các nhóm thu nhập từ thấp đến trung bình, với số lượng khách hàng thu nhập cao khá hạn chế.

5. City

# Thống kê tần suất
table_city <- table(tt$City)
prop_city <- prop.table(table_city) * 100  # Tỷ lệ phần trăm

# Kết hợp thành data frame 
city_freq <- data.frame(
  city = names(table_city),
  Frequency = as.vector(table_city),
  Percentage = round(as.vector(prop_city), 2))

print(city_freq)
##             city Frequency Percentage
## 1       Acapulco       383       2.72
## 2     Bellingham       143       1.02
## 3  Beverly Hills       811       5.77
## 4      Bremerton       834       5.93
## 5        Camacho       452       3.22
## 6    Guadalajara        75       0.53
## 7        Hidalgo       845       6.01
## 8    Los Angeles       926       6.59
## 9         Merida       654       4.65
## 10   Mexico City       194       1.38
## 11       Orizaba       464       3.30
## 12      Portland       876       6.23
## 13         Salem      1386       9.86
## 14    San Andres       621       4.42
## 15     San Diego       866       6.16
## 16 San Francisco       130       0.92
## 17       Seattle       922       6.56
## 18       Spokane       875       6.22
## 19        Tacoma      1257       8.94
## 20     Vancouver       633       4.50
## 21      Victoria       176       1.25
## 22   Walla Walla       160       1.14
## 23        Yakima       376       2.67
library(ggplot2)
ggplot(city_freq, aes(x = reorder(city, -Frequency), y = Frequency)) +
  geom_bar(stat = "identity", fill = "brown") +
  labs(title = "Sô lượng khách hàng đến từ các thành phố khác nhau ",
       x = "City ",
       y = "Lượng khách hàng") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Dữ liệu thể hiện rằng khách hàng đến từ nhiều thành phố khác nhau, trong đó một số thành phố có số lượng khách hàng cao vượt trội. Salem là thành phố có số lượng khách hàng cao nhất với 1.386 lượt, chiếm gần 10% toàn bộ dữ liệu. Tiếp theo là Tacoma (1.257 lượt) và Seattle (922 lượt), cho thấy sự tập trung đông khách hàng tại các khu vực này.

Ở chiều ngược lại, những thành phố như Guadalajara (75 lượt), San Francisco (130 lượt) và Bellingham (143 lượt) có lượng khách hàng khá thấp. Điều này cho thấy sự phân bổ khách hàng không đồng đều giữa các thành phố.

Một số thành phố có lượng khách hàng tương đối đồng đều như Portland (876 lượt), Spokane (875 lượt) và San Diego (866 lượt) – nằm trong nhóm cao nhưng không chênh lệch lớn so với nhau.

Tổng thể, dữ liệu phản ánh sự tập trung khách hàng nhiều hơn ở một số đô thị lớn hoặc trung tâm tiêu dùng, trong khi các khu vực nhỏ hơn có ít lượt giao dịch hơn.

6. StateorProvince

Biến StateorProvince biểu thị các khu vực hành chính như bang hoặc tỉnh nơi khách hàng sinh sống hoặc thực hiện giao dịch. Các giá trị gồm nhiều khu vực khác nhau như BC, CA, DF, GUERRERO, JALISCO, OR, VERACRUZ, WA, YUCATAN, ZACATECAS, thể hiện sự đa dạng về địa lý trong bộ dữ liệu. Việc phân bố theo các bang hoặc tỉnh giúp doanh nghiệp hiểu rõ hơn về đặc điểm khách hàng và xu hướng mua sắm theo vùng miền, từ đó hỗ trợ các chiến lược tiếp thị và quản lý kho hàng phù hợp. Đây là biến định danh nên chủ yếu được phân tích dưới dạng tần suất và tỷ lệ phần trăm cho từng khu vực, chứ không thể tính toán các chỉ số thống kê mô tả như trung bình hay độ lệch chuẩn.

# Thống kê tần suất
table_state <- table(tt$StateorProvince)
prop_state <- prop.table(table_state) * 100  # Tỷ lệ phần trăm

# Kết hợp thành data frame 
state_freq <- data.frame(
  StateOrProvince = names(table_state),
  Frequency = as.vector(table_state),
  Percentage = round(as.vector(prop_state), 2))

print(state_freq)
##    StateOrProvince Frequency Percentage
## 1               BC       809       5.75
## 2               CA      2733      19.44
## 3               DF       815       5.80
## 4         Guerrero       383       2.72
## 5          Jalisco        75       0.53
## 6               OR      2262      16.09
## 7         Veracruz       464       3.30
## 8               WA      4567      32.48
## 9          Yucatan       654       4.65
## 10       Zacatecas      1297       9.23
library(ggplot2)
ggplot(state_freq, aes(x = reorder(StateOrProvince, -Frequency), y = Frequency)) +
  geom_bar(stat = "identity", fill = "orange") +
  labs(title = "Lượng khách hàng đến từ các bang/tỉnh",
       x = "State or Province",
       y = "Lượng khách hàng ") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Phân bố khách hàng theo bang/tỉnh cho thấy bang Washington (WA) chiếm số lượng khách hàng lớn nhất với 4,567 người, tiếp theo là California (CA) với 2,733 khách hàng và Oregon (OR) với 2,262 khách hàng. Đây đều là những khu vực có lượng khách hàng tập trung cao. Các bang khác như Zacatecas, British Columbia (BC), và Distrito Federal (DF) cũng có số lượng khách hàng đáng kể, lần lượt là 1,297, 809 và 815 khách hàng. Ngược lại, các bang như Jalisco và Guerrero có số lượng khách hàng thấp hơn, chỉ với 75 và 383 khách hàng. Qua đó, có thể thấy rằng lượng khách hàng phân bố không đều giữa các bang/tỉnh, với sự tập trung lớn ở một số bang chủ chốt, trong khi các bang khác có lượng khách hàng khá khiêm tốn.

7. Country

Biến Country thể hiện quốc gia nơi khách hàng thực hiện giao dịch. Dữ liệu bao gồm ba quốc gia chính là USA, Mexico và Canada, cho thấy phạm vi hoạt động của siêu thị trải rộng trên cả Bắc Mỹ.

  • Nếu xét về mặt địa lý, điều này phản ánh một chiến lược kinh doanh xuyên quốc gia, hướng đến thị trường tiêu dùng tại cả Mỹ, Mexico và Canada.

  • Việc có dữ liệu từ ba quốc gia này cũng giúp đánh giá sự khác biệt về hành vi tiêu dùng, doanh thu, sản phẩm phổ biến… theo từng khu vực.

# Thống kê tần suất
table_cou <- table(tt$Country)
prop_cou <- prop.table(table_cou) * 100  # Tỷ lệ phần trăm

# Kết hợp thành data frame 
cou_freq <- data.frame(
 cou = names(table_cou),
  Frequency = as.vector(table_cou),
  Percentage = round(as.vector(prop_cou), 2))

print(cou_freq)
##      cou Frequency Percentage
## 1 Canada       809       5.75
## 2 Mexico      3688      26.23
## 3    USA      9562      68.01
library(ggplot2)
ggplot(cou_freq, aes(x = reorder(cou, -Frequency), y = Frequency)) +
  geom_bar(stat = "identity", fill = "darkblue") +
  labs(title = "Số lượng khách hàng đến từ các nước",
       x = "Country",
       y = "Lượng ") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Biến Country trong tập dữ liệu chỉ có một giá trị duy nhất là USA, tức là toàn bộ dữ liệu được thu thập từ các khách hàng cư trú tại Hoa Kỳ. Điều này thể hiện rằng tập dữ liệu có phạm vi địa lý giới hạn và không phản ánh sự đa dạng về quốc gia.

Do không có sự biến đổi (tức là không có giá trị nào khác ngoài USA), biến Country không đóng vai trò phân loại hay giải thích trong phân tích thống kê mô tả. Trong các bước phân tích tiếp theo như xây dựng mô hình hồi quy hoặc phân khúc thị trường, biến này có thể được loại bỏ khỏi mô hình nếu không có mục tiêu mở rộng dữ liệu sang các quốc gia khác.

Thống kê mô tả biến định lượng

1. Children

Biến Children là một biến định lượng rời rạc (discrete quantitative variable), biểu thị số lượng con cái của từng khách hàng trong bộ dữ liệu. Dữ liệu này có ý nghĩa quan trọng trong việc hiểu cấu trúc hộ gia đình của người tiêu dùng, từ đó có thể giúp các nhà bán lẻ điều chỉnh chiến lược tiếp thị hoặc sản phẩm cho phù hợp với từng nhóm khách hàng.

## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
  • Số quan sát (n): 14.059 khách hàng.

  • Trung bình (mean): khoảng 2.53 con mỗi khách hàng.

  • Trung vị (median): là 3, tức 50% khách hàng có 3 con hoặc ít hơn, 50% còn lại nhiều hơn.

  • Độ lệch chuẩn (sd): khoảng 1.49, cho thấy sự phân tán ở mức vừa phải xung quanh giá trị trung bình.

  • Giá trị nhỏ nhất (min): 0 – một số khách hàng không có con.

  • Giá trị lớn nhất (max): 5 – giá trị cao nhất trong mẫu là 5 con.

  • Skewness (độ lệch): gần 0 (-0.021), chứng tỏ phân phối khá đối xứng quanh trung bình.

  • Kurtosis: âm (-1.03), cho thấy phân phối có đỉnh thấp và đuôi ngắn hơn phân phối chuẩn (platikurtic).

  • Standard error (se): rất nhỏ (~0.0126), nghĩa là ước lượng trung bình mẫu khá chính xác.

    Kết luận: Phân phối của biến Children khá đối xứng và tập trung quanh trung bình là 2.53. Khách hàng phổ biến nhất có từ 2 đến 3 con. Việc có khách hàng không có con hoặc có tới 5 con phản ánh tính đa dạng của nhóm khách hàng, tuy nhiên sự phân tán không quá lớn, cho thấy nhóm khách hàng tương đối đồng nhất về mặt số con cái.

2. UnitsSold

Biến UnitsSold trong bộ dữ liệu Supermarket Transactions là một biến định lượng liên tục, phản ánh số đơn vị sản phẩm được bán trong từng giao dịch.

Đây là một chỉ tiêu quan trọng để đánh giá khối lượng bán hàng của từng dòng sản phẩm, từ đó hỗ trợ phân tích về:

  • Mức độ tiêu thụ của sản phẩm.

  • Xu hướng mua hàng của khách hàng.

  • Hiệu suất bán hàng của từng danh mục sản phẩm.

    Biến này thường được sử dụng trong các phân tích thống kê mô tả, mô hình hồi quy, hoặc phân tích doanh thu để hỗ trợ quyết định trong hoạt động kinh doanh siêu thị.

  • Số quan sát (n): 14.059. Kích thước mẫu lớn, đảm bảo độ tin cậy trong phân tích.

  • Trung bình (mean) ~ 4.08. Mỗi giao dịch trung bình bán khoảng 4 sản phẩm.

  • Trung vị (median): 4 50% giao dịch bán từ 4 sản phẩm trở xuống.

  • Độ lệch chuẩn (sd) ~ 1.17. Mức độ dao động quanh trung bình là vừa phải.

  • Giá trị nhỏ nhất (min) 1, lớn nhất (max): 8 Số lượng sản phẩm bán ra dao động từ 1 đến 8.

  • Range: 7 Khoảng biến thiên tương đối hẹp.

  • Skewness ~ 0.012. Phân phối gần như đối xứng, không lệch trái/phải rõ rệt.

  • Kurtosis ~ -0.44. Phân phối có đỉnh thấp và đuôi ngắn hơn phân phối chuẩn (platikurtic).

  • Sai số chuẩn (SE) ~ 0.0099. Cho thấy trung bình mẫu được ước lượng rất chính xác.

    Kết luận: Biến UnitsSold có phân phối ổn định, tương đối đối xứng quanh trung bình là 4 đơn vị sản phẩm/giao dịch. Giao dịch phổ biến nhất rơi vào mức 3–5 sản phẩm. Do không có hiện tượng lệch hoặc phân phối bất thường, có thể sử dụng biến này trong các mô hình hồi quy tuyến tính hoặc phân tích định lượng khác mà không cần biến đổi thêm.

3. Revenue

Revenue (Doanh thu) là biến định lượng thể hiện tổng số tiền mà cửa hàng thu được từ việc bán hàng hóa hoặc dịch vụ trong một khoảng thời gian nhất định. Giá trị của biến này thường được tính bằng đơn vị tiền tệ (ví dụ: đô la, đồng, euro). Trong bộ dữ liệu “Supermarket Transactions”, biến Revenue phản ánh doanh thu tương ứng với từng giao dịch hoặc từng đơn hàng, cho thấy hiệu quả kinh doanh và quy mô của từng giao dịch cụ thể.

Biến Revenue có số quan sát khá lớn (n = 14,059), với giá trị trung bình khoảng 13.00 và giá trị trung vị là 11.25, cho thấy phân phối doanh thu có xu hướng lệch về bên phải vì mean lớn hơn median. Độ lệch chuẩn (sd) tương đối lớn, khoảng 8.22, thể hiện doanh thu có sự biến động khá rộng giữa các giao dịch. Giá trị nhỏ nhất là 0.53 và giá trị lớn nhất lên tới 56.7, nên khoảng dao động (range) khá rộng là 56.17.

Chỉ số skewness dương (1.13) cho thấy phân phối doanh thu lệch phải, tức là có nhiều giao dịch doanh thu thấp nhưng vẫn tồn tại một số giao dịch có doanh thu rất cao kéo dài đuôi phân phối về bên phải. Chỉ số kurtosis dương (1.39) cho thấy phân phối có đỉnh nhọn hơn so với phân phối chuẩn. Độ lệch chuẩn chuẩn hóa (standard error) khá nhỏ (0.069), phản ánh ước lượng trung bình doanh thu khá chính xác với tập dữ liệu này.

Nhìn chung, biến Revenue có phân phối không đối xứng và có sự biến thiên lớn, điều này thường gặp trong dữ liệu về doanh thu bán hàng, do các giao dịch có thể có giá trị rất khác nhau.

LS0tDQp0aXRsZTogIk5ISUVNIFZVIDEiDQphdXRob3I6ICJOZ3V54buFbiBUaOG7iyBUaHUgVGjhuqNvIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXIgc2VjdGlvbjogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZSAgIA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIGZpZ193aWR0aDogNiANCiAgICBmaWdfaGVpZ2h0OiA0IA0Ka25pdHI6DQogIG9wdHNfY2h1bms6IA0KICAgIGVjaG86IGZhbHNlDQogICAgbWVzc2FnZTogZmFsc2UNCiAgICB3YXJuaW5nOiBmYWxzZQ0KLS0tDQoNCmBgYHtjc3MsZWNobyA9IEZBTFNFfQ0KaDEgew0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgZm9udC1zaXplOiAyOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiANCn0NCg0KaDIgew0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiANCn0NCg0KaDMgew0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgZm9udC1zaXplOiAyMHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KaDQge2ZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDE4cHg7DQogIGZvbnQtc3R5bGU6IGl0YWxpY30NCg0KYm9keSB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDE4cHg7DQogIA0KfQ0KcDpub3QoaDEpOm5vdChoMik6bm90KGgzKTpub3QoaDQpOm5vdChoNSkgew0KICB0ZXh0LWluZGVudDogMmVtO30NCnAgew0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KICB9DQoudG9jaWZ5LWhlYWRlciB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQpgYGANCg0KKioqDQoNCiMgKipJLiBUw5NNIFThuq5UIE7hu5hJIERVTkcgU8OBQ0ggKioNCg0KIyMgKipDSMavxqBORyAxOiBNw5QgSMOMTkggVEjhu5BORyBLw4ogKFNUQVRJU1RJQ0FMIE1PREVMUykqKg0KICANCiMjIyAqKjEuMSBU4buVbmcgcXVhbioqDQogIE3DtCBow6xuaCBUaOG7kW5nIGvDqiDEkcOzbmcgdmFpIHRyw7IgbMOgIHBo4bqnbiBnaeG7m2kgdGhp4buHdSB2w6AgxJHhurd0IG7hu4FuIG3Ds25nIGNobyB0b8OgbiBi4buZIG7hu5lpIGR1bmcsIMSR4bq3YyBiaeG7h3QgbMOgIGNobyBjw6FjIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVscyAtIEdMTXMpLiBDaMawxqFuZyBuw6B5IGdp4bubaSB0aGnhu4d1IG5nw7RuIG5n4buvLCBrw70gaGnhu4d1IHbDoCBjw6FjIHbhuqVuIMSR4buBIHF1YW4gdHLhu41uZyBj4bqnbiB0aGnhur90IGNobyB2aeG7h2MgeMOieSBk4buxbmcgdsOgIGhp4buDdSBjw6FjIG3DtCBow6xuaCB0aOG7kW5nIGvDqiAocHJldmlvdXMgc3VtbWFyeSkuDQogIA0KIyMjICoqMS4yIFF1eSDGsOG7m2MgbcO0IHThuqMgZOG7ryBsaeG7h3UqKg0KICBHaeG7m2kgdGhp4buHdSBjw6FjIHF1eSDGsOG7m2MgxJHhu4MgbcO0IHThuqMgZOG7ryBsaeG7h3UgbeG7mXQgY8OhY2ggdG/DoW4gaOG7jWMuIMSQ4buTbmcgdGjhu51pIGdp4bqjaSB0aMOtY2ggY8OhY2ggY8OhYyBiaeG6v24gxJHGsOG7o2MgxJHhuqFpIGRp4buHbiB2w6Aga8O9IGhp4buHdSwgYmFvIGfhu5NtIHZp4buHYyBwaMOibiBiaeG7h3QgZ2nhu69hIGPDoWMgbG/huqFpIGJp4bq/biBraMOhYyBuaGF1LiANCiAgDQojIyMjICoqR2nhu5tpIHRoaeG7h3UgY8OhYyBrw60gaGnhu4d1IGJp4bq/bioqDQoNCiAgKkJp4bq/biBwaOG6o24gaOG7k2kgKHJlc3BvbnNlIHZhcmlhYmxlKTogKiBMw6AgYmnhur9uIG3DoCBjaMO6bmcgdGEgbXXhu5FuIGdp4bqjaSB0aMOtY2ggc+G7sSB0aGF5IMSR4buVaSBj4bunYSBuw7MuIEJp4bq/biBuw6B5IHRoxrDhu51uZyDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkeSQuICR5X3tpfSQga8O9IGhp4buHdSBnacOhIHRy4buLIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgY2hvIHF1YW4gc8OhdCB0aOG7qSAkaSQuDQogICAgDQogICpCaeG6v24gZ2nhuqNpIHRow61jaCAoZXhwbGFuYXRvcnkgdmFyaWFibGVzKTogKiBMw6AgY8OhYyBiaeG6v24gxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgZ2nhuqNpIHRow61jaCBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kuIENow7puZyBjw7JuIGPDsyB0aOG7gyDEkcaw4bujYyBn4buNaSBi4bqxbmcgbmhp4buBdSB0w6puIGtow6FjIG5oxrAgYmnhur9uIMSR4buZYyBs4bqtcCwgYmnhur9uIGThu7EgYsOhbywgaG/hurdjIHnhur91IHThu5EgKGZhY3RvcnMpIHbDoCBjb3ZhcmlhdGUuIEPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHGsOG7o2Mga8O9IGhp4buHdSB0cnV54buBbiB0aOG7kW5nIGzDoCAkeCQuICR4X3tqaX0kIGvDvSBoaeG7h3UgZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gZ2nhuqNpIHRow61jaCB0aOG7qSAkaiQgY2hvIHF1YW4gc8OhdCB0aOG7qSAkaSQuIFPhu5EgbMaw4bujbmcgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHGsOG7o2Mga8O9IGhp4buHdSBsw6AgJHAkLg0KDQogICpCaeG6v24gxJHhu4tuaCBsxrDhu6NuZyAocXVhbnRpdGF0aXZlIGV4cGxhbmF0b3J5IHZhcmlhYmxlcykgdsOgIGJp4bq/biDEkeG7i25oIHTDrW5oIChxdWFsaXRhdGl2ZSBleHBsYW5hdG9yeSB2YXJpYWJsZXMpOiAqIEPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHhu4tuaCBsxrDhu6NuZyDEkcaw4bujYyBn4buNaSBsw6AgY292YXJpYXRlcywgY8OybiBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIMSR4buLbmggdMOtbmggxJHGsOG7o2MgZ+G7jWkgbMOgIGZhY3RvcnMuIExMxrB1IMO9IHLhurFuZyBjw6FjIGJp4bq/biBraMO0bmcgcGjhuqNpIGzDoCBz4buRIChiaeG6v24gxJHhu4tuaCB0w61uaCkgY+G6p24gxJHGsOG7o2MgbcOjIGjDs2EgdGjDoG5oIMSR4buLbmggZOG6oW5nIHPhu5EgxJHhu4Mgc+G7rSBk4bulbmcgdHJvbmcgbcO0IGjDrG5oIHRo4buRbmcga8OqIChjaGkgdGnhur90IMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIFBo4bqnbiAxLjQpLg0KDQogICpLw61jaCB0aMaw4bubYyBt4bqrdSAoc2FtcGxlIHNpemUpOiAqIFRoxrDhu51uZyDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCBuLg0KICANCiAgKlRoYW0gc+G7kSBo4buTaSBxdXkgKHJlZ3Jlc3Npb24gcGFyYW1ldGVycyk6ICogxJDDonkgbMOgIGPDoWMgaOG7hyBz4buRIGNoxrBhIGJp4bq/dCB0cm9uZyBtw7QgaMOsbmgsIHRoxrDhu51uZyDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkzrJfe2p9JCAodsOtIGThu6U6ICTOsl97MH0kLCAkzrJfezF9JCwgLi4uLCAkzrJfe3B9JCkuIFPhu5EgbMaw4bujbmcgdGhhbSBz4buRIGjhu5NpIHF1eSDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkcCckLiBO4bq/dSBtw7QgaMOsbmggY8OzIHRow6ptIGjhu4cgc+G7kSBjaOG6t24gJM6yX3swfSQgKGfhuqduIG5oxrAgbHXDtG4gbHXDtG4gY8OzKSwgdGjDrCAkcCcgPSBwICsgMSQuDQoNCiAgKkdpw6EgdHLhu4sga+G7syB24buNbmcgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaToqIMSQxrDhu6NjIGvDvSBoaeG7h3UgbMOgICRcbXU9IEVbeWldJC4NCiAgDQojIyMjICoqR2nhu5tpIHRoaeG7h3UgVGjDoG5oIHBo4bqnbiBI4buHIHRo4buRbmcgdsOgIFRow6BuaCBwaOG6p24gTmfhuqt1IG5oacOqbioqDQoNCiAgKlRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIChzeXN0ZW1hdGljIGNvbXBvbmVudCk6KiBNw7QgdOG6oyBt4buRaSBxdWFuIGjhu4cgdG/DoW4gaOG7jWMgZ2nhu69hIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggJChcbXVfe2l9KSQgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaSB2w6AgY8OhYyBnacOhIHRy4buLIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guDQoNCiAgKlRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAocmFuZG9tIGNvbXBvbmVudCk6KiBNw7QgdOG6oyBz4buxIGJp4bq/biB0aGnDqm4gKHBow6JuIHBo4buRaSkgY+G7p2EgY8OhYyBnacOhIHRy4buLIGJp4bq/biBwaOG6o24gaOG7k2kgeHVuZyBxdWFuaCBnacOhIHRy4buLIHRydW5nIGLDrG5oICQoXG11X3tpfSkkIGNobyBt4buZdCB04bqtcCBo4bujcCBjw6FjIGdpw6EgdHLhu4sgYmnhur9uIGdp4bqjaSB0aMOtY2ggbmjhuqV0IMSR4buLbmguDQoNCiMjIyMgKipWw60gZOG7pToqKg0KDQogICpC4buZIGThu68gbGnhu4d1IGx1bmdjYXA6KiANCiAgTmd14buTbiBn4buRYzogROG7ryBsaeG7h3UgdOG7qyBt4buZdCBuZ2hpw6puIGPhu6l1IHRyw6puIDY1NCB0aGFuaCB0aGnhur91IG5pw6puIOG7nyBFYXN0IEJvc3RvbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgZHVuZyB0w61jaCB0aOG7nyBz4bupYyDDqXAgKEZvcmNlZCBFeHBpcmF0b3J5IFZvbHVtZSAtIEZFVikgdsOgIHTDrG5oIHRy4bqhbmcgaMO6dCB0aHXhu5FjLCB0deG7lWksIGNoaeG7gXUgY2FvLCB2w6AgZ2nhu5tpIHTDrW5oLg0KICBDw6FjIGJp4bq/bjoNCkJp4bq/biBwaOG6o24gaOG7k2kgJCh5KSQ6IEZFViAoxJFvIGLhurFuZyBsw610KS4NCkJp4bq/biBnaeG6o2kgdGjDrWNoICQoeCkkOiBUdeG7lWkgKEFnZSwgJHhfezF9JCksIENoaeG7gXUgY2FvIChIZWlnaHQsICR4X3syfSQpLCBHaeG7m2kgdMOtbmggKEdlbmRlciwgJHhfezN9JCksIHbDoCBUw6xuaCB0cuG6oW5nIGjDunQgdGh14buRYyAoU21va2luZyBzdGF0dXMsICR4X3s0fSQpLg0KICBLw61jaCB0aMaw4bubYyBt4bqrdSAobik6IDY1NCBxdWFuIHPDoXQgKG3hu5dpIGjDoG5nIHRyb25nIGLhuqNuZyBk4buvIGxp4buHdSB0xrDGoW5nIOG7qW5nIHbhu5tpIG3hu5l0IHRoYW5oIHRoaeG6v3UgbmnDqm4pLg0KICBD4bqldSB0csO6YyBk4buvIGxp4buHdSB0cm9uZyBSOiBQaOG6p24gbsOgeSBjxaluZyBnaeG7m2kgdGhp4buHdSBjw6FjaCB4ZW0gY+G6pXUgdHLDumMgZOG7ryBsaeG7h3UgKHN0cigpKSB2w6AgdMOzbSB04bqvdCBk4buvIGxp4buHdSAoc3VtbWFyeSgpKSB0cm9uZyBSLCBjaG8gdGjhuqV5IGPDoWMgYmnhur9uIFR14buVaSB2w6AgSMO6dCB0aHXhu5FjIGzDoCBraeG7g3Ugc+G7kSBuZ3V5w6puIChpbnRlZ2VycyksIEZFViB2w6AgQ2hp4buBdSBjYW8gbMOgIHPhu5EgKG51bWVyaWNhbCksIGPDsm4gR2nhu5tpIHTDrW5oIGzDoCBt4buZdCB54bq/dSB04buRIChmYWN0b3IpIHbhu5tpIDIgY+G6pXAgxJHhu5kgKCJGIiwgIk0iKS4gxJBp4buBdSBuw6B5IG1pbmggaOG7jWEgdHLhu7FjIHRp4bq/cCBz4buxIHBow6JuIGJp4buHdCBnaeG7r2EgYmnhur9uIMSR4buLbmggbMaw4bujbmcgdsOgIMSR4buLbmggdMOtbmguDQril6YNClPDoWNoIHPhu60gZOG7pW5nIGThu68gbGnhu4d1IG7DoHkgxJHhu4MgbWluaCBo4buNYSBraMOhaSBuaeG7h20gdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgdsOgIG5n4bqrdSBuaGnDqm4sIHbDoCBnaeG7m2kgdGhp4buHdSBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY8OzIHRo4buDIGPDsyBjaG8gZOG7ryBsaeG7h3UgbsOgeSwgYmFvIGfhu5NtIGPDoWMgdGhhbSBz4buRICTOsl97MH0kLCAkzrJfezF9JCwgJM6yX3syfSQsICTOsl97M30kLCAkzrJfezR9JA0KICANCiMjIyAqKjEuMyBUcuG7sWMgcXVhbiBow7NhIGThu68gbGnhu4d1KiogDQogIA0KICBN4bulYyB0acOqdSBj4bunYSB2aeG7h2MgdHLhu7FjIHF1YW4gaMOzYSBk4buvIGxp4buHdSBsw6AgbmjhuqVuIG3huqFuaCB04bqnbSBxdWFuIHRy4buNbmcuIFZp4buHYyB04bqhbyByYSBjw6FjIGJp4buDdSDEkeG7kyDEkcahbiBnaeG6o24gY2hvIHBow6lwIG5nxrDhu51pIHBow6JuIHTDrWNoIGtow6FtIHBow6EgY+G6pXUgdHLDumMgY+G7p2EgZOG7ryBsaeG7h3UsIG5o4bqtbiBkaeG7h24gY8OhYyBt4buRaSBxdWFuIGjhu4cgdGnhu4FtIG7Eg25nIGdp4buvYSBjw6FjIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGJp4bq/biBnaeG6o2kgdGjDrWNoLCB2w6AgcGjDoXQgaGnhu4duIGPDoWMgxJHhurdjIMSRaeG7g20gYuG6pXQgdGjGsOG7nW5nIChuaMawIG5nb+G6oWkgbGFpLCB4dSBoxrDhu5tuZyBwaGkgdHV54bq/biB0w61uaCwgc+G7sSBiaeG6v24gdGhpw6puIGtow7RuZyDEkeG7gXUpLiDEkMOieSBsw6AgYsaw4bubYyBraMO0bmcgdGjhu4MgdGhp4bq/dSDEkeG7gyBjaHXhuqluIGLhu4sgY2hvIHZp4buHYyB4w6J5IGThu7FuZyB2w6Aga2nhu4NtIHRyYSBjw6FjIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBzYXUgbsOgeS4NCiAgDQogICpW4bq9IGJp4buDdSDEkeG7kyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGJp4bq/biBnaeG6o2kgdGjDrWNoOiogS+G7uSB0aHXhuq10IGNow61uaCBsw6Agc+G7rSBk4bulbmcgYmnhu4N1IMSR4buTIMSRaeG7g20gKHNjYXR0ZXIgcGxvdCkuIFbDrSBk4bulIMSRaeG7g24gaMOsbmggbMOgIHbhur0gRkVWIHRoZW8gQWdlIHbDoCBIZWlnaHQgdOG7qyBi4buZIGThu68gbGnhu4d1IGx1bmdjYXAgxJHhu4MgcXVhbiBzw6F0IHh1IGjGsOG7m25nLiBIw6BtIHBsb3QoKSB0cm9uZyBSIGzDoCBjw7RuZyBj4bulIMSRxrDhu6NjIHPhu60gZOG7pW5nIGNobyBt4bulYyDEkcOtY2ggbsOgeSwgdGjGsOG7nW5nIGvhur90IGjhu6NwIHbhu5tpIGPDuiBwaMOhcCBmb3JtdWxhICQoeSBcc2ltIHgpJCB2w6AgY2jhu4kgxJHhu4tuaCBk4buvIGxp4buHdSAkKGRhdGEgPSkkLg0KICANCiAgKkvhur90IGjhu6NwIGJp4bq/biDEkeG7i25oIHTDrW5oIHbDoG8gYmnhu4N1IMSR4buTOiogxJDhu4MgaGnhu4N1IOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgYmnhur9uIMSR4buLbmggdMOtbmggKGZhY3RvcnMpIG5oxrAgU21va2UgKGjDunQgdGh14buRYy9raMO0bmcgaMO6dCB0aHXhu5FjKSBob+G6t2MgR2VuZGVyIChnaeG7m2kgdMOtbmgpLCB0w6FjIGdp4bqjIGNo4buJIHJhIGPDoWNoIHbhur0gZOG7ryBsaeG7h3UgY2hvIHThu6tuZyBuaMOzbSByacOqbmcgYmnhu4d0IGhv4bq3YywgaGnhu4d1IHF14bqjIGjGoW4sIHPhu60gZOG7pW5nIGPDoWMga8O9IGhp4buHdSAocGxvdHRpbmcgY2hhcmFjdGVycyAtIHBjaCkga2jDoWMgbmhhdSB0csOqbiBjw7luZyBt4buZdCBiaeG7g3UgxJHhu5MgxJHhu4MgcGjDom4gYmnhu4d0IGPDoWMgbmjDs20uIEjDoG0gaWZlbHNlKCkgdHJvbmcgUiBjw7MgdGjhu4MgxJHGsOG7o2MgZMO5bmcgxJHhu4MgZ8OhbiBwY2ggZOG7sWEgdHLDqm4gZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gxJHhu4tuaCB0w61uaC4gVmnhu4djIGLhu5Ugc3VuZyBjaMO6IGdp4bqjaSAobGVnZW5kKCkpIGzDoCBj4bqnbiB0aGnhur90IMSR4buDIGdp4bqjaSB0aMOtY2ggY8OhYyBrw70gaGnhu4d1IG7DoHkuDQogIA0KICAqU+G7rSBk4bulbmcgQm94cGxvdDoqIEJp4buDdSDEkeG7kyBo4buZcCAoYm94cGxvdCgpKSDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSBuaMawIG3hu5l0IGPDoWNoIGhp4buHdSBxdeG6oyDEkeG7gyBzbyBzw6FuaCBwaMOibiBi4buRIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgZ2nhu69hIGPDoWMgbmjDs20gxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEgYuG7n2kgbeG7mXQgaG/hurdjIG5oaeG7gXUgYmnhur9uIMSR4buLbmggdMOtbmggKHbDrSBk4bulOiBGRVYgdGhlbyBHZW5kZXIgdsOgIFNtb2tlKS4NCiAgDQogICpY4butIGzDvSB24bqlbiDEkeG7gSBPdmVycGxvdHRpbmc6KiBLaGkgY8OzIG5oaeG7gXUgxJFp4buDbSBk4buvIGxp4buHdSBjw7MgY8O5bmcgZ2nDoSB0cuG7iyAodGjGsOG7nW5nIHjhuqN5IHJhIHbhu5tpIGThu68gbGnhu4d1IMSR4bq/bSksIGPDoWMgxJFp4buDbSBuw6B5IHPhur0gYuG7iyBjaOG7k25nIGzDqm4gbmhhdSB0csOqbiBiaeG7g3UgxJHhu5MsIGfDonkga2jDsyBraMSDbiB0cm9uZyB2aeG7h2MgcXVhbiBzw6F0IHPhu7EgcGjDom4gYuG7kS4gTeG7pWMgbsOgeSBnaeG7m2kgdGhp4buHdSBow6BtIGppdHRlcigpIHRyb25nIFIgxJHhu4MgdGjDqm0gbeG7mXQgbMaw4bujbmcgbmhp4buFdSBuaOG7jyBuZ+G6q3Ugbmhpw6puIHbDoG8gY8OhYyBnacOhIHRy4buLLCBnacO6cCBjw6FjIMSRaeG7g20gYuG7iyBjaOG7k25nIMSRxrDhu6NjIG5ow6xuIHLDtSBoxqFuLiBWw60gZOG7pSBz4butIGThu6VuZyBi4buZIGThu68gbGnhu4d1IG5taW5lciBtaW5oIGjhu41hIGvhu7kgdGh14bqtdCBuw6B5Lg0KICANCiAgKkdp4bubaSB0aGnhu4d1IGPDoWMgaMOgbSBSIGPGoSBi4bqjbjoqIFh1ecOqbiBzdeG7kXQgbeG7pWMgbsOgeSwgY8OhYyDEkW/huqFuIG3DoyBSIGPhu6UgdGjhu4MgxJHGsOG7o2MgY3VuZyBj4bqlcCDEkeG7gyBtaW5oIGjhu41hIGPDoWNoIHThuqFvIGPDoWMgYmnhu4N1IMSR4buTLCBiYW8gZ+G7k20gcGxvdCgpLCBsZWdlbmQoKSwgYm94cGxvdCgpLCBzdWJzZXQoKSwgdsOgIGppdHRlcigpLiBUw6FjIGdp4bqjIGPFqW5nIMSR4buBIGPhuq1wIMSR4bq/biBjw6FjIHRoYW0gc+G7kSDEkeG7kyBo4buNYSBo4buvdSDDrWNoIG5oxrAgbGFzLCB5bGltLCB4bGltLCB4bGFiLCB5bGFiLCBtYWluLCBwY2ggxJHhu4MgdMO5eSBjaOG7iW5oIGJp4buDdSDEkeG7ky4NCg0KIyMjICoqMS40IE3DoyBow7NhIGJp4bq/biBwaMOibiBsb+G6oWkgKENvZGluZyBmb3IgZmFjdG9ycykgKioNCiAgDQogIE3hu6VjIG7DoHkgxJHGsGEgcmEgZ2nhuqNpIHRow61jaCBjaG8gY8OhY2ggYmnhu4N1IGRp4buFbiBjw6FjIGJp4bq/biBwaMOibiBsb+G6oWksIHbhu5FuIGzDoCBk4buvIGxp4buHdSBraMO0bmcgY8OzIHPhurVuIGThuqFuZyBz4buRIChuaMawIGdp4bubaSB0w61uaCwgdMOsbmggdHLhuqFuZyBow7p0IHRodeG7kWMsIGxv4bqhaSDEkWnhu4F1IHRy4buLLi4uKSwgc2FuZyBk4bqhbmcgc+G7kSAobnVtZXJpY2FsKS4gVmnhu4djIG7DoHkgbMOgIGPhuqduIHRoaeG6v3QgxJHhu4MgY8OhYyBiaeG6v24gcGjDom4gbG/huqFpIGPDsyB0aOG7gyDEkcaw4bujYyDEkcawYSB2w6BvIHbDoCB44butIGzDvSB0cm9uZyBjw6FjIG3DtCBow6xuaCB0aOG7kW5nIGvDqiwgxJHhurdjIGJp4buHdCBsw6AgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oLCB24buRbiBsw6BtIHZp4buHYyB24bubaSBk4buvIGxp4buHdSBjw7MgY+G6pXUgdHLDumMgc+G7kS4NCiAgIA0KICAgTMaw4bujYyDEkeG7kyBtw6MgaMOzYSAoQ29kaW5nIFNjaGVtZXMpOiDEkMOieSBsw6Aga+G7uSB0aHXhuq10IGNow61uaCDEkeG7gyBjaHV54buDbiDEkeG7lWkgYmnhur9uIMSR4buLbmggdMOtbmggdGjDoG5oIGJp4bq/biBz4buRLiBHacOhbyB0csOsbmggdOG6rXAgdHJ1bmcgdsOgbyBt4buZdCBwaMawxqFuZyBwaMOhcCBtw6MgaMOzYSB0acOqdSBjaHXhuqluIGNobyBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkNCiANCiAgKk3DoyBow7NhIHjhu60gbMO9ICh0cmVhdG1lbnQgY29kaW5nKTogKiDEkMOieSBsw6AgcGjGsMahbmcgcGjDoXAgbcOjIGjDs2EgcGjhu5UgYmnhur9uIHbDoCDEkcaw4bujYyBz4butIGThu6VuZyBt4bq3YyDEkeG7i25oIHRyb25nIFIuVHJvbmcga2nhu4N1IG3DoyBow7NhIG7DoHksIG3hu5l0IHRyb25nIGPDoWMgY+G6pXAgxJHhu5kgY+G7p2EgYmnhur9uIMSR4buLbmggdMOtbmggxJHGsOG7o2MgY2jhu41uIGzDoG0gbeG7qWMgdGhhbSBjaGnhur91IChyZWZlcmVuY2UgbGV2ZWwpLiBDw6FjIGPhuqVwIMSR4buZIGPDsm4gbOG6oWkgxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBi4bqxbmcgY8OhYyBiaeG6v24gZ2nhuqMgKGR1bW15IHZhcmlhYmxlcyksIHRoxrDhu51uZyBjw7MgZ2nDoSB0cuG7iyAwIGhv4bq3YyAxLiBCaeG6v24gZ2nhuqMgY8OzIGdpw6EgdHLhu4sgMSBu4bq/dSBxdWFuIHPDoXQgdGh14buZYyBj4bqlcCDEkeG7mSDEkcOzLCB2w6AgMCBu4bq/dSBraMO0bmcuIE3hu6ljIHRoYW0gY2hp4bq/dSBz4bq9IGPDsyB04bqldCBj4bqjIGPDoWMgYmnhur9uIGdp4bqjIHTGsMahbmcg4bupbmcgYuG6sW5nIDAuDQogIA0KICAqRGnhu4VuIGdp4bqjaSBjw6FjIGjhu4cgc+G7kSBo4buTaSBxdXk6KiBHaeG6o2kgdGjDrWNoIHLhurFuZywga2hpIHPhu60gZOG7pW5nIG3DoyBow7NhIGtp4buDdSBUcmVhdG1lbnQsIGjhu4cgc+G7kSAocGFyYW1ldGVyIGVzdGltYXRlIC0gJFxiZXRhJCkgZ+G6r24gduG7m2kgbeG7l2kgYmnhur9uIGdp4bqjIGJp4buDdSB0aOG7iyBz4buxIGtow6FjIGJp4buHdCDGsOG7m2MgbMaw4bujbmcgduG7gSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgKHRyw6puIHRoYW5nIMSRbyBj4bunYSBow6BtIGxpw6puIGvhur90IGhv4bq3YyB0csOqbiB0aGFuZyDEkW8gZ+G7kWMgdMO5eSB0aHXhu5ljIHbDoG8gbcO0IGjDrG5oIHbDoCBow6BtIGxpw6puIGvhur90KSBnaeG7r2EgY+G6pXAgxJHhu5kgdMawxqFuZyDhu6luZyB24bubaSBiaeG6v24gZ2nhuqMgxJHDsyB2w6AgbeG7qWMgdGhhbSBjaGnhur91LCBzYXUga2hpIMSRw6MgxJFp4buBdSBjaOG7iW5oIGNobyDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIGtow6FjIHRyb25nIG3DtCBow6xuaC4NCiAgVsOtIGThu6UsIHRyb25nIG3DtCBow6xuaCBjaG8gbG9nKEZFViksIGjhu4cgc+G7kSBjaG8gU21va2UgKC0wLjA0NjA3KSBjaG8gdGjhuqV5IHPhu7EgdGhheSDEkeG7lWkgKGdp4bqjbSkgdHJ1bmcgYsOsbmggY+G7p2EgJGxvZyhGRVYpJCBraGkgY2h1eeG7g24gdOG7qyBuaMOzbSBraMO0bmcgaMO6dCB0aHXhu5FjICht4bupYyB0aGFtIGNoaeG6v3UpIHNhbmcgbmjDs20gaMO6dCB0aHXhu5FjLCBnaeG6oyDEkeG7i25oIGPDoWMgYmnhur9uIGtow6FjICh0deG7lWksIGNoaeG7gXUgY2FvLCBnaeG7m2kgdMOtbmgpIGtow7RuZyDEkeG7lWkuIFRyw6puIHRoYW5nIMSRbyBn4buRYyBj4bunYSBGRVYsIMSRaeG7gXUgbsOgeSDEkcaw4bujYyBkaeG7hW4gZ2nhuqNpIGzDoCBt4buZdCBz4buxIHRoYXkgxJHhu5VpIHRoZW8gaOG7hyBz4buRIG5ow6JuIChmYWN0b3IpICh2w60gZOG7pTogJGV4cCgtMC4wNDYwNykgPSAwLjk1NTAkIGzhuqduKS4NCiAgDQogIFTDoWMgZ2nhuqMgY8WpbmcgY2jhu4kgcmEgcuG6sW5nIHThu5NuIHThuqFpIG5oaeG7gXUgbG/huqFpIG3DoyBow7NhIGtow6FjIG5oYXUgY2hvIGJp4bq/biBwaMOibiBsb+G6oWksIHbDoCBt4buXaSBsb+G6oWkgY8OzIHRo4buDIG1hbmcgbOG6oWkgY8OhY2ggZGnhu4VuIGdp4bqjaSBraMOhYyBuaGF1LiBEbyDEkcOzLCDEkWnhu4F1IHF1YW4gdHLhu41uZyBsw6AgcGjhuqNpIGzDoG0gcsO1IMSR4buLbmggbmdoxKlhIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGLhuqV0IGvhu7MgcGjDom4gdMOtY2ggbsOgby4gTeG7pWMgbsOgeSBjxaluZyBsacOqbiBxdWFuIMSR4bq/biBjw6FjaCBSIHjhu60gbMO9IGJp4bq/biBwaMOibiBsb+G6oWksIHRow7RuZyBxdWEgdmnhu4djIG5o4bqtbiBkaeG7h24gdOG7sSDEkeG7mW5nIGPDoWMgYmnhur9uIGtow7RuZyBz4buRIGhv4bq3YyB5w6p1IGPhuqd1IHPhu60gZOG7pW5nIGjDoG0gZmFjdG9yKCkgxJHhu4MgxJHhuqNtIGLhuqNvIHjhu60gbMO9IMSRw7puZy4NCiAgDQojIyMgKioxLjUgTcO0IGjDrG5oIHRo4buRbmcga8OqIG3DtCB04bqjIGPhuqMgeeG6v3UgdOG7kSBuZ+G6q3Ugbmhpw6puIHbDoCBo4buHIHRo4buRbmcgY+G7p2EgZOG7ryBsaeG7h3UqKg0KICBNw7QgaMOsbmggdGjhu5FuZyBrw6ogxJHGsOG7o2MgeMOieSBk4buxbmcgxJHhu4MgbcO0IHThuqMgaGFpIGtow61hIGPhuqFuaCBjaMOtbmg6DQoNCiMjIyMgKipUaMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gKFJhbmRvbSBjb21wb25lbnQpKioNCiAgDQogIFThuqFpIG3hu5dpIHThu5UgaOG7o3AgY+G7pSB0aOG7gyBj4bunYSBjw6FjIGJp4bq/biDEkeG6p3UgdsOgbyAodsOtIGThu6U6IGNoaeG7gXUgY2FvLCB0deG7lWksIGdp4bubaSB0w61uaCwgdMOsbmggdHLhuqFuZyBow7p0IHRodeG7kWMpLCBnacOhIHRy4buLIGZldiBnaGkgbmjhuq1uIGPDsyB0aOG7gyB0aGF5IMSR4buVaSDigJQgdOG6oW8gdGjDoG5oIG3hu5l0IHBow6JuIHBo4buRaSB4w6FjIHN14bqldC4NCiAgTcO0IGjDrG5oIGNobyBwaMOibiBwaOG7kWkgbsOgeSBjaMOtbmggbMOgIHRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiBj4bunYSBtw7QgaMOsbmggdGjhu5FuZyBrw6ouDQoNCiMjIyMgKipUaMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyAoU3lzdGVtYXRpYyBjb21wb25lbnQpKioNCiAgDQogIFThuqFpIG3hu5dpIHThu5UgaOG7o3AgY+G7p2EgYmnhur9uIMSR4bqndSB2w6BvLCBnacOhIHRy4buLIGvhu7MgduG7jW5nIChtZWFuKSBj4bunYSBmZXYgxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBi4bqxbmcgbeG7mXQgaMOgbSB0b8OhbiBo4buNYyBsacOqbiBo4buHIHbhu5tpIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guDQoNClbDrSBk4bulIMSRxqFuIGdp4bqjbjoNCiQkDQpcbXVfaSA9IFxiZXRhXzAgKyBcYmV0YV8xIHhfezFpfSArIFxiZXRhXzIgeF97Mml9ICsgXGJldGFfMyB4X3szaX0gKyBcYmV0YV80IHhfezRpfQ0KJCQNCnRyb25nIMSRw7MgJFxtdV9pID0gRVt5X3tpfV0kIGzDoCBr4buzIHbhu41uZyBj4bunYSBmZXYgdOG6oWkgcXVhbiBzw6F0IHRo4bupICRpJCwgJHhfezF9JCBsw6AgdHXhu5VpLCAkeF97Mn0kIGzDoCBjaGnhu4F1IGNhbywgY8OybiAkeF97M30kIHbDoCAkeF97NH0kIGzDoCBjw6FjIGJp4bq/biBnaeG6oyAoZHVtbXkpIMSR4bqhaSBkaeG7h24gY2hvIGdp4bubaSB0w61uaCB2w6AgdMOsbmggdHLhuqFuZyBow7p0IHRodeG7kWMuIFR1eSBuaGnDqm4sIG3hu5FpIHF1YW4gaOG7hyB0aOG7sWMgdOG6vyBjw7MgdGjhu4MgcGhpIHR1eeG6v24gaG/hurdjIHBo4bupYyB04bqhcCBoxqFuLCBuw6puIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oIMSRxqFuIGdp4bqjbiBjw7MgdGjhu4MgY2jGsGEgcGjDuSBo4bujcC4gDQoNCiMjIyMgKipNw7QgaMOsbmggcGjDom4gcGjhu5FpIGPhu6dhIHNhaSBz4buRKioNCiAgTeG7mXQgZ2nhuqMgxJHhu4tuaCBwaOG7lSBiaeG6v24gbMOgOg0KJCQNCnlfaSBcc2ltIE4oXG11X2ksIFxzaWdtYV4yKQ0KJCQNCiAgVHV5IG5oacOqbiwgduG7m2kgZOG7ryBsaeG7h3UgZHVuZyB0w61jaCBwaOG7lWksIHBoxrDGoW5nIHNhaSBjw7MgdGjhu4MgdMSDbmcgdGhlbyBmZXYsIG7Dqm4gZ2nhuqMgxJHhu4tuaCBuw6B5IGPDsyB0aOG7gyBraMO0bmcgcGjDuSBo4bujcC4NCg0KIyMjICoqMS42IFJlZ3Jlc3Npb24gbW9kZWxzIChtw7QgaMOsbmggaOG7k2kgcXV5KSAqKg0KICDEkMOieSBsw6AgbG/huqFpIG3DtCBow6xuaCDEkcOzbmcgdmFpIHRyw7IgdHJ1bmcgdMOibSB0cm9uZyB0b8OgbiBi4buZIGdpw6FvIHRyw6xuaC4gTeG7pWMgdGnDqnUgbMOgIGzDoG0gcsO1IGPDoWNoIG3DtCBow6xuaCBo4buTaSBxdXkgYmnhu4N1IGRp4buFbiBt4buRaSBxdWFuIGjhu4cgY8OzIGjhu4cgdGjhu5FuZyAoc3lzdGVtYXRpYyBmZWF0dXJlKSB0cm9uZyBk4buvIGxp4buHdSBi4bqxbmcgbeG7mXQgY8O0bmcgdGjhu6ljIHRvw6FuIGjhu41jLCBk4buxYSB0csOqbiBt4buRaSBsacOqbiBo4buHIGdp4buvYSBiaeG6v24gcGjhuqNuIGjhu5NpIChyZXNwb25zZSkgdsOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggKGV4cGxhbmF0b3J5IHZhcmlhYmxlcykuDQoNCiMjIyMgKipLaMOhaSBuaeG7h20qKiANCiAgDQogIE3DtCBow6xuaCBo4buTaSBxdXkgZ2nhuqMgxJHhu4tuaCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGvhu7MgduG7jW5nICgkRVt5X2ldJCBoYXkgJM68X2kkKSBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpIGNobyBxdWFuIHPDoXQgdGjhu6kgJGkkIHBo4bulIHRodeG7mWMgdsOgbyBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoICgkeF97MWl9LCBcZG90cywgeF97cGl9JCkgdGjDtG5nIHF1YSBt4buZdCBow6BtICRmJCB2w6AgbeG7mXQgdOG6rXAgaOG7o3AgY8OhYyB0aGFtIHPhu5EgaOG7k2kgcXV5ICgkzrJfMCwgzrJfMSwgXGRvdHMsIM6yX3EkKS4gICAgIEPDtG5nIHRo4bupYyB04buVbmcgcXXDoXQgbMOgOg0KJCRFW3lfaV0gPSDOvF9pID0gZih4X3sxaX0sIFxkb3RzLCB4X3twaX07IM6yXzAsIM6yXzEsIFxkb3RzLCDOsl9xKSQkLg0KICANCiAgSMOgbSAkZiQgbMOgIHR1eeG6v24gdMOtbmggdGhlbyB0aGFtIHPhu5EgKGxpbmVhciBpbiB0aGUgcGFyYW1ldGVycykuIMSQaeG7gXUgbsOgeSBsw6AgxJHhurdjIMSRaeG7g20gcXVhbiB0cuG7jW5nLCBwaMOibiBiaeG7h3QgbG/huqFpIG3DtCBow6xuaCBuw6B5IHbhu5tpIGPDoWMgbcO0IGjDrG5oIHBoaSB0dXnhur9uIGhvw6BuIHRvw6BuLiBOZ2F5IGPhuqMga2hpIG3hu5FpIHF1YW4gaOG7hyB24bubaSBiaeG6v24gJHgkIGtow7RuZyB0dXnhur9uIHTDrW5oICh2w60gZOG7pTogY2jhu6lhICR4XjIkIGhv4bq3YyAkXGxvZyh4KSQpLCBu4bq/dSBuw7MgY8OzIHRo4buDIHZp4bq/dCBkxrDhu5tpIGThuqFuZyB04buVbmcgY8OzIHRy4buNbmcgc+G7kSBj4bunYSBjw6FjIGjDoG0gY+G7p2EgJHgkIHbhu5tpIHRy4buNbmcgc+G7kSBsw6AgJM6yJCwgdGjDrCBuw7MgduG6q24gdHV54bq/biB0w61uaCB0aGVvIHRoYW0gc+G7kS4NCg0KIyMjIyAqKkhhaSBk4bqhbmcgY+G6pXUgdHLDumMgdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgY+G7pSB0aOG7gyDEkcaw4bujYyBnaeG7m2kgdGhp4buHdToqKg0KICANCiAgTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oIChMaW5lYXIgUmVncmVzc2lvbiBNb2RlbHMpOiBUaMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyBsw6AgdOG7lW5nIHR1eeG6v24gdMOtbmggdHLhu7FjIHRp4bq/cCBj4bunYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIHbDoCB0aGFtIHPhu5E6IA0KJCTOvF9pID0gzrJfMCArIM6yXzF4X3sxaX0gKyBcZG90cyArIM6yX3B4X3tweGl9JCQgQ8OhYyBtw7QgaMOsbmggbsOgeSBnaeG6oyDEkeG7i25oIHBoxrDGoW5nIHNhaSBraMO0bmcgxJHhu5VpIGNobyBwaOG6p24gbmfhuqt1IG5oacOqbi4NCiANCiAgTcO0IGjDrG5oIFR1eeG6v24gdMOtbmggVOG7lW5nIHF1w6F0IChHZW5lcmFsaXplZCBMaW5lYXIgTW9kZWxzIC0gR0xNcyk6IFRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIMSRxrDhu6NjIGxpw6puIGvhur90IHbhu5tpIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggJM68X2kkIHRow7RuZyBxdWEgbeG7mXQgaMOgbSBsacOqbiBr4bq/dCAkZyQsIHNhbyBjaG8gDQokJGcozrxfaSkgPSDOsl8wICsgzrJfMXhfezFpfSArIFxkb3RzICsgzrJfcHhfe3B4aX0kJCDEkMOieSBsw6AgbOG7m3AgbcO0IGjDrG5oIHThu5VuZyBxdcOhdCBoxqFuLiANCg0KICBDw6FjIHF1eSDGsOG7m2Mga8O9IGhp4buHdSB24buBIHPhu5EgbMaw4bujbmcgYmnhur9uIGdp4bqjaSB0aMOtY2ggKCRwJCkgdsOgIHPhu5EgbMaw4bujbmcgdGhhbSBz4buRICgkcCckLCB0aMaw4budbmcgbMOgICRwKzEkKSBjxaluZyDEkcaw4bujYyB0aGnhur90IGzhuq1wLg0KDQojIyMgKioxLjcgSW50ZXJwcmV0aW5nIFJlZ3Jlc3Npb24gTW9kZWxzIChEaeG7hW4gZ2nhuqNpIG3DtCBow6xuaCBo4buTaSBxdXkpICoqIA0KICBEaeG7hW4gZ2nhuqNpIG3DtCBow6xuaCBo4buTaSBxdXlxdXkgbmjhurFtIG3hu6VjIMSRw61jaCBnacO6cCBuZ8aw4budaSDEkeG7jWMgaGnhu4N1IMSRxrDhu6NjIG3hu5FpIHF1YW4gaOG7hyBjw7MgaOG7hyB0aOG7kW5nIChzeXN0ZW1hdGljIHJlbGF0aW9uc2hpcCkgbcOgIG3DtCBow6xuaCBiaeG7g3UgZGnhu4VuIGdp4buvYSBiaeG6v24gcGjhuqNuIGjhu5NpIHbDoCBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoLCDEkeG6t2MgYmnhu4d0IGzDoCDDvSBuZ2jEqWEgY+G7p2EgY8OhYyB0aGFtIHPhu5EgKGjhu4cgc+G7kSkgaOG7k2kgcXV5IHRyb25nIG3DtCBow6xuaC4NCg0KICBHaeG6o2kgdGjDrWNoIHLDtSBjw6FjIHRow6BuaCBwaOG6p24gY+G7p2EgaOG7hyB0aOG7kW5nOg0KJCRFW3lfaV0gPSDOvF9pID0gZih4X3sxaX0sIFxkb3RzLCB4X3twaX07IM6yXzAsIM6yXzEsIFxkb3RzLCDOsl9xKSQkDQptw7QgdOG6oyBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgga+G7syB24buNbmcgKCTOvF9pJCkgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaSBraGkgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCB0aGF5IMSR4buVaS4NCg0KICBOaOG6pW4gbeG6oW5oIHLhurFuZyBjw6FjaCBkaeG7hW4gZ2nhuqNpIHBo4bulIHRodeG7mWMgdsOgbyBk4bqhbmcgaMOgbSAkZiQgxJHGsOG7o2Mgc+G7rSBk4bulbmcsIHThu6ljIGzDoCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIChob+G6t2MgdOG7lSBo4bujcCB0dXnhur9uIHTDrW5oIGPhu6dhIGNow7puZykgdsOgIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaS4NCiAgxJDhu5FpIHbhu5tpIGPDoWMgbcO0IGjDrG5oIHR1eeG6v24gdMOtbmggdGhlbyB0aGFtIHPhu5EgKMSR4bq3YyBiaeG7h3QgbMOgIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCB0aMO0bmcgdGjGsOG7nW5nKSwgw70gbmdoxKlhIGPhu6dhIGPDoWMgaOG7hyBz4buRICTOsl9qJCDEkcaw4bujYyBkaeG7hW4gZ2nhuqNpIGzDoCBz4buxIHRoYXkgxJHhu5VpIHRydW5nIGLDrG5oIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kga2hpIGJp4bq/biBnaeG6o2kgdGjDrWNoIHTGsMahbmcg4bupbmcgJHhfaiQgdGhheSDEkeG7lWkgbeG7mXQgxJHGoW4gduG7iywgZ2nhu68gbmd1ecOqbiBjw6FjIGJp4bq/biBraMOhYy4NCiAgDQogIMSQ4buRaSB24bubaSBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTXMpLCBkbyBz4butIGThu6VuZyBow6BtIGxpw6puIGvhur90ICRnJCAoJGcozrxfaSkgPSBcYmV0YV8wICsgXGJldGFfMXhfezFpfSArIFxkb3RzJCksIHZp4buHYyBkaeG7hW4gZ2nhuqNpIGPDoWMgaOG7hyBz4buRICTOsl9qJCBraMO0bmcgdHLhu7FjIHRp4bq/cCBsw6Agc+G7sSB0aGF5IMSR4buVaSBj4bunYSAkzrxfaSQgbcOgIGzDoCBz4buxIHRoYXkgxJHhu5VpIHRyw6puIHRoYW5nIMSRbyBj4bunYSBow6BtIGxpw6puIGvhur90LiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGThuqtuIMSR4bq/biB2aeG7h2MgZGnhu4VuIGdp4bqjaSBjw6FjIMSR4bqhaSBsxrDhu6NuZyBraMOhYyBuaMawIHThu7cgbOG7hyBjaMOqbmggKG9kZHMgcmF0aW8pIHRyb25nIG3DtCBow6xuaCBsb2dpdCwgaG/hurdjIGxpw6puIHF1YW4gxJHhur9uIGPDoWMgYmnhur9uIMSR4buVaSAodHJhbnNmb3JtYXRpb24pIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgbmjGsCBsb2dhcml0Lg0KICANCiAgVOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHZp4buHYyBkaeG7hW4gZ2nhuqNpIG3DtCBow6xuaCB0cm9uZyBuZ+G7ryBj4bqjbmggdsOgIGdp4bubaSBo4bqhbiBj4bunYSBk4buvIGxp4buHdSDEkcaw4bujYyBuaOG6pW4gbeG6oW5oLCBiYW8gZ+G7k20gc+G7sSBwaMOibiBiaeG7h3QgZ2nhu69hIG3hu5FpIHF1YW4gaOG7hyB0xrDGoW5nIHF1YW4gKGFzc29jaWF0aW9uKSB2w6AgcXVhbiBo4buHIG5ow6JuIHF14bqjIChjYXVzYWxpdHkpLCBjxaluZyBuaMawIGto4bqjIG7Eg25nIHN1eSBy4buZbmcgY+G7p2EgbcO0IGjDrG5oLg0KDQojIyMgKioxLjggQWxsIE1vZGVscyBBcmUgV3JvbmcsIGJ1dCBTb21lIEFyZSBVc2VmdWwgKioNCiAgQWxsIE1vZGVscyBBcmUgV3JvbmcsIGJ1dCBTb21lIEFyZSBVc2VmdWxsw6AgbeG7mXQgdMawIHTGsOG7n25nIHF1YW4gdHLhu41uZyB0cm9uZyB0aOG7kW5nIGvDqiwgYuG6r3Qgbmd14buTbiB04burIGPDonUgbsOzaSBu4buVaSB0aeG6v25nIGPhu6dhIG5ow6AgdGjhu5FuZyBrw6ogR2VvcmdlIEJveC4gTuG7mWkgZHVuZyBuw6B5IG5o4bqlbiBt4bqhbmggcuG6sW5nOiAiS2jDtG5nIGPDsyBtw7QgaMOsbmggbsOgbyBob8OgbiB0b8OgbiDEkcO6bmcgdHJvbmcgdmnhu4djIG3DtCB04bqjIHRo4buxYyB04bq/IG3hu5l0IGPDoWNoIHR1eeG7h3QgxJHhu5FpLCBuaMawbmcgbeG7mXQgc+G7kSBtw7QgaMOsbmggduG6q24gY8OzIHRo4buDIGjhu691IMOtY2ggdHJvbmcgdmnhu4djIGhp4buDdSwgZOG7sSDEkW/DoW4gaG/hurdjIHJhIHF1eeG6v3QgxJHhu4tuaC4iDQogIA0KICBDaMO6bmcgbMOgIGPDoWMgeOG6pXAgeOG7iSAoYXBwcm94aW1hdGlvbnMpIGPhu6dhIHRo4buxYyB04bq/LCBraMO0bmcgcGjhuqNpIGzDoCBz4buxIG3DtCB04bqjIGhvw6BuIGjhuqNvLiBE4buxYSB0csOqbiBjw6J1IHRyw61jaCBk4bqrbiBu4buVaSB0aeG6v25nIGPhu6dhIEJveCB2w6AgRHJhcGVyLCBt4bulYyB0acOqdSBsw6AgZ2nDunAgbmfGsOG7nWkgxJHhu41jIGhp4buDdSBy4bqxbmcgZMO5IGPDoWMgbcO0IGjDrG5oIGPDsyB0aOG7gyBraMO0bmcgaG/DoG4gdG/DoG4gxJHDum5nIChXcm9uZyksIG5oxrBuZyBjaMO6bmcgduG6q24gaOG7r3Ugw61jaCAodXNlZnVsKSBjaG8gbeG7pWMgxJHDrWNoIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IHbDoCDEkcawYSByYSBr4bq/dCBsdeG6rW4uIE7DsyDEkeG6t3QgbuG7gW4gbcOzbmcgY2hvIHZp4buHYyDEkcOhbmggZ2nDoSBtw7QgaMOsbmggc2F1IG7DoHkgYuG6sW5nIGPDoWNoIG5o4bqlbiBt4bqhbmggc+G7sSBj4bqnbiB0aGnhur90IHBo4bqjaSBsdcO0biBuaOG6rW4gdGjhu6ljIMSRxrDhu6NjIHTDrW5oIHjhuqVwIHjhu4kgY+G7p2EgY2jDum5nLg0KDQogIFZhaSB0csOyIHRyb25nIHRo4buxYyBow6BuaCBtw7QgaMOsbmggaMOzYTogVmnhu4djIGNo4bqlcCBuaOG6rW4gcuG6sW5nIG3DtCBow6xuaCBsw6AgeOG6pXAgeOG7iSBuaMawbmcgY8OzIHRo4buDIGjhu691IMOtY2ggxJHhu4tuaCBow6xuaCB0b8OgbiBi4buZIHF1w6EgdHLDrG5oIGzDoG0gdmnhu4djIHbhu5tpIG3DtCBow6xuaCB0aOG7kW5nIGvDqi4gTsOzIGzDoCDEkeG7mW5nIGzhu7FjIMSR4buDOg0KICBUaOG7sWMgaGnhu4duIGNo4bqpbiDEkW/DoW4gbcO0IGjDrG5oIChtb2RlbCBkaWFnbm9zdGljcykgKCwsLCk6IEtp4buDbSB0cmEgeGVtIG3DtCBow6xuaCB44bqlcCB44buJIHRo4buxYyB04bq/IHThu5F0IMSR4bq/biBt4bupYyBuw6BvLCBwaMOhdCBoaeG7h24gY8OhYyBzYWkgbOG7h2NoIHNvIHbhu5tpIGdp4bqjIMSR4buLbmgsIHbDoCB4w6FjIMSR4buLbmggbmjhu69uZyDEkWnhu4NtIGThu68gbGnhu4d1IGPDsyDhuqNuaCBoxrDhu59uZyBs4bubbi4gxJDDonkgbMOgIGLGsOG7m2MgdGhp4bq/dCB54bq/dSB2w6wgY2jDum5nIHRhIGJp4bq/dCBtw7QgaMOsbmggY8OzIHRo4buDIHNhaS4NCiAgDQogIFhlbSB4w6l0IGNodXnhu4NuIMSR4buVaSBiaeG6v24gKHZhcmlhYmxlIHRyYW5zZm9ybWF0aW9ucykgKCwsKTogTuG6v3UgY8OhYyBjaOG6qW4gxJFvw6FuIGNobyB0aOG6pXkgbcO0IGjDrG5oIGhp4buHbiB04bqhaSBjaMawYSBwaOG6o2kgbMOgIHjhuqVwIHjhu4kgdOG7kXQsIHZp4buHYyBiaeG6v24gxJHhu5VpIGJp4bq/biBwaOG6o24gaOG7k2kgaG/hurdjIGJp4bq/biBnaeG6o2kgdGjDrWNoIGPDsyB0aOG7gyBnacO6cCBt4buRaSBxdWFuIGjhu4cgZOG7ryBsaeG7h3UgcGjDuSBo4bujcCBoxqFuIHbhu5tpIGPhuqV1IHRyw7pjIG3DtCBow6xuaCDEkcaw4bujYyBnaeG6oyDEkeG7i25oICh2w60gZOG7pTogdHV54bq/biB0w61uaCwgcGjDom4gcGjhu5FpIGNodeG6qW4gY2hvIHNhaSBz4buRKSwgbMOgbSBjaG8gbcO0IGjDrG5oIHRy4bufIG7Dqm4gaOG7r3Ugw61jaCBoxqFuICgsKS4NCiAgDQogIEzhu7FhIGNo4buNbiBo4buNIHBow6JuIHBo4buRaSAoZGlzdHJpYnV0aW9uIGZhbWlseSkgdsOgIGjDoG0gbGnDqm4ga+G6v3QgKGxpbmsgZnVuY3Rpb24pIHBow7kgaOG7o3AgdHJvbmcgR0xNcyAoLCwpOiBLaHVuZyBHTE0gY2hvIHBow6lwIGNow7puZyB0YSBjaOG7jW4gY8OhYyBnaeG6oyDEkeG7i25oIHbhu4EgcGjDom4gcGjhu5FpIGPhu6dhIHRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiBzYW8gY2hvIHBow7kgaOG7o3AgduG7m2kgYuG6o24gY2jhuqV0IGPhu6dhIGThu68gbGnhu4d1IHBo4bqjbiBo4buTaSAodsOtIGThu6U6IEJpbm9taWFsIGNobyB04bu3IGzhu4csIFBvaXNzb24gY2hvIMSR4bq/bSwgR2FtbWEgY2hvIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcsIFR3ZWVkaWUgY2hvIGThu68gbGnhu4d1IGPDsyBuaGnhu4F1IHPhu5EgMCwpLiBWaeG7h2MgbOG7sWEgY2jhu41uIMSRw7puZyBnacO6cCBtw7QgaMOsbmggdHLhu58gdGjDoG5oIG3hu5l0IHjhuqVwIHjhu4kgaOG7r3Ugw61jaCBoxqFuIGNobyBj4bqldSB0csO6YyBiaeG6v24gdGhpw6puIHRyb25nIGThu68gbGnhu4d1Lg0KDQojIyMgKioxLjkgTeG7pWMgxJHDrWNoIGPhu6dhIG3hu5l0IG3DtCBow6xuaCB0aOG7kW5nIGvDqiDhuqNuaCBoxrDhu59uZyDEkeG6v24gY8OhY2ggbsOzIMSRxrDhu6NjIHjDonkgZOG7sW5nOiBE4buxIGLDoW8gKFByZWRpY3Rpb24pIGhheSBEaeG7hW4gZ2nhuqNpIChJbnRlcnByZXRhdGlvbikqKg0KICANCiAgTeG7pWMgdGnDqnUgY2jDrW5oIGPhu6dhIHBo4bqnbiBuw6B5IGzDoCBsw6BtIHLDtSBy4bqxbmcgdmnhu4djIHjDonkgZOG7sW5nIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBraMO0bmcgY2jhu4kgbMOgIG3hu5l0IGLDoGkgdG/DoW4ga+G7uSB0aHXhuq10IG3DoCBjw7JuIHBo4bulIHRodeG7mWMgdsOgbyBt4bulYyDEkcOtY2ggc+G7rSBk4bulbmcgY3Xhu5FpIGPDuW5nIGPhu6dhIG3DtCBow6xuaCDEkcOzLiBOw7MgZ2nDunAgbmfGsOG7nWkgxJHhu41jIGhp4buDdSB04bqhaSBzYW8gY8OhYyBtw7QgaMOsbmggY8OzIHRo4buDIMSRxrDhu6NjIHBow6F0IHRyaeG7g24gdGhlbyBuaOG7r25nIGPDoWNoIGtow6FjIG5oYXUgdMO5eSB0aHXhu5ljIHbDoG8gbeG7pWMgdGnDqnUgY+G7pSB0aOG7gyBj4bunYSBuZ2hpw6puIGPhu6l1IGhv4bq3YyDhu6luZyBk4bulbmcuDQogIA0KICBUw6FjIGdp4bqjIG5o4bqlbiBt4bqhbmggcuG6sW5nIHZhaSB0csOyIGNodW5nIGPhu6dhIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBsw6AgYmnhu4N1IGRp4buFbiBjaMOtbmggeMOhYyBjw6FjIMSR4bq3YyDEkWnhu4NtIGjhu4cgdGjhu5FuZyB2w6Agbmfhuqt1IG5oacOqbiBxdWFuIHRy4buNbmcgY+G7p2EgZOG7ryBsaeG7h3UuIFR1eSBuaGnDqm4sIMSR4buRaSB24bubaSBtw7QgaMOsbmggaOG7k2kgcXV5LCBjw7MgaGFpIMSR4buZbmcgbOG7sWMgY2jDrW5oIMSR4buDIHBow6F0IHRyaeG7g24gY2jDum5nOg0KDQogICpE4buxIMSRb8OhbiAoUHJlZGljdGlvbik6KiBN4bulYyB0acOqdSBsw6AgdOG6oW8gcmEgY8OhYyBk4buxIMSRb8OhbiBjaMOtbmggeMOhYyBjaG8gZOG7ryBsaeG7h3UgbeG7m2kgaG/hurdjIGThu68gbGnhu4d1IHRyb25nIHTGsMahbmcgbGFpLiBLaGkgbeG7pWMgxJHDrWNoIGNow61uaCBsw6AgZOG7sSDEkW/DoW4sIGLhuqV0IGvhu7MgYmnhur9uIGThu7EgYsOhbyBuw6BvIGdpw7pwIGPhuqNpIHRoaeG7h24gxJHhu5kgY2jDrW5oIHjDoWMgY+G7p2EgZOG7sSDEkW/DoW4gxJHhu4F1IGPDsyB0aOG7gyDEkcaw4bujYyDEkcawYSB2w6BvIG3DtCBow6xuaCwgbmdheSBj4bqjIGtoaSBt4buRaSBxdWFuIGjhu4cgbmjDom4gcXXhuqMgZ2nhu69hIGJp4bq/biBk4buxIGLDoW8gdsOgIGJp4bq/biDEkcOhcCDhu6luZyBraMO0bmcgcsO1IHLDoG5nIGhv4bq3YyBo4buHIHPhu5EgaOG7k2kgcXV5IGPDsyDEkeG7mSBi4bqldCDEkeG7i25oIHTGsMahbmcgxJHhu5FpIGNhby4NCg0KICAqSGnhu4N1IHbDoCBkaeG7hW4gZ2nhuqNpIChVbmRlcnN0YW5kaW5nIGFuZCBpbnRlcnByZXRhdGlvbik6KiBN4bulYyB0acOqdSBsw6AgaGnhu4N1IG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24uIMSQ4buRaSB24bubaSBt4bulYyDEkcOtY2ggbsOgeSwga8OtY2ggdGjGsOG7m2MgdsOgIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBj4bunYSBjw6FjIGjhu4cgc+G7kSBo4buTaSBxdXkgcuG6pXQgxJHGsOG7o2MgcXVhbiB0w6JtLiBWw60gZOG7pSwgdHJvbmcgbmdoacOqbiBj4bupdSB24buBIGR1bmcgdMOtY2ggcGjhu5VpIChGRVYpIHbDoCBow7p0IHRodeG7kWMsIG3hu6VjIMSRw61jaCBjw7MgdGjhu4MgbMOgIGhp4buDdSB4ZW0gaMO6dCB0aHXhu5FjIGPDsyDhuqNuaCBoxrDhu59uZyAoY8OzIGto4bqjIG7Eg25nIG5ow6JuIHF14bqjKSDEkeG6v24gRkVWIGhheSBraMO0bmcuDQoNCiAgUGjhuqduIG7DoHkgbMOgbSBu4buVaSBi4bqtdCBz4buxIGtow6FjIGJp4buHdCB0cm9uZyBjw6FjaCB0aeG6v3AgY+G6rW4geMOieSBk4buxbmcgbcO0IGjDrG5oIGThu7FhIHRyw6puIGhhaSBt4bulYyDEkcOtY2ggbsOgeS4gTcO0IGjDrG5oIGNobyBt4bulYyDEkcOtY2ggZGnhu4VuIGdp4bqjaSBj4bqnbiBjw6FjIHRoYW0gc+G7kSDGsOG7m2MgbMaw4bujbmcgxJHDoW5nIHRpbiBj4bqteSB2w6AgY8OzIHPhu7EgaOG7lyB0cuG7oyB04buRdCB04burIGThu68gbGnhu4d1LiBOZ8aw4bujYyBs4bqhaSwgbcO0IGjDrG5oIGNobyBt4bulYyDEkcOtY2ggZOG7sSDEkW/DoW4gY8OzIHRo4buDIGJhbyBn4buTbSBuaGnhu4F1IGJp4bq/biBoxqFuIMSR4buDIHThu5FpIMawdSBow7NhIGto4bqjIG7Eg25nIGThu7EgYsOhbywgbmdheSBj4bqjIGtoaSBz4buxIGdp4bqjaSB0aMOtY2ggY2hpIHRp4bq/dCBraMO0bmcgcGjhuqNpIGzDoCDGsHUgdGnDqm4gaMOgbmcgxJHhuqd1Lg0KICANCiMjIyAqKjEuMTAgxJDhu5kgY2jDrW5oIHjDoWMgdsOgIFTDrW5oIMSRxqFuIGdp4bqjbioqDQogIA0KICBQaOG6p24gbsOgeSBnaeG7m2kgdGhp4buHdSB2w6AgdGjhuqNvIGx14bqtbiB24buBIGPDoWMgdGnDqnUgY2jDrSBxdWFuIHRy4buNbmcgZMO5bmcgxJHhu4MgxJHDoW5oIGdpw6EgdsOgIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggdGjhu5FuZyBrw6ouIE7DsyBnacO6cCBuZ8aw4budaSBo4buNYyBoaeG7g3UgcuG6sW5nIHZp4buHYyB4w6J5IGThu7FuZyBtw7QgaMOsbmgga2jDtG5nIGNo4buJIGzDoCB2aeG7h2MgdMOsbSByYSBt4buZdCBjw7RuZyB0aOG7qWMgdG/DoW4gaOG7jWMgYmnhu4N1IGRp4buFbiBk4buvIGxp4buHdSwgbcOgIGPDsm4gY+G6p24gY8OibiBuaOG6r2MgxJHhur9uIGNo4bqldCBsxrDhu6NuZyB2w6AgdMOtbmggaOG7r3Ugw61jaCBj4bunYSBtw7QgaMOsbmggxJHDsyB0cm9uZyB0aOG7sWMgdOG6vy4gxJDhurd0IG7hu4FuIG3Ds25nIGNobyB2aeG7h2MgaGnhu4N1IG5ndXnDqm4gdOG6r2MgY8OibiBi4bqxbmcga2hpIHBow6F0IHRyaeG7g24gbcO0IGjDrG5oLg0KICANCiAgxJDhu5FpIHbhu5tpIGLhuqV0IGvhu7MgdOG6rXAgZOG7ryBsaeG7h3UgbsOgbywgdGjGsOG7nW5nIGPDsyBy4bqldCBuaGnhu4F1IHRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIHbDoCB0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4ga2jDoWMgbmhhdSBjw7MgdGjhu4MgxJHGsOG7o2MgbOG7sWEgY2jhu41uIMSR4buDIHjDonkgZOG7sW5nIG3DtCBow6xuaC4gVmnhu4djIGzhu7FhIGNo4buNbiBjw7MgdGjhu4MgZOG7sWEgdHLDqm4gbMO9IHRodXnhur90IG7hu4FuIGhv4bq3YyBoaeG7g3UgYmnhur90IHbhu4EgxJHhurdjIMSRaeG7g20gduG6rXQgbMO9IGPhu6dhIHbhuqVuIMSR4buBLiBUdXkgbmhpw6puLCBuaMOsbiBjaHVuZywgbeG7mXQgbcO0IGjDrG5oIHRo4buRbmcga8OqIMSRxrDhu6NjIGNvaSBsw6AgcGjDuSBo4bujcCAoYWRlcXVhdGUpIGtoaSBuw7MgxJHhuqF0IMSRxrDhu6NjIHPhu7EgY8OibiBi4bqxbmcgZ2nhu69hIGhhaSB0acOqdSBjaMOtIHNhdToNCiAgDQogICpBY2N1cmFjeSAoxJDhu5kgY2jDrW5oIHjDoWMpOiogTcO0IGjDrG5oIGPhuqduIG3DtCB04bqjIGNow61uaCB4w6FjIGPhuqMgdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKHh1IGjGsOG7m25nIHRydW5nIGLDrG5oKSB2w6AgdGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChiaeG6v24gdGhpw6puIHh1bmcgcXVhbmggeHUgaMaw4bubbmcgxJHDsykgY+G7p2EgZOG7ryBsaeG7h3UuDQogIA0KICAqUGFyc2ltb255IChUw61uaCBjw7QgxJHhu41uZy/EkMahbiBnaeG6o24pOiogTcO0IGjDrG5oIG7Dqm4gY8OgbmcgxJHGoW4gZ2nhuqNuIGPDoG5nIHThu5F0Lg0KDQogIFTDoWMgZ2nhuqMgZ2nhu5tpIHRoaeG7h3Ugbmd1ecOqbiBsw70gUGFyc2ltb255LCBjw7JuIMSRxrDhu6NjIGfhu41pIGzDoCBPY2NhbSdzIFJhem9yLCB0cm9uZyBuZ+G7ryBj4bqjbmggdGjhu5FuZyBrw6o6IG3DtCBow6xuaCDEkcahbiBnaeG6o24gbmjhuqV0IG5oxrBuZyB24bqrbiBjaMOtbmggeMOhYyB2w6Aga2jDtG5nIG3DonUgdGh14bqrbiB24bubaSBk4buvIGxp4buHdSBsw6AgbcO0IGjDrG5oIMSRxrDhu6NjIMawdSB0acOqbi4gQ+G6o25oIGLDoW8gduG7gSBuaOG7r25nIHLhu6dpIHJvIGtoaSBtw7QgaMOsbmggcXXDoSDEkcahbiBnaeG6o24gKGtow7RuZyBtw7QgdOG6oyBk4buvIGxp4buHdSB04buRdCkgaG/hurdjIHF1w6EgcGjhu6ljIHThuqFwLiBN4buZdCBtw7QgaMOsbmggcXXDoSBwaOG7qWMgdOG6oXAgY8OzIHRo4buDIGto4bubcCBy4bqldCB04buRdCB24bubaSBk4buvIGxp4buHdSDEkWFuZyBjw7MgKMSR4buZIGNow61uaCB4w6FjIGNhbyB0csOqbiBk4buvIGxp4buHdSBodeG6pW4gbHV54buHbiksIG5oxrBuZyBs4bqhaSBraMO0bmcgdOG7lW5nIHF1w6F0IGjDs2EgdOG7kXQgKGdlbmVyYWxpemUgd2VsbCkgY2hvIGPDoWMgdOG6rXAgZOG7ryBsaeG7h3UgbeG7m2kuIEhp4buHbiB0xrDhu6NuZyBuw6B5IMSRxrDhu6NjIGfhu41pIGzDoCBvdmVyLWZpdHRpbmcuIFbDrSBk4bulIDEuNyB2w6AgSMOsbmggMS42IG1pbmggaOG7jWEgdHLhu7FjIHF1YW4gc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIG3DtCBow6xuaCBxdcOhIMSRxqFuIGdp4bqjbiAobGluZWFyKSwgbcO0IGjDrG5oIG92ZXItZml0dGluZyAoMTB0aCBvcmRlciBwb2x5bm9taWFsKSwgdsOgIG3hu5l0IG3DtCBow6xuaCBjw6JuIGLhurFuZyBoxqFuIChjdWJpYykuDQoNCiMjIyAqKjEuMTEgVGjDrSBuZ2hp4buHbSBzbyB24bubaSBOZ2hpw6puIGPhu6l1IHF1YW4gc8OhdDogTmjDom4gcXXhuqMgdsOgIFTGsMahbmcgcXVhbioqDQogIFRow60gbmdoaeG7h20gc28gduG7m2kgTmdoacOqbiBj4bupdSBxdWFuIHPDoXQ6IE5ow6JuIHF14bqjIHbDoCBUxrDGoW5nIHF1YW4gZ2nDunAgbmfGsOG7nWkgaOG7jWMgbmjhuq1uIHRo4bupYyB2w6AgaGnhu4N1IHLDtSBz4buxIGtow6FjIGJp4buHdCBxdWFuIHRy4buNbmcgZ2nhu69hIHN1eSBsdeG6rW4gduG7gSBt4buRaSBsacOqbiBo4buHIChhc3NvY2lhdGlvbikgdsOgIHN1eSBsdeG6rW4gduG7gSBxdWFuIGjhu4cgbmjDom4gcXXhuqMgKGNhdXNhbGl0eSkga2hpIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IGLhurFuZyBtw7QgaMOsbmggdGjhu5FuZyBrw6ouIFBo4bqnbiBuw6B5IG5o4bqlbiBt4bqhbmggcuG6sW5nIHBoxrDGoW5nIHBow6FwIHRodSB0aOG6rXAgZOG7ryBsaeG7h3UgY8OzIOG6o25oIGjGsOG7n25nIHPDonUgc+G6r2MgxJHhur9uIGxv4bqhaSBr4bq/dCBsdeG6rW4ga2hvYSBo4buNYyBob+G6t2MgdGjhu7FjIHRp4buFbiBtw6AgY2jDum5nIHRhIGPDsyB0aOG7gyByw7p0IHJhIHThu6sgbcO0IGjDrG5oIMSRw6MgeMOieSBk4buxbmcuDQogIA0KICBIYWkgcGjGsMahbmcgcGjDoXAgdGh1IHRo4bqtcCBk4buvIGxp4buHdSBjaMOtbmggdsOgIOG6o25oIGjGsOG7n25nIGPhu6dhIGNow7puZyDEkeG7kWkgduG7m2kga2jhuqMgbsSDbmcgc3V5IGx14bqtbiBuaMOibiBxdeG6ozoNCiAgDQogICpOZ2hpw6puIGPhu6l1IHF1YW4gc8OhdCAoT2JzZXJ2YXRpb25hbCBTdHVkaWVzKToqIFRyb25nIGPDoWMgbmdoacOqbiBj4bupdSBuw6B5LCBjw6FjIG5ow6AgbmdoacOqbiBj4bupdSBjaOG7iSDEkcahbiB0aHXhuqduIHF1YW4gc8OhdCBjw6FjIHF1w6EgdHLDrG5oIHThu5NuIHThuqFpIHPhurVuIG3DoCBraMO0bmcgY2FuIHRoaeG7h3AgaGF5IGtp4buDbSBzb8OhdCBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIChleHBsYW5hdG9yeSB2YXJpYWJsZXMpLiBEw7kgY8OzIHRo4buDIHPhu60gZOG7pW5nIHRoaeG6v3QgYuG7iyBwaOG7qWMgdOG6oXAgaGF5IGLhuqNuZyBo4buPaSBr4bu5IGzGsOG7oW5nLCBuZ8aw4budaSBuZ2hpw6puIGPhu6l1IGtow7RuZyB0w6FjIMSR4buZbmcgbMOqbiBxdcOhIHRyw6xuaCDEkWFuZyDEkcaw4bujYyBxdWFuIHPDoXQuIEvhur90IGx14bqtbiB04burIG5naGnDqm4gY+G7qXUgcXVhbiBzw6F0IHRoxrDhu51uZyBjaOG7iSBjaG8gcGjDqXAgbsOzaSB24buBIG3hu5FpIGxpw6puIGjhu4cgKGFzc29jaWF0aW9ucykgZ2nhu69hIGPDoWMgYmnhur9uLCBjaOG7qSBraMO0bmcgcGjhuqNpIHF1YW4gaOG7hyBuaMOibiBxdeG6oyAoY2F1c2UtYW5kLWVmZmVjdCkuIFZp4buHYyBz4butIGThu6VuZyBk4buvIGxp4buHdSBxdWFuIHPDoXQgxJHGoW4gdGh14bqnbiB0aMaw4budbmcga2jDtG5nIMSR4bunIMSR4buDIHjDoWMgbmjhuq1uIGvhur90IGx14bqtbiBuaMOibiBxdeG6oywgbmdheSBj4bqjIGtoaSBt4buRaSBxdWFuIGjhu4cgxJHDsyB0aOG7sWMgc+G7sSBsw6AgbmjDom4gcXXhuqMuIFRyb25nIGPDoWMgbmdoacOqbiBj4bupdSBxdWFuIHPDoXQsIHZp4buHYyDEkW8gbMaw4budbmcgdsOgIGhp4buHdSBjaOG7iW5oIOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgYmnhur9uIG5nb+G6oWkgbGFpIChleHRyYW5lb3VzIHZhcmlhYmxlcykga2jDoWMgbMOgIHLhuqV0IHF1YW4gdHLhu41uZyDEkeG7gyBoaeG7g3UgxJHGsOG7o2MgbeG7kWkgbGnDqm4gaOG7hyBj4bunYSBiaeG6v24gcXVhbiB0w6JtLg0KICANCiAgKlRo4buxYyBuZ2hp4buHbSAoRGVzaWduZWQgRXhwZXJpbWVudHMpOiogVHJvbmcgbeG7mXQgdGjhu7FjIG5naGnhu4dtIMSRxrDhu6NjIHRoaeG6v3Qga+G6vywgY8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgY2FuIHRoaeG7h3AgxJHhu4Mga2nhu4NtIHNvw6F0IGdpw6EgdHLhu4sgY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaC4gxJDhurdjIMSRaeG7g20gcGjDom4gYmnhu4d0IGzDoCBraOG6oyBuxINuZyBj4bunYSBuaMOgIG5naGnDqm4gY+G7qXUgcXV54bq/dCDEkeG7i25oIMSRaeG7gXUga2nhu4duIHRo4butIG5naGnhu4dtIG7DoG8gxJHGsOG7o2Mgw6FwIGThu6VuZyBjaG8gdOG7q25nIMSR4buRaSB0xrDhu6NuZy4gTeG7mXQgdGjhu7FjIG5naGnhu4dtIG5n4bqrdSBuaGnDqm4gKHJhbmRvbWl6ZWQgZXhwZXJpbWVudCkgxJHGsOG7o2MgdGhp4bq/dCBr4bq/IHThu5F0IGNobyBwaMOpcCBzdXkgbHXhuq1uIHbhu4EgbeG7kWkgcXVhbiBo4buHIG5ow6JuIHF14bqjIGdp4buvYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIHbDoCBiaeG6v24gxJHDoXAg4bupbmcuDQpN4bq3YyBkw7kgY8OhYyBtw7QgaMOsbmggdGjhu5FuZyBrw6ogeOG7rSBsw70gZOG7ryBsaeG7h3UgdOG7qyBj4bqjIGhhaSBsb+G6oWkgbmdoacOqbiBj4bupdSB0aGVvIGPDoWNoIHTGsMahbmcgdOG7sSB2w6AgY8OhYyBr4bq/dCBsdeG6rW4gdGjhu5FuZyBrw6ogY8OzIHRo4buDIHRyw7RuZyBnaeG7kW5nIG5oYXUgYuG7gSBuZ2/DoGksIGvhur90IGx14bqtbiBraG9hIGjhu41jIHThu6sgdGjhu7FjIG5naGnhu4dtIHRoxrDhu51uZyBt4bqhbmggbeG6vSBoxqFuIG5oaeG7gXUuDQoNCiMjIyAqKjEuMTIgVGh1IHRo4bqtcCBk4buvIGxp4buHdSB2w6Aga2jhuqMgbsSDbmcga2jDoWkgcXXDoXQgaMOzYSBr4bq/dCBxdeG6oyoqDQoNCiAgTuG7mWkgZHVuZyBjaMOtbmggY+G7p2EgbeG7pWMgbsOgeSBsw6AgxJHhu4MgbmjhuqVuIG3huqFuaCB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2EgcGjGsMahbmcgcGjDoXAgdGh1IHRo4bqtcCBk4buvIGxp4buHdSDEkeG7kWkgduG7m2kgcGjhuqFtIHZpIMOhcCBk4bulbmcgY+G7p2EgY8OhYyBr4bq/dCBsdeG6rW4gdGjhu5FuZyBrw6ogxJHGsOG7o2MgcsO6dCByYSB04burIG3hu5l0IG3DtCBow6xuaC4gU2F1IGtoaSB0aOG6o28gbHXhuq1uIHbhu4Egdmnhu4djIHjDonkgZOG7sW5nIHbDoCBkaeG7hW4gZ2nhuqNpIG3DtCBow6xuaCwgcGjhuqduIG7DoHkgaMaw4bubbmcgZOG6q24gbmfGsOG7nWkgaOG7jWMgeGVtIHjDqXQga+G6v3QgcXXhuqMgbcO0IGjDrG5oIGPDsyB0aOG7gyDEkcaw4bujYyBzdXkgcuG7mW5nIChnZW5lcmFsaXplKSDEkeG6v24gcXXhuqduIHRo4buDIG7DoG8gbmdvw6BpIHThuq1wIGThu68gbGnhu4d1IMSRw6MgcGjDom4gdMOtY2guIE7DsyBnacO6cCBuZ8aw4budaSBo4buNYyBoaeG7g3UgcuG6sW5nIGvhur90IHF14bqjIHThu6sgbeG7mXQgbcO0IGjDrG5oIGNo4buJIGPDsyDDvSBuZ2jEqWEgdHJvbmcgbeG7mXQgbmfhu68gY+G6o25oIG5o4bqldCDEkeG7i25oLCDEkcaw4bujYyB4w6FjIMSR4buLbmggYuG7n2kgY8OhY2ggdGjhu6ljIHbDoCBuZ3Xhu5NuIGfhu5FjIGPhu6dhIGThu68gbGnhu4d1Lg0KICANCiAgVGjhuqNvIGx14bqtbiB24buBIHBoxrDGoW5nIHBow6FwIHbDoCB0aGnhur90IGvhur8gdGh1IHRo4bqtcCBk4buvIGxp4buHdSAodsOtIGThu6UsIGxv4bqhaSBt4bqrdSwgY8OhY2ggY2jhu41uIMSR4buRaSB0xrDhu6NuZykgdsOgIOG6o25oIGjGsOG7n25nIGPhu6dhIGNow7puZyDEkeG6v24gdMOtbmggxJHhuqFpIGRp4buHbiBj4bunYSB04bqtcCBk4buvIGxp4buHdS4gQ8OidSBuw7NpIMSRxrDhu6NjIHRyw61jaCBk4bqrbiB0cm9uZyBuZ3Xhu5NuIC0gIm5nxrDhu51pIHRhIG7Ds2kgcuG6sW5nIHRodSB0aOG6rXAgZOG7ryBsaeG7h3UgZ2nhu5FuZyBuaMawIHRodSBnb20gcsOhYzogdHLGsOG7m2Mga2hpIHRodSBnb20sIGLhuqFuIG7Dqm4gaMOsbmggZHVuZyB4ZW0gYuG6oW4gc+G6vSBsw6BtIGfDrCB24bubaSBuw7MiIC0gbmfhu6Ugw70gbeG6oW5oIG3hur0gcuG6sW5nIG3hu6VjIMSRw61jaCBwaMOibiB0w61jaCBwaOG6o2kgxJHhu4tuaCBoxrDhu5tuZyBxdcOhIHRyw6xuaCB0aHUgdGjhuq1wIGThu68gbGnhu4d1LCB2w6AgbmfGsOG7o2MgbOG6oWksIGPDoWNoIGThu68gbGnhu4d1IMSRxrDhu6NjIHRodSB0aOG6rXAgc+G6vSB4w6FjIMSR4buLbmggbmjhu69uZyBnw6wgY8OzIHRo4buDIMSRxrDhu6NjIGzDoG0gduG7m2kgbsOzLg0KICANCiAgR2nhu5tpIHRoaeG7h3UgdsOgIGzDoG0gcsO1IGtow6FpIG5p4buHbSBHZW5lcmFsaXphYmlsaXR5IChLaOG6oyBuxINuZyBzdXkgcuG7mW5nL0tow6FpIHF1w6F0IGjDs2EpLiDEkMOieSBsw6Aga2jhuqMgbsSDbmcgw6FwIGThu6VuZyBr4bq/dCBxdeG6oyBwaMOibiB0w61jaCAodOG7qWMgbMOgIG3DtCBow6xuaCBob+G6t2MgY8OhYyBr4bq/dCBsdeG6rW4gdOG7qyBtw7QgaMOsbmgpIGNobyBt4buZdCBxdeG6p24gdGjhu4MgbOG7m24gaMahbiBob+G6t2MgY8OhYyB0w6xuaCBodeG7kW5nIGtow6FjIG5nb8OgaSB04bqtcCBk4buvIGxp4buHdSBj4bulIHRo4buDIMSRw6MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgeMOieSBk4buxbmcgbcO0IGjDrG5oLg0KICANCiAgR2nhuqNpIHRow61jaCBy4bqxbmcgY8OhYyBtw7QgaMOsbmggdGjhu5FuZyBrw6ogxJHGsOG7o2MgeMOieSBk4buxbmcgdOG7qyBt4buZdCB04bqtcCBk4buvIGxp4buHdSBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2Mgc3V5IHLhu5luZyBt4buZdCBjw6FjaCDEkcOhbmcgdGluIGPhuq15IMSR4bq/biBxdeG6p24gdGjhu4MgbcOgIGThu68gbGnhu4d1IMSRw7MgxJHhuqFpIGRp4buHbi4gTuG6v3UgZOG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIG3hu5l0IG3huqt1IG5n4bqrdSBuaGnDqm4gY+G7p2EgbeG7mXQgcXXhuqduIHRo4buDIGPhu6UgdGjhu4MsIGvhur90IHF14bqjIGPDsyB0aOG7gyBzdXkgcuG7mW5nIGNobyBxdeG6p24gdGjhu4MgxJHDsy4gTuG6v3UgZOG7ryBsaeG7h3UgY2jhu4kgbMOgIG3hu5l0IHThuq1wIGjhu6NwIHRodeG6rW4gdGnhu4duIGhv4bq3YyB04burIG3hu5l0IG5naGnDqm4gY+G7qXUgcXVhbiBzw6F0IGtow7RuZyDEkcaw4bujYyB0aGnhur90IGvhur8gxJHhu4MgxJHhuqFpIGRp4buHbiBjaG8gYuG6pXQga+G7syBxdeG6p24gdGjhu4MgbsOgbywga2jhuqMgbsSDbmcgc3V5IHLhu5luZyBz4bq9IGLhu4sgaOG6oW4gY2jhur8gbmdoacOqbSB0cuG7jW5nLiBDw6J1IGjhu49pIHRyb25nIFBo4bqnbiBQcm9ibGVtIDEuNyB0cuG7sWMgdGnhur9wIGjhu49pIHbhu4Egdmnhu4djIHjDoWMgxJHhu4tuaCBxdeG6p24gdGjhu4MgY8OzIHRo4buDIHN1eSBy4buZbmcga+G6v3QgcXXhuqMgxJHhur9uLCBj4bunbmcgY+G7kSBnaeG6oyDEkeG7i25oIHbhu4EgbuG7mWkgZHVuZyBuw6B5Lg0KDQojIyMgKioxLjEzIFPhu60gZOG7pW5nIFIgxJHhu4MgeMOieSBk4buxbmcgbcO0IGjDrG5oIHRo4buRbmcga8OqICoqDQogIFIgbmjGsCBsw6AgY8O0bmcgY+G7pSB0aOG7sWMgaMOgbmggY2jDrW5oIHPhur0gxJHGsOG7o2Mgc+G7rSBk4bulbmcgeHV5w6puIHN14buRdCBnacOhbyB0csOsbmggxJHhu4MgeMOieSBk4buxbmcsIHBow6JuIHTDrWNoIHbDoCBkaeG7hW4gZ2nhuqNpIGPDoWMgbcO0IGjDrG5oIHRo4buRbmcga8OqLiBTYXUga2hpIHRyw6xuaCBiw6B5IGPDoWMga2jDoWkgbmnhu4dtIG7hu4FuIHThuqNuZyB2w6AgbMO9IHRodXnhur90IHbhu4EgbcO0IGjDrG5oLCBwaOG6p24gbsOgeSBuaOG6sW0gbeG7pWMgxJHDrWNoIGvhur90IG7hu5FpIGzDvSB0aHV54bq/dCB24bubaSB0aOG7sWMgaMOgbmgsIGdpw7pwIHNpbmggdmnDqm4gbMOgbSBxdWVuIHbhu5tpIG3DtGkgdHLGsOG7nW5nIHBo4bqnbiBt4buBbSBz4bq9IGTDuW5nIMSR4buDIMOhcCBk4bulbmcga2nhur9uIHRo4bupYyDEkcOjIGjhu41jLg0KICANCiAgTuG7mWkgZHVuZyBjaMOtbmggYmFvIGfhu5NtOg0KDQotIEdp4bubaSB0aGnhu4d1IFIgbmjGsCBt4buZdCBuZ8O0biBuZ+G7ryB2w6AgbcO0aSB0csaw4budbmcgY2hvIHTDrW5oIHRvw6FuIHRo4buRbmcga8OqLg0KDQotIFRyw6xuaCBiw6B5IG3hu5l0IGPDoWNoIHThu5VuZyBxdWFuIHbhu4EgY8OhY2ggUiBz4bq9IMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIG1pbmggaOG7jWEgdsOgIMOhcCBk4bulbmcgY8OhYyBraMOhaSBuaeG7h20gbcO0IGjDrG5oIHRo4buRbmcga8OqIMSRw6MgdGjhuqNvIGx14bqtbiB0cm9uZyBDaMawxqFuZyAxLg0KDQotIEPDsyB0aOG7gyBiYW8gZ+G7k20gY8OhYyB2w60gZOG7pSBob+G6t2MgaMaw4bubbmcgZOG6q24gUiBjxqEgYuG6o24gbmjhuqV0IGxpw6puIHF1YW4gxJHhur9uIGPDoWMgY2jhu6cgxJHhu4EgY+G7p2EgQ2jGsMahbmcgMSwgY2jhurNuZyBo4bqhbiBuaMawIGPDoWNoIHThuqNpIGThu68gbGnhu4d1LCB0aOG7sWMgaGnhu4duIGPDoWMgcGjDqXAgdMOtbmggdGjhu5FuZyBrw6ogxJHGoW4gZ2nhuqNuLCBob+G6t2MgdOG6oW8gY8OhYyBiaeG7g3UgxJHhu5MgZOG7ryBsaeG7h3UgY8ahIGLhuqNuIMSRw6MgxJHGsOG7o2MgxJHhu4EgY+G6rXAgKHbDrSBk4bulIG5oxrAgdHJvbmcgUHJvYmxlbSAxLjcpLg0KDQotIE5o4bqlbiBt4bqhbmggcuG6sW5nIFIgc+G6vSBsw6AgbuG7gW4gdOG6o25nIGvhu7kgdGh14bqtdCDEkeG7gyB0cmnhu4NuIGtoYWkgY8OhYyBr4bu5IHRodeG6rXQgbcO0IGjDrG5oIGjDs2EgcGjhu6ljIHThuqFwIGjGoW4gxJHGsOG7o2MgZ2nhu5tpIHRoaeG7h3UgdHJvbmcgY8OhYyBjaMawxqFuZyBzYXUuDQoNCiMjIyAqKjEuMTQgVOG7lW5nIGvhur90ICoqDQogIA0KICBN4bulYyB0acOqdSBjaMOtbmggY+G7p2EgbeG7pWMgbsOgeSBsw6AgdMOzbSB04bqvdCBs4bqhaSBjw6FjIGtow6FpIG5p4buHbSB2w6Agw70gdMaw4bufbmcgY+G7kXQgbMO1aSDEkcOjIMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIHRvw6BuIGLhu5kgQ2jGsMahbmcgMS4gTsOzIG5o4bqxbSBj4bunbmcgY+G7kSBs4bqhaSBraeG6v24gdGjhu6ljIG7hu4FuIHThuqNuZyB24buBIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBuw7NpIGNodW5nIHbDoCBjw6FjIGtow61hIGPhuqFuaCBxdWFuIHRy4buNbmcgY+G6p24gY8OibiBuaOG6r2Mga2hpIGLhuq90IMSR4bqndSBuZ2hpw6puIGPhu6l1IHbhu4EgbcO0IGjDrG5oLCBnacO6cCBuZ8aw4budaSBo4buNYyBo4buHIHRo4buRbmcgaMOzYSBs4bqhaSBjw6FjIMSRaeG7g20gY2jDrW5oIMSRw6MgaOG7jWMuDQoNCiAgROG7sWEgdHLDqm4gY8OhYyB0acOqdSDEkeG7gSBj4bunYSBjw6FjIG3hu6VjIHRyxrDhu5tjIMSRw7MgdHJvbmcgQ2jGsMahbmcgMSwgbuG7mWkgZHVuZyBjaMOtbmggY+G7p2EgcGjhuqduIHTDs20gdOG6r3QgbsOgeSBjw7Mga2jhuqMgbsSDbmcgYmFvIGfhu5NtOg0KDQotIE5o4bqvYyBs4bqhaSBraMOhaSBuaeG7h20gY8ahIGLhuqNuIHbhu4EgbcO0IGjDrG5oIHRo4buRbmcga8OqLCDEkeG6t2MgYmnhu4d0IGzDoCB2aeG7h2MgbcO0IHThuqMgY+G6oyB0aMOgbmggcGjhuqduIGPDsyBo4buHIHRo4buRbmcgKHN5c3RlbWF0aWMpIHbDoCBuZ+G6q3Ugbmhpw6puIChyYW5kb20pIGPhu6dhIGThu68gbGnhu4d1Lg0KDQotIFTDs20gbMaw4bujYyB24buBIG3DtCBow6xuaCBo4buTaSBxdXkgKHJlZ3Jlc3Npb24gbW9kZWxzKSB2w6AgY8OhY2ggZGnhu4VuIGdp4bqjaSBjaMO6bmcuDQoNCi0gTmjhuqVuIG3huqFuaCB0cmnhur90IGzDvSAiQWxsIE1vZGVscyBBcmUgV3JvbmcsIGJ1dCBTb21lIEFyZSBVc2VmdWwiIHbDoCB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2Egdmnhu4djIHjDoWMgxJHhu4tuaCBt4bulYyDEkcOtY2ggY+G7p2EgbcO0IGjDrG5oLg0KDQotIMSQ4buBIGPhuq1wIMSR4bq/biBoYWkgdGnDqnUgY2jDrSDEkcOhbmggZ2nDoSBtw7QgaMOsbmg6IMSR4buZIGNow61uaCB4w6FjIChhY2N1cmFjeSkgdsOgIHTDrW5oIGPDtCDEkeG7jW5nL3Rp4bq/dCBraeG7h20gdGhhbSBz4buRIChwYXJzaW1vbnkpLg0KDQotIE5o4bqlbiBt4bqhbmggc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIG5naGnDqm4gY+G7qXUgdGjhu7FjIG5naGnhu4dtIChleHBlcmltZW50cykgdsOgIHF1YW4gc8OhdCAob2JzZXJ2YXRpb25hbCBzdHVkaWVzKSwgY8WpbmcgbmjGsCBraOG6oyBuxINuZyBzdXkgbHXhuq1uIHbhu4EgbmjDom4gcXXhuqMgKGNhdXNhbGl0eSkgc28gduG7m2kgbGnDqm4gaOG7hyAoYXNzb2NpYXRpb24pLg0KDQotIFTDs20gdOG6r3QgdOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHRodSB0aOG6rXAgZOG7ryBsaeG7h3UgKGRhdGEgY29sbGVjdGlvbikgdsOgIGtow6FpIG5p4buHbSBraOG6oyBuxINuZyBzdXkgcuG7mW5nL2tow6FpIHF1w6F0IGjDs2EgKGdlbmVyYWxpemFiaWxpdHkpIGPhu6dhIGvhur90IHF14bqjIG3DtCBow6xuaC4NCg0KLSBOaOG6r2MgbOG6oWkgdmnhu4djIGdp4bubaSB0aGnhu4d1IFIgbmjGsCBjw7RuZyBj4bulIGNow61uaCBz4bq9IMSRxrDhu6NjIHPhu60gZOG7pW5nIGNobyBtw7QgaMOsbmggdGjhu5FuZyBrw6ogdHJvbmcgc8OhY2guICANCg0KIyMgKipDSMavxqBORyAyOiBNw5QgSMOMTkggSOG7kkkgUVVZIFRVWeG6vk4gVMONTkggKExpbmVhciBSZWdyZXNzaW9uIE1vZGVscykqKg0KDQojIyMgKioyLjEgR2nhu5tpIHRoaeG7h3UgdOG7lW5nIHF1YW4qKg0KDQogIEdp4bubaSB0aGnhu4d1IHThu5VuZyBxdWFuIHbhu4EgY2jhu6cgxJHhu4EgdHLhu41uZyB0w6JtIGPhu6dhIENoxrDGoW5nIDIgbMOgIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCAoTGluZWFyIFJlZ3Jlc3Npb24gTW9kZWxzKS4gUGjhuqduIGdp4bubaSB0aGnhu4d1IMSR4bq3dCBu4buBbiB04bqjbmcgY2hvIHZp4buHYyBraMOhbSBwaMOhIGNoaSB0aeG6v3QgduG7gSBj4bqldSB0csO6YywgxrDhu5tjIGzGsOG7o25nLCBzdXkgbHXhuq1uIHbDoCBs4buxYSBjaOG7jW4gbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHRyb25nIGPDoWMgbeG7pWMgdGnhur9wIHRoZW8gY+G7p2EgY2jGsMahbmcuIMSQw6J5IGzDoCBixrDhu5tjIGto4bufaSDEkeG6p3UgY2hvIG3hu5l0IHBo4bqnbiBnaeG7m2kgdGhp4buHdSBzw6J1IHPhuq9jIHbhu4EgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgsIHBow7kgaOG7o3AgY2hvIG5o4buvbmcgbmfGsOG7nWkgxJHDoyBjw7Mga2nhur9uIHRo4bupYyB0aOG7kW5nIGvDqiBjxqEgYuG6o24uDQogIENoxrDGoW5nIDIgc+G6vSDEkWkgc8OidSB2w6BvIMSR4buLbmggbmdoxKlhIGNow61uaCB0aOG7qWMgY+G7p2EgTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oLiBO4buZaSBkdW5nIG7DoHkgYsOhbyB0csaw4bubYyBy4bqxbmcgY2jGsMahbmcgc+G6vSB0csOsbmggYsOgeSBjw6FjIHBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY+G7p2EgbcO0IGjDrG5oLCBjw6FjaCB0aOG7sWMgaGnhu4duIHN1eSBsdeG6rW4gdGjhu5FuZyBrw6ogKG5oxrAga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgdsOgIGtob+G6o25nIHRpbiBj4bqteSksIHbDoCBjw6FjIGNoaeG6v24gbMaw4bujYyDEkeG7gyBzbyBzw6FuaCB2w6AgbOG7sWEgY2jhu41uIG3DtCBow6xuaCBwaMO5IGjhu6NwLiBQaOG6p24gbsOgeSBjxaluZyBjw7MgdGjhu4MgbmjhuqVuIG3huqFuaCB2aeG7h2Mgc+G7rSBk4bulbmcgcGjhuqduIG3hu4FtIFIgbMOgbSBjw7RuZyBj4bulIHRo4buxYyBow6BuaCB4dXnDqm4gc3Xhu5F0IGNoxrDGoW5nLg0KICANCiMjIyAqKjIuMiBNw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggKExpbmVhciBSZWdyZXNzaW9uIE1vZGVscyBEZWZpbmVkKSoqDQoNCiAgTcO0IGjDrG5oIEjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRxrDhu6NjIHRyw6xuaCBiw6B5IHLDtSByw6BuZyBj4bqldSB0csO6YyB0b8OhbiBo4buNYyB2w6AgY8OhYyBnaeG6oyDEkeG7i25oIGPGoSBi4bqjbi4gTeG7pWMgbsOgeSDEkcaw4bujYyDEkeG6t3QgcmEgxJHhu4MgY3VuZyBj4bqlcCBjaG8gbmfGsOG7nWkgxJHhu41jIG3hu5l0IGhp4buDdSBiaeG6v3QgduG7r25nIGNo4bqvYyB24buBIG7hu4FuIHThuqNuZyBj4bunYSBtw7QgaMOsbmggdHV54bq/biB0w61uaCwgxJHhurdjIGJp4buHdCBsw6Agdmnhu4djIHjDoWMgxJHhu4tuaCBoYWkgdGjDoG5oIHBo4bqnbiBj4buRdCBsw7VpIGPhu6dhIG7DszogdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKHN5c3RlbWF0aWMgY29tcG9uZW50KSB2w6AgdGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChyYW5kb20gY29tcG9uZW50KS4NCiAgDQojIyMjICoqxJDhu4tuaCBuZ2jEqWEgTcO0IGjDrG5oOioqDQogIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBk4buvIGxp4buHdSB24bubaSBt4buZdCBiaeG6v24gcGjhuqNuIGjhu5NpIHkgdsOgIHAgYmnhur9uIGdp4bqjaSB0aMOtY2ggJHhfMSQsIC4uLiwgJHhfcCQuIE3DtCBow6xuaCBuw6B5IGJhbyBn4buTbSBoYWkgdGjDoG5oIHBo4bqnbiBxdWVuIHRodeG7mWMgKGjhu4cgdGjhu5FuZyB2w6Agbmfhuqt1IG5oacOqbiksIG5oxrBuZyB24bubaSBjw6FjIGjDrG5oIHRo4bupYyBj4bulIHRo4buDLg0KICANCiAgKipUaMOgbmggcGjhuqduIEjhu4cgdGjhu5FuZzoqKiBHaeG6oyDEkeG7i25oIHLhurFuZyBr4buzIHbhu41uZyBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpIGNobyBt4buXaSBxdWFuIHPDoXQgJGkkLCAkRVt5X2ldID0gXG11X2kkLCBjw7MgbeG7kWkgcXVhbiBo4buHIHR1eeG6v24gdMOtbmggduG7m2kgY8OhYyB0aGFtIHPhu5EgJM6yJCB2w6AgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCAkeCQuIEPDtG5nIHRo4bupYyB04buVbmcgcXXDoXQgY+G7p2EgdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgbMOgOiANCiQkXG11X2kgPSDOsl8wICsgzrJfezF9eF97MWl9ICsgLi4uICsgzrJfe3B9eF97cGl9JCQuDQoNCiTOsl8wLCDOsl8xLCAuLi4sIM6yX3AkIGzDoCBjw6FjIHRoYW0gc+G7kSBo4buTaSBxdXkgY2jGsGEgYmnhur90IGPhuqduIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyB04burIGThu68gbGnhu4d1Lg0KDQokzrJfMCQgdGjGsOG7nW5nIMSRxrDhu6NjIGfhu41pIGzDoCBo4buHIHPhu5EgY2jhurduIChpbnRlcmNlcHQpLg0KDQpDw7MgJHAkIGJp4bq/biBnaeG6o2kgdGjDrWNoIHbDoCAkcCckIHRoYW0gc+G7kSBo4buTaSBxdXkgKCRwJyA9IHAgKyAxJCBu4bq/dSBjw7MgaOG7hyBz4buRIGNo4bq3biAkzrJfMCQpLg0KDQogICoqVGjDoG5oIHBo4bqnbiBOZ+G6q3Ugbmhpw6puOioqIEdp4bqjIMSR4buLbmggcuG6sW5nIGPDoWMgYmnhur9uIHBo4bqjbiBo4buTaSAkeV9pJCBjw7MgcGjGsMahbmcgc2FpIGtow7RuZyDEkeG7lWkgJM+DwrIkLiBIb+G6t2MsIHBoxrDGoW5nIHNhaSBjw7MgdGjhu4MgdOG7tyBs4buHIHbhu5tpIGPDoWMgdHLhu41uZyBz4buRIMawdSB0acOqbiAocHJpb3Igd2VpZ2h0cykgJHdfaSQgxJHDoyBiaeG6v3QgdsOgIGTGsMahbmcsIHThu6ljIGzDoCAkdmFyW3lpXSA9IFxmcmFjIHvPg8KyfXt3X2l9JC4gVHLhu41uZyBz4buRICR3X2kkIMSRxrDhu6NjIGNvaSBsw6AgxJHDoyBiaeG6v3QuIFBoxrDGoW5nIHNhaSAkz4PCsiQgbMOgIG3hu5l0IHRoYW0gc+G7kSBjaMawYSBiaeG6v3QgY+G6p24gxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nLiBDw6FjIGJp4bq/biBwaOG6o24gaOG7k2kgJHkkIMSRxrDhu6NjIGdp4bqjIMSR4buLbmggbMOgIMSR4buZYyBs4bqtcCB24bubaSBuaGF1Lg0KDQogICoqQ8O0bmcgdGjhu6ljIHThu5VuZyBxdcOhdDoqKiANCiAgS+G6v3QgaOG7o3AgaGFpIHRow6BuaCBwaOG6p24sIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjw7MgZOG6oW5nOiANCg0KICAkJFxsZWZ0XHsNCiAgXGJlZ2lue2FycmF5fXtsfQ0KICB7zrxfaSA9IM6yXzAgKyBcc3VtX3tqID0gMX1ee3B9IM6yX2ogeF97aml9fSBcXA0KICB7dmFyW3lfaV0gPSBcZnJhYyB7z4PCsn17d19pfX0NCiAgXGVuZHthcnJheX0NCiAgXHJpZ2h0LiAkJA0KDQogIHbhu5tpICRFW3lfaV0gPSDOvF9pJA0KDQogIEPDoWMgVHLGsOG7nW5nIGjhu6NwIMSQ4bq3YyBiaeG7h3Q6DQogIA0KICAtIEjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRxqFuIGdp4bqjbiAoU2ltcGxlIGxpbmVhciByZWdyZXNzaW9uKTogTMOgIHRyxrDhu51uZyBo4bujcCBraGkgY8OzIG3hu5l0IGJp4bq/biBnaeG6o2kgdGjDrWNoIGR1eSBuaOG6pXQgKHAgPSAxKS4NCg0KDQogIEjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHRow7RuZyB0aMaw4budbmcgKE9yZGluYXJ5IGxpbmVhciByZWdyZXNzaW9uKTogTMOgIHRyxrDhu51uZyBo4bujcCBraGkgdOG6pXQgY+G6oyBjw6FjIHRy4buNbmcgc+G7kSDGsHUgdGnDqm4gJHdfIGkkIMSR4buBdSBi4bqxbmcgbeG7mXQuDQogIA0KICBDw6FjIEdp4bqjIMSR4buLbmggQ+G7kXQgbMO1aTogQ8OhYyBnaeG6oyDEkeG7i25oIGPhuqduIHRoaeG6v3QgxJHhu4MgdGhp4bq/dCBs4bqtcCBNw7QgaMOsbmggYmFvIGfhu5NtOg0KDQotIFPhu7EgcGjDuSBo4bujcCAoU3VpdGFiaWxpdHkpOiBDw7luZyBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IHBow7kgaOG7o3AgY2hvIHThuqV0IGPhuqMgY8OhYyBxdWFuIHPDoXQuDQoNCi0gVMOtbmggdHV54bq/biB0w61uaCAoTGluZWFyaXR5KTogTeG7kWkgcXVhbiBo4buHIHRo4buxYyBz4buxIGdp4buvYSDOvCB2w6AgbeG7l2kgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHhu4tuaCBsxrDhu6NuZyBsw6AgdHV54bq/biB0w61uaC4NCg0KLSBQaMawxqFuZyBzYWkga2jDtG5nIMSR4buVaSAoQ29uc3RhbnQgdmFyaWFuY2UpOiBQaOG6p24gY2jGsGEgYmnhur90IGPhu6dhIHBoxrDGoW5nIHNhaSAoz4PCsikgbMOgIGtow7RuZyDEkeG7lWkuDQoNCi0gVMOtbmggxJHhu5ljIGzhuq1wIChJbmRlcGVuZGVuY2UpOiBDw6FjIGJp4bq/biBwaOG6o24gaOG7k2kgeSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KIyMjIyAqKlbDrSBk4bulIG1pbmggaOG7jWE6KioNCg0KICBWw60gZOG7pSAyLjEgKEThu68gbGnhu4d1IHRoYWkga+G7syAtIEdlc3RhdGlvbiBkYXRhKTogVMOgaSBsaeG7h3Ugc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgduG7gSBjw6JuIG7hurduZyB0cnVuZyBiw6xuaCBraGkgc2luaCAoeSkgdsOgIHR14buVaSB0aGFpICh4KSDEkeG7gyBtaW5oIGjhu41hLiBN4bq3YyBkw7kgY2hpIHRp4bq/dCDGsOG7m2MgbMaw4bujbmcgxJHGsOG7o2MgdHLDrG5oIGLDoHkgc2F1LCBt4bulYyBuw6B5IGdp4bubaSB0aGnhu4d1IGThu68gbGnhu4d1IHbDoCBjw6FjaCBz4butIGThu6VuZyBjw6FjIGjDoG0gUiBjxqEgYuG6o24gbmjGsCBsaWJyYXJ5KCksIGRhdGEoKSwgc3RyKCksIHN1bW1hcnkoKSDEkeG7gyBraMOhbSBwaMOhIGThu68gbGnhu4d1LiBIw6xuaCAyLjEgbWluaCBo4buNYSBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHGoW4gZ2nhuqNuICh24bubaSB0cuG7jW5nIHPhu5Egd2k9MSksIHRo4buDIGhp4buHbiBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UsIMSRxrDhu51uZyB0aOG6s25nIGJp4buDdSBkaeG7hW4gdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKM68KSwgdsOgIGPDoWMgxJHGsOG7nW5nIGfhuqFjaCBuZ2FuZy9txalpIHTDqm4gYmnhu4N1IHRo4buLIHPhu7EgYmnhur9uIHRoacOqbiB4dW5nIHF1YW5oIMSRxrDhu51uZyB0aOG6s25nICh0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4pLCBuaOG6pW4gbeG6oW5oIGdp4bqjIMSR4buLbmggcGjGsMahbmcgc2FpIHjhuqVwIHjhu4kga2jDtG5nIMSR4buVaS4NCg0KIyMjICoqMi4zIFNpbXBsZSBMaW5lYXIgUmVncmVzc2lvbiAoSOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHGoW4pKioNCg0KIyMjIyAqKsSQ4buLbmggbmdoxKlhIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCDEkMahbiAqKg0KICBNw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHGoW4gYmFvIGfhu5NtIGhhaSB0aMOgbmggcGjhuqduIMSR4bq3YyB0csawbmc6DQoNCiAgKipUaMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gKFJhbmRvbSBjb21wb25lbnQpOioqIEdp4bqjIMSR4buLbmggcuG6sW5nIGJp4bq/biBwaOG6o24gaOG7k2kgJHlfaSQgY8OzIHBoxrDGoW5nIHNhaSBraMO0bmcgxJHhu5VpICRcc2lnbWFeMiQgaG/hurdjIHBoxrDGoW5nIHNhaSB04bu3IGzhu4cgduG7m2kgY8OhYyB0cuG7jW5nIHPhu5EgZMawxqFuZyDEkcOjIGJp4bq/dCAkd19pJCwgdOG7qWMgbMOgICRcdGV4dHt2YXJ9W3lfaV0gPSBcc2lnbWFeMi93X2kkIGNobyAkaSA9IDEsIDIsIFxkb3RzLCBuJC4gJHdfaSQgxJHGsOG7o2MgZ+G7jWkgbMOgIHRy4buNbmcgc+G7kSB0csaw4bubYyAocHJpb3Igd2VpZ2h0cykuDQoNCiAgKipUaMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyAoU3lzdGVtYXRpYyBjb21wb25lbnQpOioqIEJp4buDdSB0aOG7iyBt4buRaSBxdWFuIGjhu4cgdHV54bq/biB0w61uaCBnaeG7r2Ega+G7syB24buNbmcgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaSAkXG11X2kgPSBcdGV4dHtFfVt5X2ldJCB2w6AgYmnhur9uIGdp4bqjaSB0aMOtY2ggJHhfaSQuIEPDtG5nIHRo4bupYyB04buVbmcgcXXDoXQgY+G7p2EgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oICh24bubaSAkcD0xJCBiaeG6v24gZ2nhuqNpIHRow61jaCkgbMOgICRcbXVfaSA9IFxiZXRhXzAgKyBcYmV0YV8xeF9pJC4gVHJvbmcgxJHDsywgJFxiZXRhXzAkIHbDoCAkXGJldGFfMSQgbMOgIGPDoWMgdGhhbSBz4buRIGjhu5NpIHF1eSBjaMawYSBiaeG6v3QgY+G6p24gxrDhu5tjIGzGsOG7o25nIHThu6sgZOG7ryBsaeG7h3UuICRcYmV0YV8wJCB0aMaw4budbmcgxJHGsOG7o2MgZ+G7jWkgbMOgIGjhu4cgc+G7kSBjaOG6t24sIGzDoCBnacOhIHRy4buLIGPhu6dhICR5JCBraGkgJHgkIGLhurFuZyAwLg0KICANCiAgTcO0IGjDrG5oICgyLjIpIHRyb25nIHTDoGkgbGnhu4d1IGzDoCBt4buZdCB2w60gZOG7pSB24buBIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjw7MgdHLhu41uZyBz4buRLCDEkcaw4bujYyDDoXAgZOG7pW5nIGNobyBk4buvIGxp4buHdSB24buBIGPDom4gbuG6t25nIHRy4bq7IHPGoSBzaW5oIHRoZW8gdHXhu5VpIHRoYWkgKGdlc3RhdGlvbiBkYXRhKS4gVHLhu41uZyBz4buRICR3X2kgPSBtX2kkIChz4buRIGzGsOG7o25nIHF1YW4gc8OhdCBk4buxYSB2w6BvIMSRw7MgdMOtbmggY8OibiBu4bq3bmcgdHJ1bmcgYsOsbmgpIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHBo4bqjbiDDoW5oIHLhurFuZyBjw6FjIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggZOG7sWEgdHLDqm4gbmhp4buBdSBxdWFuIHPDoXQgaMahbiBtYW5nIGzhuqFpIG5oaeG7gXUgdGjDtG5nIHRpbiBoxqFuLiBDw7RuZyB0aOG7qWMgY+G7p2EgbcO0IGjDrG5oIHRyb25nIHbDrSBk4bulIG7DoHkgbMOgOg0KJCRcbXVfaSA9IFxiZXRhXzAgKyBcYmV0YV8xeF9pJCQNCnbhu5tpIA0KJCRcdGV4dHt2YXJ9W3lfaV0gPSBcc2lnbWFeMi9tX2kkJA0KDQojIyMjICoqxq/hu5tjIGzGsOG7o25nIELDrG5oIHBoxrDGoW5nIFThu5FpIHRoaeG7g3UgKExlYXN0LVNxdWFyZXMgRXN0aW1hdGlvbikqKg0KDQogIE3hu6VjIHRpw6p1IGPhu6dhIHBoxrDGoW5nIHBow6FwIG7DoHkgbMOgIHTDrG0gY8OhYyBnacOhIHRy4buLIGPhu6dhIHRoYW0gc+G7kSAoJFxiZXRhXzAsIFxiZXRhXzEkKSBzYW8gY2hvIHThu5VuZyBiw6xuaCBwaMawxqFuZyBjw6FjIHNhaSBs4buHY2ggY8OzIHRy4buNbmcgc+G7kSBnaeG7r2EgZ2nDoSB0cuG7iyBxdWFuIHPDoXQgJHlfaSQgdsOgIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggZOG7sSDEkW/DoW4gJFxtdV9pJCBsw6Agbmjhu48gbmjhuqV0LiBU4buVbmcgYsOsbmggcGjGsMahbmcgY8OhYyBzYWkgbOG7h2NoIGPDsyB0cuG7jW5nIHPhu5EgxJHGsOG7o2Mga8O9IGhp4buHdSBsw6AgDQogICQkUyhcYmV0YV8wLCBcYmV0YV8xKSA9IFxzdW1fe2k9MX1ebiB3X2koeV9pIC0gXG11X2kpXjIgPSBcc3VtX3tpPTF9Xm4gd19pKHlfaSAtIFxiZXRhXzAgLSBcYmV0YV8xeF9pKV4yJCQuDQogICoqVsOtIGThu6UgMi4yOioqDQogIA0KICBNaW5oIGjhu41hIHZp4buHYyB0w61uaCB0b8OhbiBnacOhIHRy4buLICRTJCBjaG8gYmEgcXVhbiBzw6F0IGdp4bqjIMSR4buLbmggduG7gSBjw6JuIG7hurduZyB2w6AgdHXhu5VpLCBz4butIGThu6VuZyBoYWkgYuG7mSBnacOhIHRy4buLIGtow6FjIG5oYXUgY2hvICRcYmV0YV8wJCB2w6AgJFxiZXRhXzEkICgtMC45IHbDoCAwLjEsIHNhdSDEkcOzIC0zIHbDoCAwLjE1KS4gQ8OhYyBiaeG7g3UgxJHhu5MgY2hvIHRo4bqleSBzYWkgbOG7h2NoIHThu6sgxJHGsOG7nW5nIGjhu5NpIHF1eSBk4buxIMSRb8Ohbi4gVmnhu4djIHTDrW5oIHRvw6FuIGNobyB0aOG6pXkgYuG7mSBnacOhIHRy4buLICRcYmV0YV8wID0gLTAuOSQgdsOgICRcYmV0YV8xID0gMC4xJCBjaG8gJFMgPSAxODYuMSQsIHRyb25nIGtoaSBi4buZIGdpw6EgdHLhu4sgdGjhu6kgaGFpIGNobyAkUyA9IDM0My40NDMzJC4NCg0KICDEkOG7gyB0w6xtIGPDoWMgZ2nDoSB0cuG7iyAkXGJldGFfMCQgdsOgICRcYmV0YV8xJCBj4buxYyB0aeG7g3UgaMOzYSAkUyQsIHRhIGzhuqV5IMSR4bqhbyBow6BtIHJpw6puZyBj4bunYSAkUyQgdGhlbyAkXGJldGFfMCQgdsOgICRcYmV0YV8xJCB2w6AgxJHhurd0IGNow7puZyBi4bqxbmcgMC4gQ8OhYyBwaMawxqFuZyB0csOsbmggxJHhuqFvIGjDoG0gcmnDqm5nIGzDoDoNCg0KJCRcZnJhY3tccGFydGlhbCBTKFxiZXRhXzAsIFxiZXRhXzEpfXtccGFydGlhbCBcYmV0YV8wfSA9IC0yIFxzdW1fe2k9MX1ebiB3X2koeV9pIC0gXG11X2kpJCQNCiQkXGZyYWN7XHBhcnRpYWwgUyhcYmV0YV8wLCBcYmV0YV8xKX17XHBhcnRpYWwgXGJldGFfMX0gPSAtMiBcc3VtX3tpPTF9Xm4gd19peF9pKHlfaSAtIFxtdV9pKSQkLg0KICANCiAgR2nhuqNpIGjhu4cgcGjGsMahbmcgdHLDrG5oIG7DoHkgKMSRxrDhu6NjIHnDqnUgY+G6p3UgY2jhu6luZyBtaW5oIHRyb25nIELDoGkgdOG6rXAgMi4yKSBjaG8gcmEgY8OhYyDGsOG7m2MgbMaw4bujbmcgYsOsbmggcGjGsMahbmcgdOG7kWkgdGhp4buDdSAkXGhhdHtcYmV0YX1fMCQgdsOgICRcaGF0e1xiZXRhfV8xJDoNCiAgDQokJFxoYXR7XGJldGF9XzAgPSBcYmFye3l9X3cgLSBcaGF0e1xiZXRhfV8xXGJhcnt4fV93JCQuDQoNCg0KJCRcaGF0e1xiZXRhfTEgPSBcZnJhY3tcc3Vte2k9MX1ebiB3X2koeF9pIC0gXGJhcnt4fXcpeV9pfXtcc3Vte2k9MX1ebiB3X2koeF9pIC0gXGJhcnt4fV93KV4yfTQ0JCQuDQoNCiAgKlRyb25nIMSRw7M6Kg0KDQokXGJhcnt4fV93JCB2w6AgJFxiYXJ7eX1fdyQgbMOgIGPDoWMgdHJ1bmcgYsOsbmggY8OzIHRy4buNbmcgc+G7kS4NCg0KQ8OhYyDGsOG7m2MgbMaw4bujbmcgJFxoYXR7XGJldGF9XzAkIHbDoCAkXGhhdHtcYmV0YX1fMSQgbMOgIGPDoWMgxrDhu5tjIGzGsOG7o25nIGtow7RuZyBjaOG7h2NoICh1bmJpYXNlZCBlc3RpbWF0b3JzKSBj4bunYSAkXGJldGFfMCQgdsOgICRcYmV0YV8xJC4NCg0KQ8OhYyBnacOhIHRy4buLIHBow7kgaOG7o3AgKGZpdHRlZCB2YWx1ZXMpIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bufaSAkXGhhdHtcbXV9X2kgPSBcaGF0e1xiZXRhfV8wICsgXGhhdHtcYmV0YX1fMXhfaSQuDQoNCkdpw6EgdHLhu4sgY+G7sWMgdGnhu4N1IGPhu6dhICRTKFxiZXRhXzAsIFxiZXRhXzEpJCwga2hpIMSRxrDhu6NjIHTDrW5oIHThuqFpIGPDoWMgxrDhu5tjIGzGsOG7o25nIGLDrG5oIHBoxrDGoW5nIHThu5FpIHRoaeG7g3UsIMSRxrDhu6NjIGfhu41pIGzDoCB04buVbmcgYsOsbmggcGjGsMahbmcgZMawIChyZXNpZHVhbCBzdW0tb2Ytc3F1YXJlcyAtIHJzcykuIHJzcyDEkcaw4bujYyB0w61uaCBi4bqxbmcgJFxzdW1fe2k9MX1ebiB3X2koeV9pIC0gXGhhdHtcbXV9X2kpXjIkLiAkcl9pID0geV9pIC0gXGhhdHtcbXV9X2kkIMSRxrDhu6NjIGfhu41pIGzDoCBwaOG6p24gZMawIHRow7QgKHJhdyByZXNpZHVhbHMpLg0KDQojIyMgKioyLjQgRXN0aW1hdGlvbiBmb3IgTXVsdGlwbGUgUmVncmVzc2lvbioqICAgIA0KDQojIyMjICoqxJDhu4tuaCBuZ2jEqWEgTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oICjEkGEgYmnhur9uKToqKg0KDQogIE3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjw7MgdGjhu4MgY8OzIG5oaeG7gXUgYmnhur9uIGdp4bqjaSB0aMOtY2guIE3DtCBow6xuaCBuw6B5IMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIGLhu59pIGhhaSB0aMOgbmggcGjhuqduOg0KIA0KICAqKlRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAoUmFuZG9tIGNvbXBvbmVudCk6KiogR2nhuqMgxJHhu4tuaCBwaMawxqFuZyBzYWkgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaSAkeV9pJCB04bu3IGzhu4cgbmdo4buLY2ggduG7m2kgdHLhu41uZyBz4buRIMSRw6MgYmnhur90ICR3X2kkLCB04bupYyBsw6AgJFx0ZXh0e3Zhcn1beV9pXSA9IFxzaWdtYV4yL3dfaSQuIFRy4buNbmcgc+G7kSB0csaw4bubYyAocHJpb3Igd2VpZ2h0cykgJHdfaSQgbMOgIGPDoWMgZ2nDoSB0cuG7iyBkxrDGoW5nIMSRw6MgYmnhur90Lg0KIA0KICAqKlRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIChTeXN0ZW1hdGljIGNvbXBvbmVudCk6KiogQmnhu4N1IGRp4buFbiBr4buzIHbhu41uZyBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpICRcbXVfaSA9IFx0ZXh0e0V9W3lfaV0kIGzDoCBt4buZdCBow6BtIHR1eeG6v24gdMOtbmggY+G7p2EgJHAkIGJp4bq/biBnaeG6o2kgdGjDrWNoICR4X3tqfSQgdsOgIG3hu5l0IGjhu4cgc+G7kSBjaOG6t24gJFxiZXRhXzAkLiBDw7RuZyB0aOG7qWMgbMOgOiANCiQkXG11X2kgPSBcYmV0YV8wICsgXHN1bV97aj0xfV5wIFxiZXRhX2p4X3tqaX0kJC4gDQoNCkPDoWMgdGhhbSBz4buRICRcYmV0YV8wLCBcYmV0YV8xLCBcZG90cywgXGJldGFfcCQgbMOgIGPDoWMgdGhhbSBz4buRIGjhu5NpIHF1eSBjaMawYSBiaeG6v3QgY+G6p24gxrDhu5tjIGzGsOG7o25nLiBT4buRIGzGsOG7o25nIHRoYW0gc+G7kSBo4buTaSBxdXkgxJHGsOG7o2Mga8O9IGhp4buHdSBsw6AgJHAnJCwgdHJvbmcgxJHDsyAkcCcgPSBwICsgMSQgbuG6v3UgY8OzIGjhu4cgc+G7kSBjaOG6t24gJFxiZXRhXzAkLg0KDQojIyMjICAqKkJp4buDdSBkaeG7hW4gTWEgdHLhuq1uIGPhu6dhIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oOioqIA0KICANCiAgxJDhu4MgeOG7rSBsw70gaGnhu4d1IHF14bqjIGPDoWMgbcO0IGjDrG5oIHbhu5tpIG5oaeG7gXUgYmnhur9uIGdp4bqjaSB0aMOtY2gsIG5nxrDhu51pIHRhIHPhu60gZOG7pW5nIGvDvSBoaeG7h3UgbWEgdHLhuq1uLg0KDQogICoqVmVjdMahIHBo4bqjbiBo4buTaToqKiAkXG1hdGhiZnt5fSQgbMOgIHZlY3TGoSAkbiBcdGltZXMgMSQgY2jhu6lhIGPDoWMgZ2nDoSB0cuG7iyBxdWFuIHPDoXQgJHlfaSQuDQogDQogICoqTWEgdHLhuq1uIG3DtCBow6xuaDoqKiAkXG1hdGhiZntYfSQgbMOgIG1hIHRy4bqtbiAkbiBcdGltZXMgcCckIGNo4bupYSBjw6FjIGdpw6EgdHLhu4sgY+G7p2EgYmnhur9uIGdp4bqjaSB0aMOtY2ggY2hvIG3hu5dpIHF1YW4gc8OhdCwgY8O5bmcgduG7m2kgbeG7mXQgY+G7mXQgdG/DoG4gc+G7kSAxIGNobyBo4buHIHPhu5EgY2jhurduIChu4bq/dSBjw7MpLiBDw6FjIGPhu5l0IGPhu6dhICRcbWF0aGJme1h9JCB0aMaw4budbmcgYmFvIGfhu5NtIGPhu5l0IGNobyBo4buHIHPhu5EgY2jhurduLCB2w6AgY8OhYyBj4buZdCBjaG8gY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaC4NCiANCiAgKipWZWN0xqEgdGhhbSBz4buROioqICRcYm9sZHN5bWJvbHtcYmV0YX0kIGzDoCB2ZWN0xqEgJHAnIFx0aW1lcyAxJCBjaOG7qWEgY8OhYyB0aGFtIHPhu5EgaOG7k2kgcXV5ICRcYmV0YV8wLCBcYmV0YV8xLCBcZG90cywgXGJldGFfcCQuDQogIA0KICAqKk1hIHRy4bqtbiB0cuG7jW5nIHPhu5E6KiogJFxtYXRoYmZ7V30kIGzDoCBtYSB0cuG6rW4gY2jDqW8gJG4gXHRpbWVzIG4kIHbhu5tpIGPDoWMgdHLhu41uZyBz4buRICR3X2kkIHRyw6puIMSRxrDhu51uZyBjaMOpbyBjaMOtbmguIE1hIHRy4bqtbiBuZ2jhu4tjaCDEkeG6o28gJFxtYXRoYmZ7V31eey0xfSQgY8OzIGPDoWMgZ2nDoSB0cuG7iyAkMS93X2kkIHRyw6puIMSRxrDhu51uZyBjaMOpbyBjaMOtbmguIE7hur91IGtow7RuZyBjw7MgdHLhu41uZyBz4buRICh04bqldCBj4bqjICR3X2k9MSQpLCAkXG1hdGhiZntXfSQgbMOgIG1hIHRy4bqtbiDEkcahbiB24buLICRcbWF0aGJme0l9X24kLg0KIA0KICAqKlF1YW4gaOG7hyBtYSB0cuG6rW4gY+G7p2EgbcO0IGjDrG5oOioqDQokJFx0ZXh0e0V9W1xtYXRoYmZ7eX1dID0gXGJvbGRzeW1ib2x7XG11fSA9IFxtYXRoYmZ7WH1cYm9sZHN5bWJvbHtcYmV0YX0kJA0KdsOgIA0KJCRcdGV4dHt2YXJ9W1xtYXRoYmZ7eX1dID0gXG1hdGhiZntXfV57LTF9XHNpZ21hXjIkJC4NCg0KIyMjIyAqKsav4bubYyBsxrDhu6NuZyBCw6xuaCBwaMawxqFuZyBU4buRaSB0aGnhu4N1IGLhurFuZyBNYSB0cuG6rW46KiogIA0KICANCiAgUGjGsMahbmcgcGjDoXAgYsOsbmggcGjGsMahbmcgdOG7kWkgdGhp4buDdSBjw7MgdHLhu41uZyBz4buRIHTDrG0gdmVjdMahIHRoYW0gc+G7kSAkXGJvbGRzeW1ib2x7XGJldGF9JCBj4buxYyB0aeG7g3UgaMOzYSB04buVbmcgYsOsbmggcGjGsMahbmcgY8OhYyBzYWkgbOG7h2NoIGPDsyB0cuG7jW5nIHPhu5EgJFMoXGJvbGRzeW1ib2x7XGJldGF9KSA9IFxzdW1fe2k9MX1ebiB3X2koeV9pIC0gXG11X2kpXjIkLCBjw7MgdGjhu4Mgdmnhur90IHRyb25nIGvDvSBoaeG7h3UgbWEgdHLhuq1uIGzDoDoNCiQkUyhcYm9sZHN5bWJvbHtcYmV0YX0pID0gKFxtYXRoYmZ7eX0gLSBcbWF0aGJme1h9XGJvbGRzeW1ib2x7XGJldGF9KV5UIFxtYXRoYmZ7V30gKFxtYXRoYmZ7eX0gLSBcbWF0aGJme1h9XGJvbGRzeW1ib2x7XGJldGF9KSQkLg0KDQogICoqxq/hu5tjIGzGsOG7o25nIEjhu4cgc+G7kSAoJFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSQpOioqDQogDQogQuG6sW5nIGPDoWNoIGPhu7FjIHRp4buDdSBow7NhICRTKFxib2xkc3ltYm9se1xiZXRhfSkkLCDGsOG7m2MgbMaw4bujbmcgYsOsbmggcGjGsMahbmcgdOG7kWkgdGhp4buDdSBjaG8gdmVjdMahIHRoYW0gc+G7kSAkXGJvbGRzeW1ib2x7XGJldGF9JCDEkcaw4bujYyB0w61uaCBi4bqxbmcgY8O0bmcgdGjhu6ljIG1hIHRy4bqtbjogJCRcaGF0e1xib2xkc3ltYm9se1xiZXRhfX0gPSAoXG1hdGhiZntYfV5UIFxtYXRoYmZ7V1h9KV57LTF9XG1hdGhiZntYfV5UIFxtYXRoYmZ7V3l9JCQuIA0KDQpDw6FjIMaw4bubYyBsxrDhu6NuZyAkXGhhdHtcYmV0YX1faiQgbMOgIGPDoWMgxrDhu5tjIGzGsOG7o25nIGtow7RuZyBjaOG7h2NoICh1bmJpYXNlZCBlc3RpbWF0b3JzKSBj4bunYSAkXGJldGFfaiQuDQoNCiAgKlbDrSBk4bulIDIuOToqIE1pbmggaOG7jWEgdmnhu4djIHRoaeG6v3QgbOG6rXAgdmVjdMahICRcbWF0aGJme3l9JCB2w6AgbWEgdHLhuq1uIG3DtCBow6xuaCAkXG1hdGhiZntYfSQgY2hvIGThu68gbGnhu4d1IGx1bmdjYXAsIGJhbyBn4buTbSBjw6FjIGJp4bq/biBBZ2UsIEh0LCBHZW5kZXIsIFNtb2tlLCB2w6AgbeG7mXQgaOG7hyBz4buRIGNo4bq3bi4gTWEgdHLhuq1uICRcbWF0aGJme1d9JCBsw6AgbWEgdHLhuq1uIMSRxqFuIHbhu4sgZG8gY8OhYyBxdWFuIHPDoXQga2jDtG5nIMSRxrDhu6NjIHRy4buNbmcgc+G7kSBow7NhLg0KIA0KICAqVsOtIGThu6UgMi4xMDoqIFRyw6xuaCBiw6B5IGPDoWNoIHPhu60gZOG7pW5nIG3DoyBSIMSR4buDIHTDrW5oIHRvw6FuIMaw4bubYyBsxrDhu6NuZyAkXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19JCBjaG8gbcO0IGjDrG5oIGx1bmdjYXAgYuG6sW5nIGPDoWNoIMOhcCBk4bulbmcgY8O0bmcgdGjhu6ljIG1hIHRy4bqtbiAkXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19ID0gKFxtYXRoYmZ7WH1eVFxtYXRoYmZ7WH0pXnstMX1cbWF0aGJme1h9XlRcbWF0aGJme3l9JCAodHLGsOG7nW5nIGjhu6NwIGtow7RuZyB0cuG7jW5nIHPhu5EsICRcbWF0aGJme1d9PVxtYXRoYmZ7SX0kKS4gTcOjIFIgc+G7rSBk4bulbmcgbW9kZWwubWF0cml4KCkgxJHhu4MgdOG6oW8gbWEgdHLhuq1uICRcbWF0aGJme1h9JCwgdCgpIGNobyBjaHV54buDbiB24buLLCAlKiUgY2hvIG5ow6JuIG1hIHRy4bqtbiwgdsOgIHNvbHZlKCkgY2hvIG5naOG7i2NoIMSR4bqjbyBtYSB0cuG6rW4uIEvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyBjaG8gdOG7q25nIGjhu4cgc+G7kSDEkcaw4bujYyBoaeG7g24gdGjhu4suDQogDQogICoqxq/hu5tjIGzGsOG7o25nIFBoxrDGoW5nIHNhaSBTYWkgc+G7kSAoJFxzaWdtYV4yJCk6KioNCiAgDQogIMav4bubYyBsxrDhu6NuZyBraMO0bmcgY2jhu4djaCBj4bunYSBwaMawxqFuZyBzYWkgc2FpIHPhu5EgJFxzaWdtYV4yJCDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkc14yJCBob+G6t2MgbXNlIChtZWFuIHNxdWFyZSBlcnJvcikgdsOgIMSRxrDhu6NjIHTDrW5oIHThu6sgdOG7lW5nIGLDrG5oIHBoxrDGoW5nIGTGsCAocmVzaWR1YWwgc3VtLW9mLXNxdWFyZXMgLSByc3MpLiBDw7RuZyB0aOG7qWMgbWEgdHLhuq1uIGNobyByc3MgbMOgOg0KICAkJChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSleVCBcbWF0aGJme1d9IChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSkkJCwgDQoNCnbDoCANCg0KJCRzXjIgPSBcdGV4dHtyc3N9IC8gKG4gLSBwJykkJC4NCg0KICAqKlNhaSBz4buRIENodeG6qW4gY+G7p2EgSOG7hyBz4buRICgkXHRleHR7c2V9KFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSkkKToqKg0KICANCiAgTWEgdHLhuq1uIGhp4buHcCBwaMawxqFuZyBzYWkgY+G7p2EgY8OhYyDGsOG7m2MgbMaw4bujbmcgaOG7hyBz4buRICRcaGF0e1xib2xkc3ltYm9se1xiZXRhfX0kIMSRxrDhu6NjIGNobyBi4bufaSAkXHRleHR7dmFyfVtcaGF0e1xib2xkc3ltYm9se1xiZXRhfX1dID0gKFxtYXRoYmZ7WH1eVCBcbWF0aGJme1dYfSleey0xfVxzaWdtYV4yJC4gU2FpIHPhu5EgY2h14bqpbiBj4bunYSB04burbmcgaOG7hyBz4buRICRcaGF0e1xiZXRhfV9qJCBsw6AgY8SDbiBi4bqtYyBoYWkgY+G7p2EgcGjhuqduIHThu60gdGjhu6kgJGokIHRyw6puIMSRxrDhu51uZyBjaMOpbyBjaMOtbmggY+G7p2EgbWEgdHLhuq1uIGhp4buHcCBwaMawxqFuZyBzYWkgbsOgeSwgc2F1IGtoaSB0aGF5ICRcc2lnbWFeMiQgYuG6sW5nIMaw4bubYyBsxrDhu6NuZyAkc14yJC4NCg0KICAqKlNhaSBz4buRIENodeG6qW4gY+G7p2EgR2nDoSB0cuG7iyBQaMO5IGjhu6NwICgkXHRleHR7c2V9KFxoYXR7XGJvbGRzeW1ib2x7XG11fX1fZykkKToqKg0KICANCiAgxJDhu5FpIHbhu5tpIG3hu5l0IHZlY3TGoSBnacOhIHRy4buLIGJp4bq/biBnaeG6o2kgdGjDrWNoIG3hu5tpICRcbWF0aGJme3h9X2ckIChsw6AgbeG7mXQgdmVjdMahIGjDoG5nICQxIFx0aW1lcyBwJyQpLCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGThu7EgxJFvw6FuIGzDoCAkXGhhdHtcbXV9X2cgPSBcbWF0aGJme3h9X2dcaGF0e1xib2xkc3ltYm9se1xiZXRhfX0kLiBQaMawxqFuZyBzYWkgY+G7p2EgJFxoYXR7XG11fV9nJCBsw6AgJFx0ZXh0e3Zhcn1bXGhhdHtcbXV9X2ddID0gXG1hdGhiZnt4fV9nKFxtYXRoYmZ7WH1eVCBcbWF0aGJme1dYfSleey0xfVxtYXRoYmZ7eH1fZ15UIFxzaWdtYV4yJC4gU2FpIHPhu5EgY2h14bqpbiBj4bunYSAkXGhhdHtcbXV9X2ckIGzDoCBjxINuIGLhuq1jIGhhaSBj4bunYSBwaMawxqFuZyBzYWkgbsOgeSB24bubaSAkXHNpZ21hXjIkIMSRxrDhu6NjIHRoYXkgYuG6sW5nICRzXjIkLg0KICANCiAgKlbDrSBk4bulIDIuMTM6KiBNaW5oIGjhu41hIGPDoWNoIHTDrW5oIHNhaSBz4buRIGNodeG6qW4gY+G7p2EgZ2nDoSB0cuG7iyBwaMO5IGjhu6NwICRcdGV4dHtsb2coZmV2KX0kIGThu7EgxJFvw6FuIGNobyBt4buZdCBjw6EgbmjDom4gY+G7pSB0aOG7gyAobuG7rywgaMO6dCB0aHXhu5FjLCAxOCB0deG7lWksIGNhbyA2NiBpbmNoKSBz4butIGThu6VuZyBtw7QgaMOsbmggbHVuZ2NhcCB2w6AgY8O0bmcgdGjhu6ljIG1hIHRy4bqtbi4NCiANCiMjIyAqKjIuNSBCaeG7g3UgZGnhu4VuIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBi4bqxbmcgbWEgdHLhuq1uKioNCg0KIyMjIyAqKkvDvSBoaeG7h3UgTWEgdHLhuq1uIGPhu6dhIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCoqDQoNCiAgTcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHbhu5tpICRwJCBiaeG6v24gZ2nhuqNpIHRow61jaCB2w6AgaOG7hyBz4buRIGNo4bq3biAodOG7lW5nIGPhu5luZyAkcCcgPSBwKzEkIHRoYW0gc+G7kSkgxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBn4buNbiBs4bqhaSBi4bqxbmcgbWEgdHLhuq1uLg0KDQogIFZlY3TGoSBwaOG6o24gaOG7k2kgKCRcbWF0aGJme3l9JCk6IE3hu5l0IHZlY3TGoSBj4buZdCAkbiBcdGltZXMgMSQgY2jhu6lhIGPDoWMgZ2nDoSB0cuG7iyBxdWFuIHPDoXQgY+G7p2EgYmnhur9uIHBo4bqjbiBo4buTaSAoJHlfaSQpLg0KDQogIE1hIHRy4bqtbiBtw7QgaMOsbmggKCRcbWF0aGJme1h9JCk6IE3hu5l0IG1hIHRy4bqtbiAkbiBcdGltZXMgcCckIGNo4bupYSBjw6FjIGdpw6EgdHLhu4sgY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCBjaG8gbeG7l2kgcXVhbiBzw6F0LiBD4buZdCDEkeG6p3UgdGnDqm4gY+G7p2EgJFxtYXRoYmZ7WH0kIHRoxrDhu51uZyBsw6AgY+G7mXQgY2jhu6lhIHRvw6BuIHPhu5EgMSwgdMawxqFuZyDhu6luZyB24bubaSBo4buHIHPhu5EgY2jhurduICRcYmV0YV8wJC4gQ8OhYyBj4buZdCB0aeG6v3AgdGhlbyBjaOG7qWEgZ2nDoSB0cuG7iyBj4bunYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoICR4XzEsIFxkb3RzLCB4X3AkLg0KDQogIFZlY3TGoSB0aGFtIHPhu5EgKCRcYm9sZHN5bWJvbHtcYmV0YX0kKTogTeG7mXQgdmVjdMahIGPhu5l0ICRwJyBcdGltZXMgMSQgY2jhu6lhIGPDoWMgdGhhbSBz4buRIGjhu5NpIHF1eSBjaMawYSBiaeG6v3QgJFxiZXRhXzAsIFxiZXRhXzEsIFxkb3RzLCBcYmV0YV9wJCBj4bqnbiDGsOG7m2MgbMaw4bujbmcuDQoNCiAgTWEgdHLhuq1uIHRy4buNbmcgc+G7kSAoJFxtYXRoYmZ7V30kKTogTeG7mXQgbWEgdHLhuq1uIGNow6lvICRuIFx0aW1lcyBuJCB24bubaSBjw6FjIHRy4buNbmcgc+G7kSBkxrDGoW5nIMSRw6MgYmnhur90ICR3X2kkIHRyw6puIMSRxrDhu51uZyBjaMOpbyBjaMOtbmguIE7hur91IGtow7RuZyBjw7MgdHLhu41uZyBz4buRICh04bqldCBj4bqjICR3X2kgPSAxJCksICRcbWF0aGJme1d9JCBsw6AgbWEgdHLhuq1uIMSRxqFuIHbhu4sgJFxtYXRoYmZ7SX1fbiQuDQoNCiAgKipCaeG7g3UgZGnhu4VuIG1hIHRy4bqtbiBj4bunYSBtw7QgaMOsbmg6KioNCg0KICBUaMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZzogDQokJFx0ZXh0e0V9W1xtYXRoYmZ7eX1dID0gXGJvbGRzeW1ib2x7XG11fSA9IFxtYXRoYmZ7WH1cYm9sZHN5bWJvbHtcYmV0YX0kJC4NCg0KICBUaMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm46IA0KJCRcdGV4dHt2YXJ9W1xtYXRoYmZ7eX1dID0gXG1hdGhiZntXfV57LTF9XHNpZ21hXjIkJC4NCg0KICAqVsOtIGThu6UgMi45OioNCiAgDQogIE1pbmggaOG7jWEgY8OhY2ggdGhp4bq/dCBs4bqtcCBjw6FjIG1hIHRy4bqtbiAkXG1hdGhiZnt5fSQsICRcbWF0aGJme1h9JCB2w6AgJFxtYXRoYmZ7V31eey0xfSQgKGhv4bq3YyAkXG1hdGhiZntXfSQpIGNobyBk4buvIGxp4buHdSBnZXN0YXRpb24gdsOgIGx1bmdjYXAuIMSQ4buRaSB24bubaSBk4buvIGxp4buHdSBsdW5nY2FwLCB2ZWN0xqEgJFxtYXRoYmZ7eX0kIGzDoCAkXHRleHR7bG9nKGZldil9JCwgbWEgdHLhuq1uICRcbWF0aGJme1h9JCBjw7MgY8OhYyBj4buZdCBsw6AgaOG7hyBz4buRIGNo4bq3biwgQWdlLCBIdCwgYmnhur9uIGdp4bqjIGNobyBHZW5kZXIgdsOgIFNtb2tlLiBNYSB0cuG6rW4gdHLhu41uZyBz4buRICRcbWF0aGJme1d9JCBsw6AgbWEgdHLhuq1uIMSRxqFuIHbhu4sgdsOsIGtow7RuZyBjw7MgdHLhu41uZyBz4buRLiBWw60gZOG7pSBuw6B5IGNobyB0aOG6pXkgY8OhY2ggY+G6pXUgdHLDumMgZOG7ryBsaeG7h3UgdsOgIG3DtCBow6xuaCB2w6BvIMSR4buLbmggZOG6oW5nIG1hIHRy4bqtbiBjaHXhuqluLg0KDQojIyMjICoqxq/hu5tjIGzGsOG7o25nIEjhu4cgc+G7kSAqKg0KDQogIMav4bubYyBsxrDhu6NuZyBiw6xuaCBwaMawxqFuZyB04buRaSB0aGnhu4N1IGPDsyB0cuG7jW5nIHPhu5EgY2hvIHZlY3TGoSB0aGFtIHPhu5EgJFxib2xkc3ltYm9se1xiZXRhfSQsIGvDvSBoaeG7h3UgbMOgICRcaGF0e1xib2xkc3ltYm9se1xiZXRhfX0kLCDEkcaw4bujYyB0w6xtIGLhurFuZyBjw6FjaCBj4buxYyB0aeG7g3UgaMOzYSB04buVbmcgYsOsbmggcGjGsMahbmcgY8OhYyBzYWkgbOG7h2NoIGPDsyB0cuG7jW5nIHPhu5EgdHJvbmcga8O9IGhp4buHdSBtYSB0cuG6rW4gJFMoXGJvbGRzeW1ib2x7XGJldGF9KSA9IChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxib2xkc3ltYm9se1xiZXRhfSleVCBcbWF0aGJme1d9IChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxib2xkc3ltYm9se1xiZXRhfSkkLg0KDQogIEPDtG5nIHRo4bupYyDGsOG7m2MgbMaw4bujbmcgJFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSQgbMOgOiANCiAgDQokJFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSA9IChcbWF0aGJme1h9XlQgXG1hdGhiZntXWH0pXnstMX1cbWF0aGJme1h9XlQgXG1hdGhiZntXeX0kJC4NCsSQw6J5IGzDoCBjw7RuZyB0aOG7qWMgbWEgdHLhuq1uIHThu5VuZyBxdcOhdCBj4bunYSDGsOG7m2MgbMaw4bujbmcgYsOsbmggcGjGsMahbmcgdOG7kWkgdGhp4buDdSBjw7MgdHLhu41uZyBz4buRLg0KDQogICpWw60gZOG7pSAyLjEwOiogDQogIA0KICBUcsOsbmggYsOgeSBtw6MgUiDEkeG7gyB0w61uaCAkXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19JCBjaG8gbcO0IGjDrG5oIGx1bmdjYXAuIE3DoyBuw6B5IHPhu60gZOG7pW5nIGjDoG0gbW9kZWwubWF0cml4IMSR4buDIHThuqFvIG1hIHRy4bqtbiAkXG1hdGhiZntYfSQsIGPDoWMgcGjDqXAgdG/DoW4gbWEgdHLhuq1uIHQoKSAoY2h1eeG7g24gduG7iyksICUqJSAobmjDom4gbWEgdHLhuq1uKSwgdsOgIHNvbHZlKCkgKG5naOG7i2NoIMSR4bqjbyBtYSB0cuG6rW4pIMSR4buDIMOhcCBk4bulbmcgdHLhu7FjIHRp4bq/cCBjw7RuZyB0aOG7qWMgJFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSA9IChcbWF0aGJme1h9XlRcbWF0aGJme1h9KV57LTF9XG1hdGhiZntYfV5UXG1hdGhiZnt5fSQgKHRyb25nIHRyxrDhu51uZyBo4bujcCAkXG1hdGhiZntXfSA9IFxtYXRoYmZ7SX0kKS4gVsOtIGThu6UgbsOgeSBtaW5oIGjhu41hIGPDoWNoIGPDtG5nIHRo4bupYyBtYSB0cuG6rW4gxJHGsOG7o2MgdHJp4buDbiBraGFpIHRyb25nIHBo4bqnbiBt4buBbSB0aOG7kW5nIGvDqiDEkeG7gyBuaOG6rW4gxJHGsOG7o2MgY8OhYyDGsOG7m2MgbMaw4bujbmcgaOG7hyBz4buRLg0KDQojIyMjICoqxq/hu5tjIGzGsOG7o25nIFBoxrDGoW5nIHNhaSBTYWkgc+G7kSAoJFxzaWdtYV4yJCkqKg0KDQogIFThu5VuZyBiw6xuaCBwaMawxqFuZyBkxrAgKHJlc2lkdWFsIHN1bS1vZi1zcXVhcmVzIC0gcnNzKSB0cm9uZyBrw70gaGnhu4d1IG1hIHRy4bqtbiBsw6AgDQokJChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSleVCBcbWF0aGJme1d9IChcbWF0aGJme3l9IC0gXG1hdGhiZntYfVxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSkkJC4NCg0KICDGr+G7m2MgbMaw4bujbmcga2jDtG5nIGNo4buHY2ggY+G7p2EgcGjGsMahbmcgc2FpIHNhaSBz4buRICRcc2lnbWFeMiQgxJHGsOG7o2Mga8O9IGhp4buHdSBsw6AgJHNeMiQgaG/hurdjIG1zZSwgdsOgIMSRxrDhu6NjIHTDrW5oIGLhurFuZyBjw7RuZyB0aOG7qWM6ICRzXjIgPSBcdGV4dHtyc3N9IC8gKG4gLSBwJykkLiBN4bqrdSBz4buRICRuLXAnJCBsw6AgYuG6rWMgdOG7sSBkbyBkxrAuDQoNCiAgKlbDrSBk4bulIDIuMTE6Kg0KICANCiAgTWluaCBo4buNYSBjw6FjaCB0w61uaCBSU1MgdsOgICRzXjIkIGNobyBtw7QgaMOsbmggbHVuZ2NhcCB0cm9uZyBSLiBWw60gZOG7pSBuw6B5IMOhcCBk4bulbmcgY8O0bmcgdGjhu6ljIG1hIHRy4bqtbiBjaG8gUlNTIHbDoCBjw7RuZyB0aOG7qWMgdMOtbmggJHNeMiQgxJHhu4MgdGh1IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBwaMawxqFuZyBzYWkgc2FpIHPhu5EuDQoNCiMjIyMgKirGr+G7m2MgbMaw4bujbmcgUGjGsMahbmcgc2FpIHbDoCBTYWkgc+G7kSBDaHXhuqluICoqDQoNCiAgUGjGsMahbmcgc2FpIGPhu6dhIMav4bubYyBsxrDhu6NuZyBI4buHIHPhu5EgKCRcaGF0e1xib2xkc3ltYm9se1xiZXRhfX0kKTogTWEgdHLhuq1uIGhp4buHcCBwaMawxqFuZyBzYWkgY+G7p2EgdmVjdMahIMaw4bubYyBsxrDhu6NuZyAkXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19JCDEkcaw4bujYyBjaG8gYuG7n2kgY8O0bmcgdGjhu6ljIG1hIHRy4bqtbjogDQokJFx0ZXh0e3Zhcn1bXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19XSA9IChcbWF0aGJme1h9XlQgXG1hdGhiZntXWH0pXnstMX1cc2lnbWFeMiQkLg0KQ8OhYyBwaOG6p24gdOG7rSB0csOqbiDEkcaw4budbmcgY2jDqW8gY2jDrW5oIGPhu6dhIG1hIHRy4bqtbiBuw6B5IGzDoCBwaMawxqFuZyBzYWkgY+G7p2EgdOG7q25nIMaw4bubYyBsxrDhu6NuZyBo4buHIHPhu5EgJFxoYXR7XGJldGF9X2okLg0KDQogIFNhaSBz4buRIENodeG6qW4gY+G7p2EgSOG7hyBz4buRICgkXHRleHR7c2V9KFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fV9qKSQpOiBTYWkgc+G7kSBjaHXhuqluIGPhu6dhIHThu6tuZyBo4buHIHPhu5EgJFxoYXR7XGJldGF9X2okIGzDoCBjxINuIGLhuq1jIGhhaSBj4bunYSBwaOG6p24gdOG7rSB0aOG7qSAkaiQgdHLDqm4gxJHGsOG7nW5nIGNow6lvIGNow61uaCBj4bunYSAkXHRleHR7dmFyfVtcaGF0e1xib2xkc3ltYm9se1xiZXRhfX1dJCwgc2F1IGtoaSB0aGF5IHRo4bq/ICRcc2lnbWFeMiQgYuG6sW5nIMaw4bubYyBsxrDhu6NuZyAkc14yJC4NCg0KICBQaMawxqFuZyBzYWkgY+G7p2EgR2nDoSB0cuG7iyBQaMO5IGjhu6NwICgkXGhhdHtcbXV9X2ckKTogxJDhu5FpIHbhu5tpIG3hu5l0IHThuq1wIGjhu6NwIGdpw6EgdHLhu4sgYmnhur9uIGdp4bqjaSB0aMOtY2ggbeG7m2kgxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBkxrDhu5tpIGThuqFuZyB2ZWN0xqEgaMOgbmcgJFxtYXRoYmZ7eH1fZyQsIGdpw6EgdHLhu4sgcGjDuSBo4bujcCAoZOG7sSDEkW/DoW4pIGzDoDogDQokJFxoYXR7XG11fV9nID0gXG1hdGhiZnt4fV9nXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19JCQuDQoNClBoxrDGoW5nIHNhaSBj4bunYSBnacOhIHRy4buLIHBow7kgaOG7o3AgbsOgeSBsw6A6DQokJFx0ZXh0e3Zhcn1bXGhhdHtcbXV9X2ddID0gXG1hdGhiZnt4fV9nKFxtYXRoYmZ7WH1eVCBcbWF0aGJme1dYfSleey0xfVxtYXRoYmZ7eH1fZ15UIFxzaWdtYV4yJCQuDQoNCiAgU2FpIHPhu5EgQ2h14bqpbiBj4bunYSBHacOhIHRy4buLIFBow7kgaOG7o3AgKCRcdGV4dHtzZX0oXGhhdHtcbXV9X2cpJCk6IFNhaSBz4buRIGNodeG6qW4gY+G7p2EgJFxoYXR7XG11fV9nJCBsw6AgY8SDbiBi4bqtYyBoYWkgY+G7p2EgcGjGsMahbmcgc2FpIG7DoHksIHRoYXkgJFxzaWdtYV4yJCBi4bqxbmcgJHNeMiQuDQoNCiAgKlbDrSBk4bulIDIuMTM6Kg0KICANCiAgTWluaCBo4buNYSBjw6FjaCB0w61uaCBnacOhIHRy4buLIGThu7EgxJFvw6FuIHbDoCBzYWkgc+G7kSBjaHXhuqluIGPhu6dhIGdpw6EgdHLhu4sgZOG7sSDEkW/DoW4gxJHDsyBjaG8gbeG7mXQgY8OhIG5ow6JuIGPhu6UgdGjhu4MgdOG7qyBk4buvIGxp4buHdSBsdW5nY2FwLiBNw6MgUiBz4butIGThu6VuZyBjw6FjIHBow6lwIHRvw6FuIG1hIHRy4bqtbiDEkeG7gyB0w61uaCAkXG1hdGhiZnt4fV9nXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19JCB2w6Agw6FwIGThu6VuZyBjw7RuZyB0aOG7qWMgcGjGsMahbmcgc2FpIGPhu6dhIGdpw6EgdHLhu4sgcGjDuSBo4bujcCwgdGhheSAkc14yJCBjaG8gJFxzaWdtYV4yJCwgc2F1IMSRw7MgbOG6pXkgY8SDbiBi4bqtYyBoYWkgxJHhu4MgY8OzIHNhaSBz4buRIGNodeG6qW4uIFbDrSBk4bulIG7DoHkgY2hvIHRo4bqleSBjw6FjaCBjw6FjIGPDtG5nIHRo4bupYyBtYSB0cuG6rW4gxJHGsOG7o2MgZMO5bmcgxJHhu4MgdMOtbmggdG/DoW4gxJHhu5kgYuG6pXQgxJHhu4tuaCBj4bunYSBjw6FjIGThu7EgxJFvw6FuLg0KIA0KIyMjICoqMi42IMav4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggYuG6sW5nIHBo4bqnbiBt4buBbSBSKioNCg0KIyMjIyAqKkjDoG0gbG0oKSDEkeG7gyBLaOG7m3AgTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oKioNCg0KICBUcm9uZyBSLCBow6BtIGNow61uaCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBraOG7m3AgKGZpdCkgY8OhYyBtw7QgaMOsbmggdHV54bq/biB0w61uaCAoYmFvIGfhu5NtIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oKSBsw6AgbG0oKS4gSMOgbSBuw6B5IHjhu60gbMO9IGPhuqMgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHGoW4gZ2nhuqNuICht4buZdCBiaeG6v24gZ2nhuqNpIHRow61jaCkgdsOgIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRYSBiaeG6v24gKG5oaeG7gXUgYmnhur9uIGdp4bqjaSB0aMOtY2gpLg0KICANCiAgQ+G6pXUgdHLDumMgY8ahIGLhuqNuIGPhu6dhIGjDoG0gbG0oKSBz4butIGThu6VuZyBjw7ogcGjDoXAgZm9ybXVsYSDEkeG7gyBtw7QgdOG6oyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggKHbDrSBk4bulOiBCaWVuUGhhbkhvaSB+IEJpZW5HaWFpVGhpY2gxICsgQmllbkdpYWlUaGljaDIpLg0KDQojIyMjICoqS2jhu5twIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCBDw7MgVHLhu41uZyBz4buRKioNCg0KICBNw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY8OzIHRo4buDIGJhbyBn4buTbSB0cuG7jW5nIHPhu5EgxJHDoyBiaeG6v3QgJHdfaSQuIEjDoG0gbG0oKSBo4buXIHRy4bujIMSRaeG7gXUgbsOgeSB0aMO0bmcgcXVhIMSR4buRaSBz4buRIHdlaWdodHMuDQoNCiAgKlbDrSBk4bulOiAqDQogIA0KICBUw6BpIGxp4buHdSBtaW5oIGjhu41hIHZp4buHYyBraOG7m3AgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGPDsyB0cuG7jW5nIHPhu5EgY2hvIGThu68gbGnhu4d1IGdlc3RhdGlvbiwgdHJvbmcgxJHDsyBXZWlnaHQgbMOgIGJp4bq/biBwaOG6o24gaOG7k2ksIEFnZSBsw6AgYmnhur9uIGdp4bqjaSB0aMOtY2gsIHbDoCBCaXJ0aHMgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSB0cuG7jW5nIHPhu5EuIMSQb+G6oW4gbcOjIFIgbG0oZm9ybXVsYSA9IFdlaWdodCB+IEFnZSwgZGF0YSA9IGdlc3RhdGlvbiwgd2VpZ2h0cyA9IEJpcnRocykgdGjhu4MgaGnhu4duIGPDoWNoIGNo4buJIMSR4buLbmggdHLhu41uZyBz4buRIHRyb25nIGjDoG0gbG0oKS4gS+G6v3QgcXXhuqMgdOG7qyBzdW1tYXJ5KCkgY2hvIHRo4bqleSBjw6FjIMaw4bubYyBsxrDhu6NuZyBo4buHIHPhu5EgdsOgIHRow7RuZyB0aW4gdGjhu5FuZyBrw6ogbGnDqm4gcXVhbiDEkcaw4bujYyB0w61uaCB0b8OhbiBk4buxYSB0csOqbiB0cuG7jW5nIHPhu5EgbsOgeS4NCg0KIyMjIyAqKkto4bubcCBNw7QgaMOsbmggSOG7k2kgcXV5IFR1eeG6v24gdMOtbmggxJBhIGJp4bq/bioqDQoNCiAgxJDhu4Mga2jhu5twIG3DtCBow6xuaCB24bubaSBuaGnhu4F1IGJp4bq/biBnaeG6o2kgdGjDrWNoLCBjw6FjIGJp4bq/biBuw6B5IMSRxrDhu6NjIGxp4buHdCBrw6ogdHJvbmcgcGjhuqduIGZvcm11bGEgY+G7p2EgaMOgbSBsbSgpIHbDoCDEkcaw4bujYyBu4buRaSB24bubaSBuaGF1IGLhurFuZyBk4bqldSArLg0KDQogICpWw60gZOG7pToqDQogIA0KICBNaW5oIGjhu41hIHZp4buHYyBraOG7m3AgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRYSBiaeG6v24gY2hvIGThu68gbGnhu4d1IGx1bmdjYXAsIG7GoWkgbG9nKEZFVikgbMOgIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIEFnZSwgSHQsIEdlbmRlciwgU21va2UgbMOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guIMSQb+G6oW4gbcOjIFIgbG0oIGxvZyhGRVYpIH4gQWdlICsgSHQgKyBHZW5kZXIgKyBTbW9rZSwgZGF0YSA9IGx1bmdjYXAgKSBjaG8gdGjhuqV5IGPDoWNoIMSRxrBhIG5oaeG7gXUgYmnhur9uIGdp4bqjaSB0aMOtY2ggdsOgbyBmb3JtdWxhLg0KDQojIyMjICoqVHJ1eSBj4bqtcCB2w6AgVMOzbSB04bqvdCBL4bq/dCBxdeG6oyoqDQoNCiAgSMOgbSBsbSgpIHRy4bqjIHbhu4EgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGNo4bupYSBr4bq/dCBxdeG6oyBj4bunYSBtw7QgaMOsbmggxJHDoyBraOG7m3AuDQoNCiAgSMOgbSBzdW1tYXJ5KCkgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgeGVtIHTDs20gdOG6r3QgY2hpIHRp4bq/dCB24buBIGvhur90IHF14bqjIG3DtCBow6xuaCwgYmFvIGfhu5NtIMaw4bubYyBsxrDhu6NuZyBjw6FjIGjhu4cgc+G7kSAoJFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSQpLCBzYWkgc+G7kSBjaHXhuqluIGPhu6dhIGNow7puZywgZ2nDoSB0cuG7iyB0LXN0YXRpc3RpYywgcC12YWx1ZSwgxrDhu5tjIGzGsOG7o25nIHBoxrDGoW5nIHNhaSBzYWkgc+G7kSAoJHNeMiQpLCBSLXNxdWFyZWQsIHYudi4uDQoNCiAgQ8OhYyB0aMOgbmggcGjhuqduIGPhu6UgdGjhu4MgY+G7p2Ega+G6v3QgcXXhuqMgbcO0IGjDrG5oICh2w60gZOG7pTogY8OhYyBo4buHIHPhu5EpIGPDsyB0aOG7gyDEkcaw4bujYyB0csOtY2ggeHXhuqV0IGLhurFuZyBjw6FjIGjDoG0ga2jDoWMgbmjGsCBjb2VmKCkuDQoNCiAgQ8OhYyBow6BtIMSR4buTIGjhu41hIG5oxrAgYWJsaW5lKCkgY8OzIHRo4buDIHPhu60gZOG7pW5nIGvhur90IHF14bqjIHThu6sgbG0oKSAodsOtIGThu6U6IGjhu4cgc+G7kSBjaOG6t24gdsOgIGjhu4cgc+G7kSBnw7NjKSDEkeG7gyB24bq9IMSRxrDhu51uZyBo4buTaSBxdXkgbMOqbiBiaeG7g3UgxJHhu5MuDQogDQojIyAqKkNIxq/GoE5HIDM6IEPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIOKAkyBDaOG6qW4gxJFvw6FuIHbDoCB4w6J5IGThu7FuZyBtw7QgaMOsbmgqKiANCg0KICAiTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oOiBDaOG6qW4gxJFvw6FuIHbDoCBYw6J5IGThu7FuZyBNw7QgaMOsbmgiLCB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyDEkcOhbmggZ2nDoSB2w6AgY+G6o2kgdGhp4buHbiB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHNhdSBraGkgY2jDum5nIMSRw6MgxJHGsOG7o2MgZml0dGVkLiBN4bulYyB0acOqdSBjaMOtbmggbMOgIHRyYW5nIGLhu4sgY2hvIG5nxrDhu51pIMSR4buNYyBjw6FjIGPDtG5nIGPhu6UgY2jhuqluIMSRb8OhbiDEkeG7gyBraeG7g20gdHJhIGPDoWMgZ2nhuqMgxJHhu4tuaCBj4bunYSBtw7QgaMOsbmggdHV54bq/biB0w61uaCB2w6AgdGjhuqNvIGx14bqtbiB24buBIGPDoWMgYmnhu4duIHBow6FwIGto4bqvYyBwaOG7pWMgY8OhYyB24bqlbiDEkeG7gSDEkcOjIMSRxrDhu6NjIHjDoWMgxJHhu4tuaC4gUXXDoSB0csOsbmgga2nhu4NtIHRyYSB2w6AgeMOhYyDEkeG7i25oIGPDoWMgdmkgcGjhuqFtIGdp4bqjIMSR4buLbmggbcO0IGjDrG5oIMSRxrDhu6NjIGfhu41pIGzDoCBwaMOibiB0w61jaCBjaOG6qW4gxJFvw6FuLg0KDQojIyMgKipO4buZaSBkdW5nIGPhu5F0IGzDtWkgY+G7p2EgY2jGsMahbmcgYmFvIGfhu5NtOioqDQogIA0KICBYZW0geMOpdCBjw6FjIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHThu6sgZ8OzYyDEkeG7mSB0aOG7sWMgdOG6vywgYmFvIGfhu5NtIHTDrW5oIHR1eeG6v24gdMOtbmggY+G7p2EgYuG7mSBk4buxIGLDoW8gKGxpbmVhciBwcmVkaWN0b3IpLCBwaMawxqFuZyBzYWkgaOG6sW5nIHPhu5EgKGNvbnN0YW50IHZhcmlhbmNlKSwgdMOtbmggxJHhu5ljIGzhuq1wIChpbmRlcGVuZGVuY2UpLCB2w6AgdMOtbmggY2h14bqpbiAobm9ybWFsaXR5KS4gDQogIA0KICBDw6FjIGPDtG5nIGPhu6UgY2jDrW5oIGNobyBwaMOibiB0w61jaCBjaOG6qW4gxJFvw6FuIGzDoCBwaOG6p24gZMawIChyZXNpZHVhbHMpIHbDoCDEkcOybiBi4bqpeSAobGV2ZXJhZ2UpLiBDaMawxqFuZyBnaeG7m2kgdGhp4buHdSBjw6FjIGxv4bqhaSBiaeG7g3UgxJHhu5MgcGjhuqduIGTGsCDEkeG7gyBraeG7g20gdHJhIGdp4bqjIMSR4buLbmgsIG5oxrAgYmnhu4N1IMSR4buTIHBo4bqnbiBkxrAgc28gduG7m2kgYmnhur9uIGdp4bqjaSB0aMOtY2ggKGxpbmVhcml0eSksIGJp4buDdSDEkeG7kyBwaOG6p24gZMawIHNvIHbhu5tpIGdpw6EgdHLhu4sgZml0dGVkIChjb25zdGFudCB2YXJpYW5jZSksIHbDoCBiaeG7g3UgxJHhu5MgUS1RIMSR4buDIGtp4buDbSB0cmEgdMOtbmggY2h14bqpbi4gDQogIA0KICBDw6FjIGvhu7kgdGh14bqtdCBuaOG6rW4gZOG6oW5nIGdpw6EgdHLhu4sgbmdv4bqhaSBsYWkgKG91dGxpZXJzKSB2w6AgcXVhbiBzw6F0IGPDsyDhuqNuaCBoxrDhu59uZyAoaW5mbHVlbnRpYWwgb2JzZXJ2YXRpb25zKSBjxaluZyDEkcaw4bujYyB0csOsbmggYsOgeSwgc+G7rSBk4bulbmcgcGjhuqduIGTGsCBzdHVkZW50IGjDs2EgdsOgIGtob+G6o25nIGPDoWNoIENvb2suIA0KICANCiAgQ8OhYyBiaeG7h24gcGjDoXAga2jhuq9jIHBo4bulYyBiYW8gZ+G7k20gYmnhur9uIMSR4buVaSBiaeG6v24gcGjhuqNuIGjhu5NpIChuaMawIGJp4bq/biDEkeG7lWkgQm94LUNveCksIGJp4bq/biDEkeG7lWkgYmnhur9uIGdp4bqjaSB0aMOtY2gsIHPhu60gZOG7pW5nIMSRYSB0aOG7qWMgaG/hurdjIHNwbGluZSBo4buTaSBxdXkgxJHhu4MgbcO0IGjDrG5oIGjDs2EgbeG7kWkgcXVhbiBo4buHIHBoaSB0dXnhur9uIHTDrW5oLCB2w6AgeOG7rSBsw70gduG6pW4gxJHhu4EgxJHhu5kgxJFhIGPhu5luZyB0dXnhur9uIChjb2xsaW5lYXJpdHkpLiANCiAgDQogIEThu68gbGnhu4d1IHbhu4EgaGVhdCBjYXBhY2l0eSDEkcaw4bujYyBz4butIGThu6VuZyBsw6BtIHbDrSBk4bulIMSR4buDIG1pbmggaOG7jWEgdmnhu4djIHPhu60gZOG7pW5nIHNwbGluZSBo4buTaSBxdXkgdOG7sSBuaGnDqm4gbmjhurFtIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyBwaGkgdHV54bq/biB0w61uaCBnaeG7r2Egbmhp4buHdCBkdW5nIHbDoCBuaGnhu4d0IMSR4buZLg0KDQojIyMgKipWYWkgdHLDsioqDQogIA0KICBDaMawxqFuZyAzIGzDoCBwaOG6p24gdGnhur9wIHRoZW8gdOG7sSBuaGnDqm4gY+G7p2EgQ2jGsMahbmcgMiwgbsahaSBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCDEkcaw4bujYyDEkeG7i25oIG5naMSpYSB2w6AgZml0dGVkLiBOw7MgZ2nDunAgeMOhYyDEkeG7i25oIGPDoWMgxJFp4buDbSB54bq/dSBj4bunYSBtw7QgaMOsbmggdHV54bq/biB0w61uaCB0acOqdSBjaHXhuqluLCDEkeG6t2MgYmnhu4d0IGzDoCB2aSBwaOG6oW0gZ2nhuqMgxJHhu4tuaCBwaMawxqFuZyBzYWkgaOG6sW5nIHPhu5EsIMSRaeG7gXUgbsOgeSDEkcaw4bujYyBDaMawxqFuZyA0IGNo4buJIHJhIGzDoCBraMO0bmcgxJHDum5nIHbhu5tpIG3hu41pIGxv4bqhaSBk4buvIGxp4buHdS4gQ2jGsMahbmcgMyBkbyDEkcOzIGzDoCBj4bqndSBu4buRaSBxdWFuIHRy4buNbmcgZOG6q24gxJHhur9uIHZp4buHYyBnaeG7m2kgdGhp4buHdSB2w6Agc+G7rSBk4bulbmcgTcO0IGjDrG5oIFR1eeG6v24gdMOtbmggVOG7lW5nIHF1w6F0IChHTE1zKSB0cm9uZyBDaMawxqFuZyA1LCB2w6wgR0xNcyDEkcaw4bujYyB0aGnhur90IGvhur8gxJHhu4MgeOG7rSBsw70gY8OhYyBj4bqldSB0csO6YyBk4buvIGxp4buHdSB2w6AgcGjGsMahbmcgc2FpIHBo4bupYyB04bqhcCBoxqFuIG3DoCBtw7QgaMOsbmggdHV54bq/biB0w61uaCBraMO0bmcgZ2nhuqNpIHF1eeG6v3QgxJHGsOG7o2MuIEPDoWMga2jDoWkgbmnhu4dtIHbDoCBjw7RuZyBj4bulIGNo4bqpbiDEkW/DoW4gdOG7qyBDaMawxqFuZyAzIGPFqW5nIMSRxrDhu6NjIG3hu58gcuG7mW5nIHbDoCDDoXAgZOG7pW5nIGNobyBHTE1zIHRyb25nIENoxrDGoW5nIDgNCiANCiMjICoqQ2jGsMahbmcgNDogTmdvw6BpIE3DtCBow6xuaCBI4buTaSBxdXkgVHV54bq/biB0w61uaCDigJMgUGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkgKE1MRSkqKg0KDQogICJOZ2/DoGkgTcO0IGjDrG5oIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oOiBQaMawxqFuZyBwaMOhcCDGr+G7m2MgbMaw4bujbmcgSOG7o3AgbMO9IEPhu7FjIMSR4bqhaSIsIHThuq1wIHRydW5nIHbDoG8gdmnhu4djIHbGsOG7o3QgcmEgbmdvw6BpIGtodcO0biBraOG7lSBj4bunYSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY2h14bqpbiwgxJHhurdjIGJp4buHdCBraGkgY8OhYyBnaeG6oyDEkeG7i25oIGPhu6dhIG7DsyBraMO0bmcgY8OybiBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1LiANCiAgDQogIE3hu6VjIHRpw6p1IGNow61uaCBj4bunYSBjaMawxqFuZyBsw6AgZ2nhu5tpIHRoaeG7h3UgdsOgIGdp4bqjaSB0aMOtY2ggUGjGsMahbmcgcGjDoXAgxq/hu5tjIGzGsOG7o25nIEjhu6NwIGzDvSBD4buxYyDEkeG6oWkgKE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uIC0gTUxFKSBuaMawIG3hu5l0IGPDoWNoIHRp4bq/cCBj4bqtbiB04buVbmcgcXXDoXQgdsOgIHBow7kgaOG7o3AgxJHhu4MgxrDhu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBjaG8gY8OhYyBtw7QgaMOsbmggdGjhu5FuZyBrw6ogbGluaCBob+G6oXQgaMahbiwgxJHhurdjIGJp4buHdCBsw6Agbmjhu69uZyBtw7QgaMOsbmggc+G6vSBk4bqrbiDEkeG6v24gY8OhYyBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdlbmVyYWxpemVkIExpbmVhciBNb2RlbHMgLSBHTE1zKS4NCiAgDQojIyMgKipO4buZaSBkdW5nIGNow61uaCBj4bunYSBjaMawxqFuZzoqKg0KICANCiAgQuG6r3QgxJHhuqd1IGLhurFuZyB2aeG7h2MgY2jhu4kgcmEgc+G7sSBo4bqhbiBjaOG6vyBj4bunYSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgga2hpIGdp4bqjIMSR4buLbmggcGjGsMahbmcgc2FpIGjhurFuZyBz4buRIHbDoC9ob+G6t2MgcGjDom4gcGjhu5FpIGNodeG6qW4gY2hvIGJp4bq/biBwaOG6o24gaOG7k2kgYuG7iyB2aSBwaOG6oW0uIENoxrDGoW5nIHRo4bqjbyBsdeG6rW4gduG7gSBjw6FjIHTDrG5oIGh14buRbmcgZOG7ryBsaeG7h3UgcGjhu5UgYmnhur9uIG3DoCBtw7QgaMOsbmggdHV54bq/biB0w61uaCB0aOG6pXQgYuG6oWksIGJhbyBn4buTbSBk4buvIGxp4buHdSBuaOG7iyBwaMOibiBob+G6t2MgxJHhur9tIChuaMawIGvhur90IHF14bqjIHRow6BuaCBjw7RuZy90aOG6pXQgYuG6oWksIHPhu5EgbMaw4bujbmcgc+G7sSBraeG7h24pLCB2w6AgZOG7ryBsaeG7h3UgbGnDqm4gdOG7pWMgZMawxqFuZy4gxJDhu4MgeOG7rSBsw70gY8OhYyB0csaw4budbmcgaOG7o3AgbsOgeSwgY2jGsMahbmcgZ2nhu5tpIHRoaeG7h3Ugw50gdMaw4bufbmcgduG7gSDGr+G7m2MgbMaw4bujbmcgSOG7o3AgbMO9IChMaWtlbGlob29kIEVzdGltYXRpb24pLiBLaMOhaSBuaeG7h20gY+G7kXQgbMO1aSBsw6AgaMOgbSBo4bujcCBsw70gKGxpa2VsaWhvb2QgZnVuY3Rpb24pLCDEkW8gbMaw4budbmcgbeG7qWMgxJHhu5kga2jhuqMgdGhpIGPhu6dhIGPDoWMgZ2nDoSB0cuG7iyB0aGFtIHPhu5Ega2jDoWMgbmhhdSBk4buxYSB0csOqbiBk4buvIGxp4buHdSBxdWFuIHPDoXQuIA0KICANCiAgVmnhu4djIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgdGjDtG5nIHF1YSBNTEUgbMOgIHTDrG0gdOG6rXAgaOG7o3AgY8OhYyBnacOhIHRy4buLIHRoYW0gc+G7kSB04buRaSDEkWEgaMOzYSBow6BtIGjhu6NwIGzDvSAoaG/hurdjIHTGsMahbmcgxJHGsMahbmcsIGjDoG0gbG9nLWjhu6NwIGzDvSkuIENoxrDGoW5nIHRyw6xuaCBiw6B5IGNoaSB0aeG6v3QgY8OhY2ggZOG6q24geHXhuqV0IGPDoWMgcGjGsMahbmcgdHLDrG5oIMSRaeG7g20gKHNjb3JlIGVxdWF0aW9ucykgYuG6sW5nIGPDoWNoIGzhuqV5IMSR4bqhbyBow6BtIGjDoG0gbG9nLWjhu6NwIGzDvSB0aGVvIGPDoWMgdGhhbSBz4buRIHbDoCDEkeG6t3QgY2jDum5nIGLhurFuZyBraMO0bmcuIE1hIHRy4bqtbiDEkeG6oW8gaMOgbSBi4bqtYyBoYWkgY+G7p2EgaMOgbSBsb2ctaOG7o3AgbMO9IMSRxrDhu6NjIGfhu41pIGzDoCBUaMO0bmcgdGluIHF1YW4gc8OhdCAoT2JzZXJ2ZWQgSW5mb3JtYXRpb24pLCB2w6Aga+G7syB24buNbmcgY+G7p2EgbsOzIGzDoCBUaMO0bmcgdGluIGvhu7MgduG7jW5nIChFeHBlY3RlZCBJbmZvcm1hdGlvbik7IG1hIHRy4bqtbiBuw6B5IMSRw7NuZyB2YWkgdHLDsiBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIHTDrW5oIHRvw6FuIHBoxrDGoW5nIHNhaSB2w6Agc2FpIHPhu5EgY2h14bqpbiBj4bunYSBjw6FjIMaw4bubYyBsxrDhu6NuZyBNTEUuIA0KICANCiAgQ2jGsMahbmcgY8WpbmcgdHLDrG5oIGLDoHkgY8OhYyBjw7RuZyB0aOG7qWMgbWEgdHLhuq1uIGNobyBNTEUuIEPDoWMgcGjGsMahbmcgcGjDoXAgc3V5IGx14bqtbiB0aOG7kW5nIGvDqiBk4buxYSB0csOqbiBNTEUgY8WpbmcgxJHGsOG7o2MgdHLDrG5oIGLDoHksIGJhbyBn4buTbSBjw6FjIGvhur90IHF14bqjIHRp4buHbSBj4bqtbiBt4bqrdSBs4bubbiAobGFyZ2Ugc2FtcGxlIGFzeW1wdG90aWMgcmVzdWx0cykgY2hvIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IChuaMawIGtp4buDbSDEkeG7i25oIFdhbGQsIGtp4buDbSDEkeG7i25oIFThu7cgc+G7kSBI4bujcCBsw70gKExpa2VsaWhvb2QgUmF0aW8gVGVzdCksIHbDoCBraeG7g20gxJHhu4tuaCDEkGnhu4NtIChTY29yZSBUZXN0KSkgdsOgIHjDonkgZOG7sW5nIGtob+G6o25nIHRpbiBj4bqteS4gDQogIA0KICBDw6FjIHBoxrDGoW5nIHBow6FwIHNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oIGtow7RuZyBs4buTbmcgbmhhdSwgbmjGsCBBSUMgdsOgIEJJQywgY8WpbmcgxJHGsOG7o2MgxJHhu4EgY+G6rXAuIA0KICANCiAgROG7ryBsaeG7h3UgduG7gSBsxrDhu6NuZyBtxrBhIHThuqFpIFF1aWxwaWUgKFF1aWxwaWUgcmFpbmZhbGwgZGF0YSkgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSB2w60gZOG7pSBtaW5oIGjhu41hIMSR4buDIGdp4bubaSB0aGnhu4d1IGjDoG0gaOG7o3AgbMO9IHbDoCBsb2ctaOG7o3AgbMO9IGNobyB2aeG7h2MgxrDhu5tjIGzGsOG7o25nIG3hu5l0IHRoYW0gc+G7kSBkdXkgbmjhuqV0ICh0cnVuZyBiw6xuaCkgdsOgIGPDoWNoIHTDrW5oIHNhaSBz4buRIGNodeG6qW4gdOG7qyB0aMO0bmcgdGluLg0KICANCiMjICoqVuG7gSB2YWkgdHLDsioqDQogIA0KICBDaMawxqFuZyA0IGzDoCBj4bqndSBu4buRaSBsw70gdGh1eeG6v3QgcXVhbiB0cuG7jW5nIGdp4buvYSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY2h14bqpbiB2w6AgY8OhYyBtw7QgaMOsbmggdOG7lW5nIHF1w6F0IGjGoW4uIE7DsyBk4buxYSB0csOqbiBu4buBbiB04bqjbmcgY+G7p2EgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHGsOG7o2MgZ2nhu5tpIHRoaeG7h3UgdHJvbmcgQ2jGsMahbmcgMiB2w6AgY8OhYyB24bqlbiDEkeG7gSBjaOG6qW4gxJFvw6FuIMSRxrDhu6NjIHRo4bqjbyBsdeG6rW4gdHJvbmcgQ2jGsMahbmcgMy4gVHJvbmcga2hpIENoxrDGoW5nIDMgdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2MgY2jhuqluIMSRb8OhbiB2w6AgY+G7kSBn4bqvbmcga2jhuq9jIHBo4bulYyB24bqlbiDEkeG7gSB0cm9uZyBraHXDtG4ga2jhu5UgbcO0IGjDrG5oIHR1eeG6v24gdMOtbmggKHRoxrDhu51uZyBi4bqxbmcgYmnhur9uIMSR4buVaSksIENoxrDGoW5nIDQgZ2nhuqNpIHRow61jaCBsw70gZG8gdOG6oWkgc2FvIGPhuqduIGPDsyBt4buZdCBjw6FjaCB0aeG6v3AgY+G6rW4gbcO0IGjDrG5oIGjDs2Ega2jDoWMgKE1MRSkga2hpIGPDoWMgZ2nhuqMgxJHhu4tuaCBjxqEgYuG6o24gduG7gSBwaMOibiBwaOG7kWkgdsOgIHBoxrDGoW5nIHNhaSBraMO0bmcgxJHGsOG7o2MgdGjhu49hIG3Do24uIENoxrDGoW5nIDQgY3VuZyBj4bqlcCBjxqEgc+G7nyBsw70gdGh1eeG6v3QgduG7gSBNTEUsIHBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyBj4bqnbiB0aGnhur90IMSR4buDIHjDonkgZOG7sW5nIHbDoCBmaXR0ZWQgY8OhYyBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTXMpLiBEbyDEkcOzLCBuw7MgY2h14bqpbiBi4buLIHRy4buxYyB0aeG6v3AgY2hvIENoxrDGoW5nIDUsIG7GoWkgY+G6pXUgdHLDumMgY+G7p2EgR0xNcyDEkcaw4bujYyDEkeG7i25oIG5naMSpYSwgdsOgIENoxrDGoW5nIDYsIG7GoWkgcGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIE1MRSBjaG8gR0xNcyDEkcaw4bujYyB0csOsbmggYsOgeSBjaGkgdGnhur90LiBDaMawxqFuZyA0IGPFqW5nIMSR4bq3dCBu4buBbiBtw7NuZyBjaG8gY8OhYyBwaMawxqFuZyBwaMOhcCBzdXkgbHXhuq1uIGNobyBHTE1zIMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIENoxrDGoW5nIDcgdsOgIGPDoWMga+G7uSB0aHXhuq10IGNo4bqpbiDEkW/DoW4gR0xNcyB0cm9uZyBDaMawxqFuZyA4Lg0KIA0KIyMgKipDSMavxqBORyA1OiBNw5QgSMOMTkggVFVZ4bq+TiBUw41OSCBU4buUTkcgUVXDgVQ6IEPhuqRVIFRSw5pDKiogDQogDQogIENoxrDGoW5nIDUsICJNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQ6IEPhuqV1IHRyw7pjIiwgxJHDoW5oIGThuqV1IHPhu7EgY2h1eeG7g24gZOG7i2NoIHRy4buNbmcgdMOibSB04burIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGNodeG6qW4gxJHDoyDEkcaw4bujYyB0aOG6o28gbHXhuq1uIGNoaSB0aeG6v3QgdHJvbmcgQ2jGsMahbmcgMiB2w6AgQ2jGsMahbmcgMy4gQ2jGsMahbmcgbsOgeSBuaOG6rW4gxJHhu4tuaCBy4bqxbmcgY8OhYyBnaeG6oyDEkeG7i25oIGPhu6dhIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oICjEkeG6t2MgYmnhu4d0IGzDoCBnaeG6oyDEkeG7i25oIHbhu4EgcGjGsMahbmcgc2FpIGjhurFuZyBz4buRKSB0aMaw4budbmcga2jDtG5nIMSRw7puZyB24bubaSBuaGnhu4F1IGxv4bqhaSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vywgbmjGsCDEkcOjIMSRxrDhu6NjIGNo4buJIHJhIHRyb25nIENoxrDGoW5nIDQuIERvIMSRw7MsIG3hu6VjIHRpw6p1IGNow61uaCBj4bunYSBDaMawxqFuZyA1IGzDoCBnaeG7m2kgdGhp4buHdSB2w6AgxJHhu4tuaCBuZ2jEqWEgY+G6pXUgdHLDumMgY8ahIGLhuqNuIGPhu6dhIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVsIC0gR0xNKS4gQ2jGsMahbmcgbsOgeSDEkeG6t3QgbuG7gW4gdOG6o25nIGzDvSB0aHV54bq/dCBjaG8gdmnhu4djIGhp4buDdSBjw6FjaCBHTE1zIGPDsyB0aOG7gyBtw7QgaMOsbmggaMOzYSBk4buvIGxp4buHdSB24bubaSBjw6FjIMSR4bq3YyDEkWnhu4NtIHBow6JuIHBo4buRaSB2w6AgY+G6pXUgdHLDumMgcGjGsMahbmcgc2FpIMSRYSBk4bqhbmcgaMahbiBzbyB24bubaSBtw7QgaMOsbmggdHV54bq/biB0w61uaCB0cnV54buBbiB0aOG7kW5nLg0KDQojIyMgKio1LjEgTuG7mWkgZHVuZyBjaMOtbmgqKg0KDQogIENoxrDGoW5nIDUgdHLDrG5oIGLDoHkgY+G6pXUgdHLDumMgY+G7p2EgR0xNcyB0aMO0bmcgcXVhIHZp4buHYyBwaMOibiBjaGlhIGNow7puZyB0aMOgbmggaGFpIHRow6BuaCBwaOG6p24gY2jDrW5oLCB0xrDGoW5nIHThu7EgbmjGsCBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgsIG5oxrBuZyB24bubaSBjw6FjIMSR4buLbmggbmdoxKlhIMSRxrDhu6NjIHThu5VuZyBxdcOhdCBow7NhLiBIYWkgdGjDoG5oIHBo4bqnbiBuw6B5IMSRxrDhu6NjIGzhu7FhIGNo4buNbiBt4buZdCBjw6FjaCByacOqbmcgYmnhu4d0Lg0KDQojIyMjICoqVGjDoG5oIHBo4bqnbiBOZ+G6q3Ugbmhpw6puIChSYW5kb20gQ29tcG9uZW50KToqKg0KICANCiAgVGjDoG5oIHBo4bqnbiBuw6B5IG3DtCB04bqjIGPDoWNoIGJp4bq/biBwaOG6o24gaOG7k2kgKHJlc3BvbnNlcykgxJHGsOG7o2MgcGjDom4gcGjhu5FpLiBLaMOhYyB24bubaSBtw7QgaMOsbmggdHV54bq/biB0w61uaCBjaHXhuqluIGNo4buJIGdp4bqjIMSR4buLbmggcGjDom4gcGjhu5FpIGNodeG6qW4gduG7m2kgcGjGsMahbmcgc2FpIGjhurFuZyBz4buRLCBHTE1zIGdp4bqjIMSR4buLbmggcuG6sW5nIGJp4bq/biBwaOG6o24gaOG7k2kgxJHhur9uIHThu6sgbeG7mXQgcGjDom4gcGjhu5FpIHRodeG7mWMgSOG7jSBNw7QgaMOsbmggUGjDom4gdMOhbiBIw6BtIG3FqSAoRXhwb25lbnRpYWwgRGlzcGVyc2lvbiBNb2RlbCAtIEVETSkuIENoxrDGoW5nIGdp4bubaSB0aGnhu4d1IMSR4buLbmggbmdoxKlhIHThu5VuZyBxdcOhdCBj4bunYSBFRE0gdsOgIG7DqnUgYuG6rXQgY8OhYyDEkeG6t2MgdMOtbmggcXVhbiB0cuG7jW5nIG5oxrAgaMOgbSB0w61jaCBsxal5IChjdW11bGFudCBmdW5jdGlvbikgzroozrgpLCB0aGFtIHPhu5EgY2jDrW5oIHThuq9jIChjYW5vbmljYWwgcGFyYW1ldGVyKSDOuCwgdGhhbSBz4buRIHBow6JuIHTDoW4gKGRpc3BlcnNpb24gcGFyYW1ldGVyKSDPhiwgdsOgIMSR4bq3YyBiaeG7h3QgbMOgIGjDoG0gcGjGsMahbmcgc2FpICh2YXJpYW5jZSBmdW5jdGlvbikgVijOvCksIG3DtCB04bqjIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgcGjGsMahbmcgc2FpIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2EgbsOzLiBDw6FjIHBow6JuIHBo4buRaSBwaOG7lSBiaeG6v24gdGh14buZYyBo4buNIEVETSB2w6AgxJHGsOG7o2Mgc+G7rSBk4bulbmcgcuG7mW5nIHLDo2kgdHJvbmcgR0xNcyBiYW8gZ+G7k20gcGjDom4gcGjhu5FpIENodeG6qW4gKE5vcm1hbCksIFBvaXNzb24sIE5o4buLIHRo4bupYyAoQmlub21pYWwpLCBHYW1tYSwgdsOgIE5o4buLIHRo4bupYyDDom0gKE5lZ2F0aXZlIEJpbm9taWFsKS4gQ2jGsMahbmcgY8WpbmcgdHLDrG5oIGLDoHkgZOG6oW5nIG3DtCBow6xuaCBwaMOibiB0w6FuIGPhu6dhIEVETS4NCg0KIyMjIyAqKlRow6BuaCBwaOG6p24gSOG7hyB0aOG7kW5nIChTeXN0ZW1hdGljIENvbXBvbmVudCk6KioNCg0KICBUaMOgbmggcGjhuqduIG7DoHkgbcO0IHThuqMgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guIEdp4buRbmcgbmjGsCBo4buTaSBxdXkgdHV54bq/biB0w61uaCwgbsOzIGThu7FhIHRyw6puIG3hu5l0IGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggKGxpbmVhciBwcmVkaWN0b3IpLCBsw6AgbeG7mXQgdOG7lSBo4bujcCB0dXnhur9uIHTDrW5oIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2g6ICTOt2kgPSDOsl8wICsgzrJfMSB4X3sxaX0gKyDCtyDCtyDCtyArIM6yX3B4X3twaX0kLg0KDQogIMSQaeG7g20ga2jDoWMgYmnhu4d0IGPhu5F0IGzDtWkgY+G7p2EgR0xNcyBu4bqxbSDhu58gY8OhY2ggaGFpIHRow6BuaCBwaOG6p24gbsOgeSDEkcaw4bujYyBsacOqbiBr4bq/dC4gVGhheSB2w6wgZ2nhuqMgxJHhu4tuaCB0cuG7sWMgdGnhur9wICRFW3lpXSA9IM68aSA9IM63aSQgbmjGsCB0cm9uZyBtw7QgaMOsbmggdHV54bq/biB0w61uaCBjaHXhuqluLCBHTE1zIHPhu60gZOG7pW5nIG3hu5l0IEjDoG0gTGnDqm4ga+G6v3QgKExpbmsgRnVuY3Rpb24pLCBrw70gaGnhu4d1IGzDoCAkZyQuIEjDoG0gJGckIG7DoHkgbGnDqm4ga+G6v3QgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpICQozrxpKSQgduG7m2kgYuG7mSBk4buxIGLDoW8gdHV54bq/biB0w61uaCAkKM63aSkkIHRoZW8gbeG7kWkgcXVhbiBo4buHOiAkzrdpID0gZyjOvGkpJC4gVmnhu4djIGzhu7FhIGNo4buNbiBow6BtIGxpw6puIGvhur90IHBow7kgaOG7o3AgY2hvIHBow6lwIEdMTXMgbcO0IGjDrG5oIGjDs2EgY8OhYyBt4buRaSBxdWFuIGjhu4cgcGhpIHR1eeG6v24gdMOtbmggZ2nhu69hIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggdsOgIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmgsIMSR4buTbmcgdGjhu51pIMSR4bqjbSBi4bqjbyBy4bqxbmcgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBk4buxIMSRb8OhbiBu4bqxbSB0cm9uZyBwaOG6oW0gdmkgY2hvIHBow6lwIGPhu6dhIHBow6JuIHBo4buRaSDEkcOjIGNo4buNbiAodsOtIGThu6U6IGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2EgYmnhur9uIMSR4bq/bSBwaOG6o2kga2jDtG5nIMOibSkuDQogIA0KICBDaMawxqFuZyBjxaluZyBnaeG7m2kgdGhp4buHdSBraMOhaSBuaeG7h20gxJHhu5kgbOG7h2NoIChkZXZpYW5jZSksIG3hu5l0IHRoxrDhu5tjIMSRbyB24buBIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oLiDEkOG7mSBs4buHY2ggdHJvbmcgR0xNcyDEkcOzbmcgdmFpIHRyw7IgdMawxqFuZyB04buxIG5oxrAgdOG7lW5nIGLDrG5oIHBoxrDGoW5nIHBo4bqnbiBkxrAgKHN1bSBvZiBzcXVhcmVzIG9mIHJlc2lkdWFscykgdHJvbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgsIGN1bmcgY+G6pXAgY8ahIHPhu58gxJHhu4MgxJHDoW5oIGdpw6EgdsOgIHNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oIEdMTS4gS2jDoWkgbmnhu4dtIMSR4buZIGzhu4djaCDEkcahbiB24buLICh1bml0IGRldmlhbmNlKSBjxaluZyDEkcaw4bujYyB0csOsbmggYsOgeS4gQ3Xhu5FpIGPDuW5nLCBjaMawxqFuZyBzbyBzw6FuaCB2aeG7h2Mgc+G7rSBk4bulbmcgR0xNcyB24bubaSBr4bu5IHRodeG6rXQgYmnhur9uIMSR4buVaSBiaeG6v24gcGjhuqNuIGjhu5NpIHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oLg0KDQojIyMjICoqVsOtIGThu6UgbWluaCBo4buNYToqKg0KICANCiAgTeG6t2MgZMO5IGPDoWMgdsOtIGThu6UgZml0dGVkIG3DtCBow6xuaCBj4bulIHRo4buDIHRoxrDhu51uZyDEkcaw4bujYyB0csOsbmggYsOgeSBjaGkgdGnhur90IHRyb25nIGPDoWMgY2jGsMahbmcgc2F1IChuaMawIENoxrDGoW5nIDkgY2hvIGThu68gbGnhu4d1IHThu7cgbOG7hywgQ2jGsMahbmcgMTAgY2hvIGThu68gbGnhu4d1IMSR4bq/bSwgdi52LiksIGPhuqV1IHRyw7pjIEdMTSDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSB0cm9uZyBDaMawxqFuZyA1IGNobyBwaMOpcCBtw7QgaMOsbmggaMOzYSBuaGnhu4F1IGxv4bqhaSBk4buvIGxp4buHdSBraMO0bmcgcGjDuSBo4bujcCB24bubaSBtw7QgaMOsbmggdHV54bq/biB0w61uaC4gQ2jhurNuZyBo4bqhbiwgeGVtIHjDqXQgZOG7ryBsaeG7h3UgduG7gSBGRVYgKEZvcmNlZCBFeHBpcmF0b3J5IFZvbHVtZSkgxJHGsOG7o2MgxJHhu4EgY+G6rXAgdHJvbmcgY8OhYyBjaMawxqFuZyB0csaw4bubYy4gQ2jGsMahbmcgMyB0aOG6o28gbHXhuq1uIHbhu4Egdmnhu4djIGJp4bq/biDEkeG7lWkgbG9nKEZFVikgxJHhu4MgY+G7kSBn4bqvbmcgxJHDoXAg4bupbmcgZ2nhuqMgxJHhu4tuaCBwaMawxqFuZyBzYWkgaOG6sW5nIHPhu5EuIENoxrDGoW5nIDUgY3VuZyBj4bqlcCBjxqEgc+G7nyDEkeG7gyBoaeG7g3UgcuG6sW5nIG7hur91IEZFViBraMO0bmcgdHXDom4gdGhlbyBwaMOibiBwaOG7kWkgY2h14bqpbiB24bubaSBwaMawxqFuZyBzYWkgaOG6sW5nIHPhu5EsIHRoYXkgdsOsIGJp4bq/biDEkeG7lWkgZOG7ryBsaeG7h3UgdGhlbyBjw6FjaCB0aOG7pyBjw7RuZywgY2jDum5nIHRhIGPDsyB0aOG7gyBz4butIGThu6VuZyBj4bqldSB0csO6YyBHTE0gYuG6sW5nIGPDoWNoIGNo4buNbiBt4buZdCBwaMOibiBwaOG7kWkgdGh14buZYyBo4buNIEVETSBwaMO5IGjhu6NwIHbhu5tpIMSR4bq3YyDEkWnhu4NtIGPhu6dhIEZFViAodsOtIGThu6U6IG7hur91IEZFViBsw6AgZ2nDoSB0cuG7iyBsacOqbiB04bulYyBkxrDGoW5nIHbDoCBjw7MgcGjGsMahbmcgc2FpIHTEg25nIHRoZW8gdHJ1bmcgYsOsbmgsIHBow6JuIHBo4buRaSBHYW1tYSBob+G6t2MgVHdlZWRpZSBjw7MgdGjhu4MgcGjDuSBo4bujcCkuIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiBj4bunYSBHTE0gc+G6vSDEkcaw4bujYyB4w6FjIMSR4buLbmggYuG7n2kgcGjDom4gcGjhu5FpIG7DoHksIHbDoCBow6BtIGxpw6puIGvhur90IHPhur0gw6FuaCB44bqhIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggRkVWIChk4buxIMSRb8OhbikgdOG7m2kgYuG7mSBk4buxIGLDoW8gdHV54bq/biB0w61uaC4gxJBp4buBdSBuw6B5IG1pbmggaOG7jWEgY8OhY2ggY+G6pXUgdHLDumMgR0xNIGNobyBwaMOpcCBsaW5oIGhv4bqhdCB0cm9uZyB2aeG7h2MgbOG7sWEgY2jhu41uIHBow6JuIHBo4buRaSB2w6AgbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0cnVuZyBiw6xuaCB2w6AgYuG7mSBk4buxIGLDoW8gdHV54bq/biB0w61uaCwgdsaw4bujdCBxdWEgbmjhu69uZyBo4bqhbiBjaOG6vyBj4bunYSBtw7QgaMOsbmggdHV54bq/biB0w61uaCBuZ2F5IHThu6sgY+G6pXUgdHLDumMgYmFuIMSR4bqndS4NCg0KIyMjICoqNS4yIFZhaSB0csOyKioNCg0KICBDaMawxqFuZyA1IMSRw7NuZyB2YWkgdHLDsiBsw6AgY2jGsMahbmcgbuG7gW4gdOG6o25nIGPhu5F0IGzDtWkgdHJvbmcgdMOgaSBsaeG7h3UgduG7gSBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQuIE7DsyBk4buxYSB0csOqbiBz4buxIGdp4bubaSB0aGnhu4d1IHbhu4EgbcO0IGjDrG5oIHR1eeG6v24gdMOtbmggKENoxrDGoW5nIDIpIHbDoCBuaOG7r25nIGjhuqFuIGNo4bq/IGPhu6dhIG7DsyDEkcaw4bujYyB4w6FjIMSR4buLbmggcXVhIGNo4bqpbiDEkW/DoW4gKENoxrDGoW5nIDMpIHbDoCB0aOG6o28gbHXhuq1uIHbhu4EgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkgKENoxrDGoW5nIDQpLiBD4bulIHRo4buDLCBuw7MgZ2nhuqNpIHF1eeG6v3QgdHLhu7FjIHRp4bq/cCB24bqlbiDEkeG7gSB24buBIGdp4bqjIMSR4buLbmggcGjGsMahbmcgc2FpIGtow7RuZyBo4bqxbmcgc+G7kSDEkcaw4bujYyBuaOG6rW4gdGjhuqV5IHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHRydXnhu4FuIHRo4buRbmcuIFF1YW4gdHLhu41uZyBoxqFuLCBDaMawxqFuZyA1IGNodeG6qW4gYuG7iyB0cuG7sWMgdGnhur9wIGNobyBjw6FjIGNoxrDGoW5nIHRp4bq/cCB0aGVvLg0KICANCiMjICoqQ0jGr8agTkcgNjogTcOUIEjDjE5IIFRVWeG6vk4gVMONTkggVOG7lE5HIFFVw4FUOiDGr+G7mkMgTMav4buiTkcqKg0KDQogIENoxrDGoW5nIDYsICJNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQ6IMav4bubYyBsxrDhu6NuZyIsIHRp4bq/cCBu4buRaSBDaMawxqFuZyA1LCBuxqFpIGPhuqV1IHRyw7pjIGPGoSBi4bqjbiBj4bunYSBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTSkgxJHDoyDEkcaw4bujYyDEkeG7i25oIG5naMSpYS4gTuG6v3UgQ2jGsMahbmcgNSBnaeG7m2kgdGhp4buHdSAiR0xNIGzDoCBnw6wiIGLhurFuZyBjw6FjaCB4w6FjIMSR4buLbmggY8OhYyB0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gKGThu7FhIHRyw6puIEV4cG9uZW50aWFsIERpc3BlcnNpb24gTW9kZWwgLSBFRE0pIHbDoCBo4buHIHRo4buRbmcgKGThu7FhIHRyw6puIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggdsOgIGjDoG0gbGnDqm4ga+G6v3QpLCB0aMOsIG3hu6VjIHRpw6p1IGNow61uaCBj4bunYSBDaMawxqFuZyA2IGzDoCBnaeG6o2kgdGjDrWNoIGPDoWNoIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSBjaMawYSBiaeG6v3QgdHJvbmcgY+G6pXUgdHLDumMgR0xNIMSRw7Mga2hpIGPDsyBk4buvIGxp4buHdS4gQ2jGsMahbmcgbsOgeSB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyBz4butIGThu6VuZyBwaMawxqFuZyBwaMOhcCDGr+G7m2MgbMaw4bujbmcgSOG7o3AgbMO9IEPhu7FjIMSR4bqhaSAoTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRpb24gLSBNTEUpLCBt4buZdCBraMOhaSBuaeG7h20gcXVhbiB0cuG7jW5nIMSRw6MgxJHGsOG7o2MgdHLDrG5oIGLDoHkg4bufIENoxrDGoW5nIDQsIMSR4buDIHTDrG0gcmEgY8OhYyBnacOhIHRy4buLIHThu5F0IG5o4bqldCBjaG8gY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IM6yIHbDoCB0aGFtIHPhu5EgcGjDom4gdMOhbiDPhiAobuG6v3UgY8OzKS4NCg0KIyMjICoqNi4xIE7hu5lpIGR1bmcgY2jDrW5oKiogDQoNCiMjIyMgKirGr+G7m2MgbMaw4bujbmcgVGhhbSBz4buRIEjhu4cgc+G7kSBI4buTaSBxdXkgzrI6KioNCiANCiAgVmnhu4djIMaw4bubYyBsxrDhu6NuZyAkzrIkIGThu7FhIHRyw6puIHZp4buHYyB0w61uaCB0b8OhbiBow6BtIGjhu6NwIGzDvSAobGlrZWxpaG9vZCBmdW5jdGlvbikgY2hvIGThu68gbGnhu4d1IHRoZW8gY+G6pXUgdHLDumMgR0xNLiBDw6FjIHRoYW0gc+G7kSDOsiDEkcaw4bujYyB0w6xtIHRo4bqleSBi4bqxbmcgY8OhY2ggdOG7kWkgxJFhIGjDs2EgaMOgbSBo4bujcCBsw70gbsOgeS4NCiANCiAgUXXDoSB0csOsbmggbsOgeSBk4bqrbiDEkeG6v24gdmnhu4djIGdp4bqjaSBjw6FjIHBoxrDGoW5nIHRyw6xuaCDEkWnhu4NtIChTY29yZSBFcXVhdGlvbnMpLCBsw6AgxJHhuqFvIGjDoG0gYuG6rWMgbmjhuqV0IGPhu6dhIGxvZy1ow6BtIGjhu6NwIGzDvSB0aGVvIHThu6tuZyB0aGFtIHPhu5EgJM6yaiQgdsOgIMSRxrDhu6NjIMSR4bq3dCBi4bqxbmcga2jDtG5nLiDEkOG7kWkgduG7m2kgR0xNcywgY8OhYyBwaMawxqFuZyB0csOsbmggxJFp4buDbSBuw6B5IHRoxrDhu51uZyBsw6AgcGhpIHR1eeG6v24gdMOtbmgsIGtow6FjIHbhu5tpIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaHXhuqluLg0KDQogIERvIHTDrW5oIGNo4bqldCBwaGkgdHV54bq/biB0w61uaCwgdmnhu4djIMaw4bubYyBsxrDhu6NuZyAkzrIkIHRoxrDhu51uZyDEkcOyaSBo4buPaSBjw6FjIHBoxrDGoW5nIHBow6FwIGzhurdwIGzhuqFpIMSR4buDIGdp4bqjaSBjw6FjIHBoxrDGoW5nIHRyw6xuaCDEkWnhu4NtLiBDaMawxqFuZyA2IG3DtCB04bqjIGPDoWNoIHTDrW5oIHRvw6FuIG7DoHksIGJhbyBn4buTbSBj4bqjIGPDoWNoIGJp4buDdSBkaeG7hW4gYuG6sW5nIG1hIHRy4bqtbi4NCiANCiAgTeG7mXQgxJFp4buDbSBxdWFuIHRy4buNbmcgxJHGsOG7o2MgbmjhuqVuIG3huqFuaCBsw6AgcXXDoSB0csOsbmggxrDhu5tjIGzGsOG7o25nIEdMTXMgY+G7pWMgYuG7mSBnaeG7kW5nIG5oxrAgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmguDQogDQogIFNhdSBraGkgxrDhu5tjIGzGsOG7o25nIMSRxrDhu6NjICRcYmV0YSBtxakgJCwgY2jGsMahbmcgY8WpbmcgY2jhu4kgcmEgY8OhY2ggdMOtbmggc2FpIHPhu5EgY2h14bqpbiAoc3RhbmRhcmQgZXJyb3JzKSBjaG8gY8OhYyDGsOG7m2MgbMaw4bujbmcgbsOgeSwgc+G7rSBk4bulbmcgbWEgdHLhuq1uIHRow7RuZyB0aW4gKEluZm9ybWF0aW9uIG1hdHJpeCkuDQoNCiMjIyMgKirGr+G7m2MgbMaw4bujbmcgVGhhbSBz4buRIFBow6JuIHTDoW4gz4Y6KioNCiANCiAgTmdvw6BpIGPDoWMgaOG7hyBz4buRICTOsiQsIEdMTXMgY2hvIGPDoWMgcGjDom4gcGjhu5FpIG5oxrAgTm9ybWFsLCBHYW1tYSwgSW52ZXJzZSBHYXVzc2lhbiwgdsOgIFR3ZWVkaWUgY8OybiBjw7MgdGjDqm0gbeG7mXQgdGhhbSBz4buRIHBow6JuIHTDoW4gJFxwaGkkLiBDw6FjIHBow6JuIHBo4buRaSBQb2lzc29uIHbDoCBCaW5vbWlhbCB0aMaw4budbmcgxJHGsOG7o2MgY29pIGzDoCBjw7MgJFxwaGkkID0gMSBob+G6t2MgxJHDoyBiaeG6v3QuDQogDQogIENoxrDGoW5nIDYgdGjhuqNvIGx14bqtbiB24buBIGPDoWMgcGjGsMahbmcgcGjDoXAga2jDoWMgbmhhdSDEkeG7gyDGsOG7m2MgbMaw4bujbmcgJFxwaGkkLiBDw6FjIHBoxrDGoW5nIHBow6FwIG7DoHkgYmFvIGfhu5NtIMav4bubYyBsxrDhu6NuZyBI4bujcCBsw70gQ+G7sWMgxJHhuqFpIChNTEUpLCDGr+G7m2MgbMaw4bujbmcgTG9nLWjDoG0gaOG7o3AgbMO9IGJpw6puIChNb2RpZmllZCBQcm9maWxlIExvZy1MaWtlbGlob29kIEVzdGltYXRvciksIMav4bubYyBsxrDhu6NuZyDEkOG7mSBs4buHY2ggVHJ1bmcgYsOsbmggKE1lYW4gRGV2aWFuY2UgRXN0aW1hdG9yKSwgdsOgIMav4bubYyBsxrDhu6NuZyBQZWFyc29uIChQZWFyc29uIEVzdGltYXRvcikuIENoxrDGoW5nIGPFqW5nIMSRxrBhIHJhIHNvIHPDoW5oIHbhu4Egdmnhu4djIG7Dqm4gc+G7rSBk4bulbmcgbG/huqFpIMaw4bubYyBsxrDhu6NuZyAkXHBoaSQgbsOgbyBsw6AgdOG7kXQgbmjhuqV0IHRyb25nIGPDoWMgdHLGsOG7nW5nIGjhu6NwIGtow6FjIG5oYXUuDQoNCiMjIyMgKirEkOG7mSBs4buHY2ggRMawIChSZXNpZHVhbCBEZXZpYW5jZSk6KioNCiANCiAgQ2jGsMahbmcgZ2nhu5tpIHRoaeG7h3Uga2jDoWkgbmnhu4dtIMSQ4buZIGzhu4djaCBExrAsIG3hu5l0IMSR4bqhaSBsxrDhu6NuZyDEkW8gbMaw4budbmcgbeG7qWMgxJHhu5kgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmguIMSQ4buZIGzhu4djaCBkxrAgxJHDs25nIHZhaSB0csOyIHTGsMahbmcgdOG7sSBuaMawIFThu5VuZyBiw6xuaCBwaMawxqFuZyBwaOG6p24gZMawIChTdW0gb2YgU3F1YXJlcyBvZiBSZXNpZHVhbHMpIHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGNodeG6qW4gdsOgIGPDsyBsacOqbiBxdWFuIGNo4bq3dCBjaOG6vSDEkeG6v24gbG9nLWjDoG0gaOG7o3AgbMO9LiBOw7MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgcXXDoSB0csOsbmggxrDhu5tjIGzGsOG7o25nIHbDoCDEkcOhbmggZ2nDoSBtw7QgaMOsbmggc2F1IG7DoHkuDQoNCiAgVsOtIGThu6UgbWluaCBo4buNYToNCg0KICBN4bq3YyBkw7kgY8OhYyDEkW/huqFuIHRyw61jaCB04burIENoxrDGoW5nIDYga2jDtG5nIMSRaSBzw6J1IHbDoG8gbeG7mXQgdsOtIGThu6UgZOG7ryBsaeG7h3UgY+G7pSB0aOG7gyDEkeG7gyB0csOsbmggYsOgeSBjaGkgdGnhur90IGPDoWMgYsaw4bubYyB0w61uaCB0b8OhbiDGsOG7m2MgbMaw4bujbmcsIGNow7puZyBjaOG7iSByYSBy4bqxbmcgY2jGsMahbmcgbsOgeSBnaeG6o2kgdGjDrWNoIGPDoWNoIHPhu60gZOG7pW5nIFIgxJHhu4MgZml0dGVkIEdMTXMuIEPhu6UgdGjhu4MgaMahbiwgcGjhuqduIGdp4bqjaSBiw6BpIHThuq1wIGPhu6dhIENoxrDGoW5nIDYgbWluaCBo4buNYSB2aeG7h2Mgc+G7rSBk4bulbmcgbOG7h25oIGdsbShOdW1iZXJ+QWdlLCBkYXRhPWJsb2NrcywgZmFtaWx5PXBvaXNzb24pIHbhu5tpIGThu68gbGnhu4d1IGJsb2Nrcy4gTOG7h25oIGdsbSgpIHRyb25nIFIgdGjhu7FjIGhp4buHbiB0b8OgbiBi4buZIHF1w6EgdHLDrG5oIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSBjaG8gbcO0IGjDrG5oIEdMTSAodHJvbmcgdsOtIGThu6UgbsOgeSBsw6AgUG9pc3NvbiBHTE0gbcO0IGjDrG5oIGjDs2EgTnVtYmVyIGThu7FhIHRyw6puIEFnZSkgYuG6sW5nIGPDoWNoIMOhcCBk4bulbmcgY8OhYyBwaMawxqFuZyBwaMOhcCBs4bq3cCBs4bqhaSDEkeG7gyBnaeG6o2kgY8OhYyBwaMawxqFuZyB0csOsbmggxJFp4buDbSwgbmjGsCDEkcOjIG3DtCB04bqjIHRyb25nIGNoxrDGoW5nLiBL4bq/dCBxdeG6oyB04burIGzhu4duaCBzdW1tYXJ5KG0xKSBoaeG7g24gdGjhu4sgY8OhYyDGsOG7m2MgbMaw4bujbmcgY+G7p2EgaOG7hyBz4buRICh2w60gZOG7pTogY2hvIEFnZSkgdsOgIHNhaSBz4buRIGNodeG6qW4gdMawxqFuZyDhu6luZywgbMOgIHPhuqNuIHBo4bqpbSB0cuG7sWMgdGnhur9wIGPhu6dhIHF1w6EgdHLDrG5oIMaw4bubYyBsxrDhu6NuZyDEkcaw4bujYyB0aOG6o28gbHXhuq1uIHRyb25nIGNoxrDGoW5nLiDEkGnhu4F1IG7DoHkgbWluaCBo4buNYSBjw6FjaCBsw70gdGh1eeG6v3QgxrDhu5tjIGzGsOG7o25nIHBo4bupYyB04bqhcCDEkcaw4bujYyDEkcOzbmcgZ8OzaSB0cm9uZyBjw6FjIGjDoG0gdGjhu5FuZyBrw6ogdGjhu7FjIHThur8uDQoNCiMjIyAqKjYuMiBWYWkgdHLDsiAqKg0KDQogIENoxrDGoW5nIDYgxJHDs25nIHZhaSB0csOyIGzDoCBj4bqndSBu4buRaSB0aGnhur90IHnhur91IGdp4buvYSBj4bqldSB0csO6YyBsw70gdGh1eeG6v3QgY+G7p2EgR0xNcyAoQ2jGsMahbmcgNSkgdsOgIHZp4buHYyDDoXAgZOG7pW5nIGNow7puZyB2w6BvIGThu68gbGnhu4d1IHRo4buxYyB04bq/LiBOw7MgY3VuZyBj4bqlcCBwaMawxqFuZyBwaMOhcCBsdeG6rW4gY+G7kXQgbMO1aSDEkeG7gyBjaHV54buDbiDEkeG7lWkgbcO0IGjDrG5oIHRvw6FuIGjhu41jIHRow6BuaCBtw7QgaMOsbmggZml0dGVkIGPDsyB0aOG7gyBz4butIGThu6VuZyDEkcaw4bujYy4NCiAgDQogIENoxrDGoW5nIDYgZOG7sWEgdHLDqm4gbuG7gW4gdOG6o25nOg0KDQotIENoxrDGoW5nIDQgKE1heGltdW0gTGlrZWxpaG9vZCk6IFRvw6BuIGLhu5kgcGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIM6yIHbDoCDPhiDEkcaw4bujYyB4w6J5IGThu7FuZyBk4buxYSB0csOqbiBjw6FjIG5ndXnDqm4gdOG6r2MgdsOgIGvhu7kgdGh14bqtdCBj4bunYSDGr+G7m2MgbMaw4bujbmcgSOG7o3AgbMO9IEPhu7FjIMSR4bqhaSDEkcOjIMSRxrDhu6NjIGdp4bubaSB0aGnhu4d1IOG7nyBDaMawxqFuZyA0Lg0KDQotIENoxrDGoW5nIDUgKEdMTSBTdHJ1Y3R1cmUpOiBD4bqldSB0csO6YyBHTE0sIGJhbyBn4buTbSBFRE0gKFJhbmRvbSBDb21wb25lbnQpLCBi4buZIGThu7EgYsOhbyB0dXnhur9uIHTDrW5oIHbDoCBow6BtIGxpw6puIGvhur90IChTeXN0ZW1hdGljIENvbXBvbmVudCksIHbDoCDEkeG7i25oIG5naMSpYSB24buBIMSR4buZIGzhu4djaCwgbMOgIMSRaeG7gXUga2nhu4duIHRpw6puIHF1eeG6v3QgxJHhu4MgdGhp4bq/dCBs4bqtcCBow6BtIGjhu6NwIGzDvSB2w6AgY8OhYyBwaMawxqFuZyB0csOsbmggxJFp4buDbSBj4bqnbiB0aGnhur90IGNobyB2aeG7h2MgxrDhu5tjIGzGsOG7o25nIHRyb25nIENoxrDGoW5nIDYuDQogIA0KIyMgKipDSMavxqBORyA3OiBNw5QgSMOMTkggVFVZ4bq+TiBUw41OSCBU4buUTkcgUVXDgVQ6IFNVWSBMVeG6rE4qKg0KDQogIENoxrDGoW5nIDcsICJNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQ6IFN1eSBsdeG6rW4iLCBsw6AgYsaw4bubYyB0aeG6v3AgdGhlbyBzYXUgQ2jGsMahbmcgNiB24buBIMaw4bubYyBsxrDhu6NuZy4gTuG6v3UgQ2jGsMahbmcgNiB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyB0w6xtIHJhIGPDoWMgZ2nDoSB0cuG7iyDGsOG7m2MgbMaw4bujbmcgdOG7kXQgbmjhuqV0IGNobyBjw6FjIHRoYW0gc+G7kSBj4bunYSBHTE0gdOG7qyBk4buvIGxp4buHdSBt4bqrdSAoY2jhu6cgeeG6v3UgdGjDtG5nIHF1YSDGr+G7m2MgbMaw4bujbmcgSOG7o3AgbMO9IEPhu7FjIMSR4bqhaSAtIE1MRSksIHRow6wgbeG7pWMgdGnDqnUgY2jDrW5oIGPhu6dhIENoxrDGoW5nIDcgbMOgIHPhu60gZOG7pW5nIG5o4buvbmcgxrDhu5tjIGzGsOG7o25nIMSRw7MgxJHhu4MgxJHGsGEgcmEgY8OhYyBr4bq/dCBsdeG6rW4gc3V5IGx14bqtbiAoaW5mZXJlbmNlKSB24buBIGPDoWMgdGhhbSBz4buRIHRo4buxYyBz4buxIHRyb25nIHF14bqnbiB0aOG7gy4gQ2jGsMahbmcgbsOgeSBjdW5nIGPhuqVwIGPDoWMgcGjGsMahbmcgcGjDoXAgxJHhu4Mga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgdGjhu5FuZyBrw6ogduG7gSBjw6FjIGjhu4cgc+G7kSBo4buTaSBxdXkgzrIgdsOgIHRoYW0gc+G7kSBwaMOibiB0w6FuIM+GLCBjxaluZyBuaMawIHjDonkgZOG7sW5nIGtob+G6o25nIHRpbiBj4bqteSBjaG8gY2jDum5nLiBOZ2/DoGkgcmEsIGNoxrDGoW5nIGPDsm4gxJHhu4EgY+G6rXAgxJHhur9uIGPDoWMgY8OhY2ggc28gc8OhbmggZ2nhu69hIGPDoWMgbcO0IGjDrG5oIEdMTSBraMOhYyBuaGF1Lg0KICANCiMjIyAqKjcuMSBO4buZaSBkdW5nIGNow61uaCoqDQoNCiAgTuG7mWkgZHVuZyBj4buRdCBsw7VpIGPhu6dhIENoxrDGoW5nIDcgeG9heSBxdWFuaCBjw6FjIGvhu7kgdGh14bqtdCBzdXkgbHXhuq1uIGNobyBtw7QgaMOsbmggR0xNLCBjaOG7pyB54bq/dSBk4buxYSB0csOqbiBjw6FjIGvhur90IHF14bqjIHRp4buHbSBj4bqtbiBj4bunYSBNTEUgKHThu6sgQ2jGsMahbmcgNCkgdsOgIGPDoWMgxrDhu5tjIGzGsOG7o25nIHRodSDEkcaw4bujYyB04burIENoxrDGoW5nIDYuDQogDQojIyMjICoqU3V5IGx14bqtbiB24buBIGPDoWMgSOG7hyBz4buRIEjhu5NpIHF1eSDOsioqIA0KDQogIENoxrDGoW5nIDcgdHLDrG5oIGLDoHkgY8OhYyBwaMawxqFuZyBwaMOhcCBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB24buBIGPDoWMgaOG7hyBz4buRIGjhu5NpIHF1eSAkzrJfaiQuIEPDoWMgZ2nhuqMgdGh1eeG6v3QgdGjGsOG7nW5nIGfhurdwIGzDoCBraeG7g20gxJHhu4tuaCB4ZW0gbeG7mXQgaOG7hyBz4buRIGPhu6UgdGjhu4MgY8OzIGLhurFuZyAwIGhheSBraMO0bmcgKHThu6ljIGzDoCBiaeG6v24gZ2nhuqNpIHRow61jaCB0xrDGoW5nIOG7qW5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogaGF5IGtow7RuZyksIGhv4bq3YyBraeG7g20gxJHhu4tuaCBt4buZdCB04bqtcCBo4bujcCBjb24gY8OhYyBo4buHIHPhu5EgY8OzIGLhurFuZyAwIGhheSBraMO0bmcuDQogDQogIEJhIHBoxrDGoW5nIHBow6FwIGtp4buDbSDEkeG7i25oIGNow61uaCDEkcaw4bujYyB0aOG6o28gbHXhuq1uIGzDoCBLaeG7g20gxJHhu4tuaCBU4bu3IHPhu5EgSOG7o3AgbMO9IChMaWtlbGlob29kIFJhdGlvIFRlc3QgLSBMUlQpLCBLaeG7g20gxJHhu4tuaCBXYWxkIChXYWxkIFRlc3QpLCB2w6AgS2nhu4NtIMSR4buLbmggxJBp4buDbSBz4buRIChTY29yZSBUZXN0KS4gQ8OhYyBraeG7g20gxJHhu4tuaCBuw6B5IMSR4buBdSBk4buxYSB0csOqbiBsw70gdGh1eeG6v3QgdGnhu4dtIGPhuq1uIGPhu6dhIE1MRSAodOG7qyBDaMawxqFuZyA0KSwgxJHhurdjIGJp4buHdCBoaeG7h3UgcXXhuqMgduG7m2kgY+G7oSBt4bqrdSBs4bubbi4gQ2jGsMahbmcgbsOgeSBzbyBzw6FuaCDGsHUgbmjGsOG7o2MgxJFp4buDbSBj4bunYSB04burbmcgcGjGsMahbmcgcGjDoXAgdsOgIGtoaSBuw6BvIG7Dqm4gc+G7rSBk4bulbmcgY2jDum5nLg0KIA0KICBLaeG7g20gxJHhu4tuaCBU4bu3IHPhu5EgSOG7o3AgbMO9IHNvIHPDoW5oIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIMSR4bqneSDEkeG7pyB24bubaSBtw7QgaMOsbmggYuG7iyByw6BuZyBideG7mWMgKG5lc3RlZCBtb2RlbCksIHRoxrDhu51uZyBz4butIGThu6VuZyDEkOG7mSBs4buHY2ggRMawIChSZXNpZHVhbCBEZXZpYW5jZSkuIFPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgxJDhu5kgbOG7h2NoIETGsCBjw7MgcGjDom4gcGjhu5FpIHjhuqVwIHjhu4kgQ2hpLWLDrG5oIHBoxrDGoW5nIGTGsOG7m2kgZ2nhuqMgdGh1eeG6v3QgbnVsbC4NCiANCiAgS2nhu4NtIMSR4buLbmggV2FsZCBz4butIGThu6VuZyDGsOG7m2MgbMaw4bujbmcgdGhhbSBz4buRICTOsiBtxakkIHbDoCBzYWkgc+G7kSBjaHXhuqluIGPhu6dhIG7DsyAoxJHGsOG7o2MgdMOtbmggdHJvbmcgQ2jGsMahbmcgNikuIMSQ4buRaSB24bubaSBj4buhIG3huqt1IGzhu5tuLCB04bu3IHPhu5EgV2FsZCB44bqlcCB44buJIHBow6JuIHBo4buRaSBDaHXhuqluIHThuq9jIChaKSBob+G6t2MgdCAobuG6v3UgJFxwaGkkIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZykuDQogIA0KICBLaeG7g20gxJHhu4tuaCDEkGnhu4NtIHPhu5EgZOG7sWEgdHLDqm4gxJHhuqFvIGjDoG0gY+G7p2EgbG9nLWjDoG0gaOG7o3AgbMO9IChTY29yZSBmdW5jdGlvbikgdOG6oWkgZ2nDoSB0cuG7iyB0aGFtIHPhu5EgZMaw4bubaSBnaeG6oyB0aHV54bq/dCBudWxsICjEkcaw4bujYyBnaeG7m2kgdGhp4buHdSB0cm9uZyBDaMawxqFuZyA0IHbDoCBz4butIGThu6VuZyDEkeG7gyB0w6xtIMaw4bubYyBsxrDhu6NuZyB0cm9uZyBDaMawxqFuZyA2KS4NCiANCiAgQ2jGsMahbmcgY8WpbmcgaMaw4bubbmcgZOG6q24gY8OhY2ggeMOieSBk4buxbmcgS2hv4bqjbmcgVGluIGPhuq15IChDb25maWRlbmNlIEludGVydmFscykgY2hvIHThu6tuZyBo4buHIHPhu5EgJM6yX2okLCBk4buxYSB0csOqbiDGsOG7m2MgbMaw4bujbmcgJM6yzIJqJCB2w6Agc2FpIHPhu5EgY2h14bqpbiBj4bunYSBuw7MsIHPhu60gZOG7pW5nIHBow6JuIHBo4buRaSB44bqlcCB44buJIENodeG6qW4gdOG6r2MuDQoNCiMjIyMgKipTdXkgbHXhuq1uIHbhu4EgVGhhbSBz4buRIFBow6JuIHTDoW4gz4Y6KioNCg0KICDEkOG7kWkgduG7m2kgY8OhYyBHTE0gY8OzIHRoYW0gc+G7kSBwaMOibiB0w6FuICRccGhpJCBjaMawYSBiaeG6v3QgKG5oxrAgTm9ybWFsLCBHYW1tYSwgSW52ZXJzZSBHYXVzc2lhbiwgVHdlZWRpZSksIENoxrDGoW5nIDYgxJHDoyB0csOsbmggYsOgeSBjw6FjIGPDoWNoIMaw4bubYyBsxrDhu6NuZyAkXHBoaSQuIENoxrDGoW5nIDcgxJHhu4EgY+G6rXAgxJHhur9uIHN1eSBsdeG6rW4gbGnDqm4gcXVhbiDEkeG6v24gJFxwaGkkLCBt4bq3YyBkw7kgcGjhuqduIGzhu5tuIHRy4buNbmcgdMOibSB24bqrbiBsw6Agc3V5IGx14bqtbiB24buBICTOsiQga2hpICRccGhpJCDEkcaw4bujYyBjb2kgbMOgIMSRw6MgYmnhur90IGhv4bq3YyDEkcOjIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZy4gQ8OhYyBraeG7g20gxJHhu4tuaCB24buBICTOsiQgY8OzIHRo4buDIGPhuqduIMSRaeG7gXUgY2jhu4luaCBraGkgJFxwaGkkIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyAodsOtIGThu6U6IHPhu60gZOG7pW5nIHBow6JuIHBo4buRaSB0IHRoYXkgdsOsIFopLg0KDQojIyMjICoqU28gc8OhbmggY8OhYyBNw7QgaMOsbmggR0xNOioqDQogDQogIENoxrDGoW5nIGN1bmcgY+G6pXAgY8OhYyBwaMawxqFuZyBwaMOhcCDEkeG7gyBzbyBzw6FuaCBnaeG7r2EgY8OhYyBtw7QgaMOsbmggR0xNIGtow6FjIG5oYXUuDQogDQogIMSQ4buRaSB24bubaSBjw6FjIG3DtCBow6xuaCBs4buTbmcgbmhhdSAobmVzdGVkIG1vZGVscyksIEtp4buDbSDEkeG7i25oIFThu7cgc+G7kSBI4bujcCBsw70gKHRow7RuZyBxdWEgc28gc8OhbmggxJDhu5kgbOG7h2NoIETGsCkgbMOgIHBoxrDGoW5nIHBow6FwIHRpw6p1IGNodeG6qW4uIEtow6FpIG5p4buHbSBtw7QgaMOsbmggbOG7k25nIG5oYXUgdsOgIGPDoWNoIHNvIHPDoW5oIMSRw6MgxJHGsOG7o2MgZ2nhu5tpIHRoaeG7h3UgY2hvIEjhu5NpIHF1eSBUdXnhur9uIHTDrW5oIHRyb25nIENoxrDGoW5nIDIuDQogICANCiAgxJDhu5FpIHbhu5tpIGPDoWMgbcO0IGjDrG5oIGtow7RuZyBs4buTbmcgbmhhdSAobm9uLW5lc3RlZCBtb2RlbHMpLCBjaMawxqFuZyBnaeG7m2kgdGhp4buHdSB2aeG7h2Mgc+G7rSBk4bulbmcgY8OhYyB0acOqdSBjaMOtIHRow7RuZyB0aW4gbmjGsCBBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pIHbDoCBCSUMgKEJheWVzaWFuIEluZm9ybWF0aW9uIENyaXRlcmlvbikuIEFJQyB2w6AgQklDIGPDom4gYuG6sW5nIGdp4buvYSDEkeG7mSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCB2w6Agc+G7kSBsxrDhu6NuZyB0aGFtIHPhu5EsIGdpw7pwIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggdOG7kXQgbmjhuqV0IG3hu5l0IGPDoWNoIGtow6FjaCBxdWFuIGjGoW4uDQogDQogIEPDoWMgcGjGsMahbmcgcGjDoXAgbOG7sWEgY2jhu41uIG3DtCBow6xuaCB04buxIMSR4buZbmcgY8WpbmcgxJHGsOG7o2Mgbmjhuq9jIMSR4bq/bi4NCiAgDQogICoqVsOtIGThu6UgbWluaCBo4buNYToqKg0KICANCiAgQ2jGsMahbmcgNyBtaW5oIGjhu41hIHZp4buHYyB0aOG7sWMgaGnhu4duIHN1eSBsdeG6rW4gY2hvIEdMTXMgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIHBo4bqnbiBt4buBbSBSLiBN4bq3YyBkw7kga2jDtG5nIGPDsyBk4buvIGxp4buHdSBj4bulIHRo4buDIHbDoCBjw6FjIGLGsOG7m2MgdMOtbmggdG/DoW4gY2hpIHRp4bq/dCB0cm9uZyBjw6FjIMSRb+G6oW4gdHLDrWNoIFRPQywgY8OhYyBjaMawxqFuZyB0csaw4bubYyDEkcOjIGdp4bubaSB0aGnhu4d1IGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gZ2xtKCkgdHJvbmcgUiDEkeG7gyBmaXR0ZWQgR0xNcyAodsOtIGThu6U6IGdsbShOdW1iZXJ+QWdlLCBkYXRhPWJsb2NrcywgZmFtaWx5PXBvaXNzb24pKSB2w6AgY8OhY2ggeGVtIGvhur90IHF14bqjIHTDs20gdOG6r3QgYuG6sW5nIHN1bW1hcnkoKS4gT3V0cHV0IHThu6sgc3VtbWFyeSgpIHRoxrDhu51uZyBiYW8gZ+G7k20gxrDhu5tjIGzGsOG7o25nIGjhu4cgc+G7kSwgc2FpIHPhu5EgY2h14bqpbiwgZ2nDoSB0cuG7iyBraeG7g20gxJHhu4tuaCBXYWxkICh0aMaw4budbmcgZMaw4bubaSBk4bqhbmcgei12YWx1ZSBob+G6t2MgdC12YWx1ZSkgdsOgIHAtdmFsdWUgdMawxqFuZyDhu6luZyBjaG8gdOG7q25nIGjhu4cgc+G7kSwgY2hvIHBow6lwIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90ICTOsl9qPTAkLiBDaMawxqFuZyA3IGdp4bqjaSB0aMOtY2ggY8OhY2ggZGnhu4VuIGdp4bqjaSBuaOG7r25nIGNvbiBz4buRIG7DoHkgxJHhu4MgxJHGsGEgcmEga+G6v3QgbHXhuq1uIHRo4buRbmcga8OqLiBOZ2/DoGkgcmEsIGzhu4duaCBhbm92YSgpIHRyb25nIFIgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHRo4buxYyBoaeG7h24gS2nhu4NtIMSR4buLbmggVOG7tyBz4buRIEjhu6NwIGzDvSBjaG8gY8OhYyBtw7QgaMOsbmggbOG7k25nIG5oYXUuIFbDrSBk4bulIHbhu4EgbOG7h25oIGFub3ZhKCkgduG7m2kgbcO0IGjDrG5oIEdhbW1hIHRyb25nIG5ndeG7k24gY2hvIHRo4bqleSBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBGICh44bqlcCB44buJIExSVCkgY2hvIGPDoWMgYmnhur9uIHRyb25nIG3DtCBow6xuaCwgbWluaCBo4buNYSBjw6FjaCBzbyBzw6FuaCBtw7QgaMOsbmggdsOgIMSRw6FuaCBnacOhIMO9IG5naMSpYSBj4bunYSBjw6FjIG5ow7NtIGJp4bq/bi4NCiAgDQojIyMgKio3LjIgVmFpIHRyw7IqKg0KDQogIENoxrDGoW5nIDcgxJHDs25nIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgY2hvIHBow6lwIG5nxrDhu51pIGTDuW5nIMSRxrBhIHJhIGvhur90IGx14bqtbiBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHThu6sgY8OhYyBtw7QgaMOsbmggR0xNIMSRw6MgZml0dGVkLiBOw7MgY2h1eeG7g24gxJHhu5VpIGPDoWMgxrDhu5tjIGzGsOG7o25nIMSRaeG7g20gKHThu6sgQ2jGsMahbmcgNikgdGjDoG5oIHN1eSBsdeG6rW4gduG7gSBxdeG6p24gdGjhu4MuDQpDaMawxqFuZyA3IGThu7FhIHRyw6puIG7hu4FuIHThuqNuZyBsw70gdGh1eeG6v3QgdOG7qyBjw6FjIGNoxrDGoW5nIHRyxrDhu5tjOg0KDQogIC0gQ2jGsMahbmcgNiAoRXN0aW1hdGlvbik6IEN1bmcgY+G6pXAgY8OhYyDGsOG7m2MgbMaw4bujbmcgdGhhbSBz4buRIM6yzIIgdsOgIM+GzIIgY8O5bmcgduG7m2kgbWEgdHLhuq1uIGhp4buHcCBwaMawxqFuZyBzYWkvc2FpIHPhu5EgY2h14bqpbiBj4bunYSBjaMO6bmcsIGzDoCDEkeG6p3UgdsOgbyB0aGnhur90IHnhur91IGNobyBjw6FjIGtp4buDbSDEkeG7i25oIFdhbGQgdsOgIHjDonkgZOG7sW5nIGtob+G6o25nIHRpbiBj4bqteS4NCg0KICAtIENoxrDGoW5nIDUgKEdMTSBTdHJ1Y3R1cmUpOiBD4bqldSB0csO6YyBHTE0sIMSR4bq3YyBiaeG7h3QgbMOgIGtow6FpIG5p4buHbSDEkOG7mSBs4buHY2ggKERldmlhbmNlKSwgbMOgIGPGoSBz4bufIMSR4buDIHjDonkgZOG7sW5nIEtp4buDbSDEkeG7i25oIFThu7cgc+G7kSBI4bujcCBsw70uDQogDQogIC0gQ2jGsMahbmcgNCAoTWF4aW11bSBMaWtlbGlob29kKTogQ3VuZyBj4bqlcCBsw70gdGh1eeG6v3QgbuG7gW4gdOG6o25nIHbhu4EgdMOtbmggY2jhuqV0IHRp4buHbSBj4bqtbiBj4bunYSBNTEUsIGjDoG0gxJFp4buDbSBz4buRIChTY29yZSBmdW5jdGlvbiksIG1hIHRy4bqtbiB0aMO0bmcgdGluLCB2w6AgYmEgcGjGsMahbmcgcGjDoXAga2nhu4NtIMSR4buLbmggKExSVCwgV2FsZCwgU2NvcmUpLiBDw6FjIGvhur90IHF14bqjIG7DoHkgbMOgIHjGsMahbmcgc+G7kW5nIGNobyBjw6FjIGvhu7kgdGh14bqtdCBzdXkgbHXhuq1uIHRyb25nIENoxrDGoW5nIDcuDQoNCiAgLSBDaMawxqFuZyAyIChMaW5lYXIgUmVncmVzc2lvbik6IEPDoWMga2jDoWkgbmnhu4dtIGPGoSBi4bqjbiB24buBIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90LCBraG/huqNuZyB0aW4gY+G6rXksIHbDoCBzbyBzw6FuaCBtw7QgaMOsbmggKEFOT1ZBLCBBSUMvQklDKSB0cm9uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaHXhuqluIGzDoCB0aeG7gW4gxJHhu4EgdsOgIMSRxrDhu6NjIG3hu58gcuG7mW5nIGNobyBHTE1zIHRyb25nIGNoxrDGoW5nIG7DoHkuDQogIA0KIyMgKipDSMavxqBORyA4OiBNw5QgSMOMTkggVFVZ4bq+TiBUw41OSCBU4buUTkcgUVXDgVQ6IENIVeG6qE4gxJBPw4FOKioNCg0KICBDaMawxqFuZyA4LCAiTcO0IGjDrG5oIFR1eeG6v24gdMOtbmggVOG7lW5nIHF1w6F0OiBDaOG6qW4gxJFvw6FuIiwgdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2MgxJHDoW5oIGdpw6EgdMOtbmggcGjDuSBo4bujcCBj4bunYSBt4buZdCBtw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTSkgxJHDoyDEkcaw4bujYyBmaXR0ZWQgduG7m2kgZOG7ryBsaeG7h3UuIE3hu6VjIHRpw6p1IGNow61uaCBsw6AgY3VuZyBj4bqlcCBjw6FjIGPDtG5nIGPhu6UgdsOgIHBoxrDGoW5nIHBow6FwIMSR4buDIHBow6F0IGhp4buHbiBjw6FjIHZpIHBo4bqhbSDEkeG7kWkgduG7m2kgY8OhYyBnaeG6oyDEkeG7i25oIGPGoSBi4bqjbiBj4bunYSBtw7QgaMOsbmggR0xNLiDEkGnhu4F1IG7DoHkgbMOgIGPhu7FjIGvhu7MgcXVhbiB0cuG7jW5nIHbDrCBjw6FjIGvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyB2w6Agc3V5IGx14bqtbiB04burIGPDoWMgY2jGsMahbmcgdHLGsOG7m2MgKENoxrDGoW5nIDYgdsOgIDcpIGNo4buJIMSRw6FuZyB0aW4gY+G6rXkgbuG6v3UgY8OhYyBnaeG6oyDEkeG7i25oIGPhu6dhIG3DtCBow6xuaCDEkcaw4bujYyB0aOG7j2EgbcOjbiBt4buZdCBjw6FjaCBo4bujcCBsw70uIENoxrDGoW5nIG7DoHkgY8WpbmcgdGjhuqNvIGx14bqtbiB24buBIGPDoWMgYmnhu4duIHBow6FwIGto4bqvYyBwaOG7pWMga2hpIHBow6F0IGhp4buHbiB24bqlbiDEkeG7gS4NCg0KIyMjICoqOC4xIE7hu5lpIGR1bmcgY2jDrW5oKioNCg0KICBO4buZaSBkdW5nIGPhu5F0IGzDtWkgY+G7p2EgQ2jGsMahbmcgOCB4b2F5IHF1YW5oIGPDoWMga+G7uSB0aHXhuq10IGNo4bqpbiDEkW/DoW4gbcO0IGjDrG5oIEdMTSwgbeG7nyBy4buZbmcgY8OhYyBraMOhaSBuaeG7h20gdOG7qyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaHXhuqluIChDaMawxqFuZyAzKSBzYW5nIGPhuqV1IHRyw7pjIGxpbmggaG/huqF0IGjGoW4gY+G7p2EgR0xNcy4NCg0KIyMjIyAqKkPDoWMgS2jDoWkgbmnhu4dtIHbDoCBMw70gdGh1eeG6v3QgQ+G7kXQgbMO1aToqKg0KIA0KICBUcnVuZyB0w6JtIGPhu6dhIGNo4bqpbiDEkW/DoW4gR0xNIGzDoCB2aeG7h2Mga2nhu4NtIHRyYSBjw6FjIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oLiBDw6FjIGdp4bqjIMSR4buLbmggbsOgeSBiYW8gZ+G7k20gY+G6pXUgdHLDumMgY+G7p2EgdGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puICh0aHXhu5ljIGdpYSDEkcOsbmggcGjDom4gcGjhu5FpIGjDoG0gbcWpIC0gRURNLCBuaMawIHRo4bqjbyBsdeG6rW4gdHJvbmcgQ2jGsMahbmcgNSksIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgdHJ1bmcgYsOsbmggdsOgIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggdGjDtG5nIHF1YSBow6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKSwgdsOgIHTDrW5oIMSR4buZYyBs4bqtcCBj4bunYSBjw6FjIHF1YW4gc8OhdC4NCiANCiAgQ8OhYyBjw7RuZyBj4bulIGNow61uaCDEkcaw4bujYyBz4butIGThu6VuZyBsw6AgUGjhuqduIGTGsCAoUmVzaWR1YWxzKSB2w6AgxJDhu5kgxJHDsm4gYuG6qXkgKExldmVyYWdlKS4NCiAgDQogIEPDsyBiYSBsb+G6oWkgcGjhuqduIGTGsCBjxqEgYuG6o24gxJHGsOG7o2MgdHLDrG5oIGLDoHkgY2hvIEdMTXM6IFBlYXJzb24gUmVzaWR1YWxzLCBEZXZpYW5jZSBSZXNpZHVhbHMsIHbDoCBRdWFudGlsZSBSZXNpZHVhbHMuIE3hu5dpIGxv4bqhaSBjw7Mgbmjhu69uZyDEkeG6t2MgdMOtbmggcmnDqm5nIHbDoCBo4buvdSDDrWNoIGNobyBjw6FjIG3hu6VjIMSRw61jaCBjaOG6qW4gxJFvw6FuIGtow6FjIG5oYXUuIFBo4bqnbiBkxrAgxJHDoXAg4bupbmcgKFJlc3BvbnNlIFJlc2lkdWFscykgxJHGsOG7o2MgY29pIGzDoCBraMO0bmcgxJHhu6cgY2hvIEdMTXMuDQoNCiAgxJDhu5kgxJHDsm4gYuG6qXkgbMOgIG3hu5l0IHRoxrDhu5tjIMSRbyB24buLIHRyw60gY+G7p2EgY8OhYyBnacOhIHRy4buLIGJp4bq/biBnaeG6o2kgdGjDrWNoIGPhu6dhIG3hu5l0IHF1YW4gc8OhdCBzbyB24bubaSBjw6FjIHF1YW4gc8OhdCBraMOhYyB2w6AgbeG7qWMgxJHhu5kg4bqjbmggaMaw4bufbmcgdGnhu4FtIG7Eg25nIGPhu6dhIHF1YW4gc8OhdCDEkcOzIMSR4bq/biB2aeG7h2MgZml0dGVkIG3DtCBow6xuaC4gS2jDoWkgbmnhu4dtIG7DoHkgdMawxqFuZyB04buxIG5oxrAgdHJvbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY2h14bqpbi4NCiANCiAgS+G6v3QgaOG7o3AgcGjhuqduIGTGsCB2w6AgxJHhu5kgxJHDsm4gYuG6qXkgZOG6q24gxJHhur9uIGPDoWMgbG/huqFpIHBo4bqnbiBkxrAgxJHGsOG7o2MgY2h14bqpbiBow7NhIChzdGFuZGFyZGl6ZWQgcmVzaWR1YWxzKSwgZ2nDunAgdmnhu4djIHBow6F0IGhp4buHbiBjw6FjIHF1YW4gc8OhdCBi4bqldCB0aMaw4budbmcgKG91dGxpZXJzKSB0cuG7nyBuw6puIMSRw6FuZyB0aW4gY+G6rXkgaMahbi4NCg0KIyMjIyAqKkPDoWMgUGjGsMahbmcgcGjDoXAgQ2jhuqluIMSRb8OhbiB2w6AgQmnhu4duIHBow6FwIEto4bqvYyBwaOG7pWM6KioNCiANCiAgQ2jGsMahbmcgbsOgeSB0csOsbmggYsOgeSBjw6FjIHBoxrDGoW5nIHBow6FwIGNow61uaCDEkeG7gyBraeG7g20gdHJhIGdp4bqjIMSR4buLbmggYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGPDoWMgY8O0bmcgY+G7pSB0csOqbiwgY2jhu6cgeeG6v3UgdGjDtG5nIHF1YSBjw6FjIGJp4buDdSDEkeG7kyBjaOG6qW4gxJFvw6FuIChkaWFnbm9zdGljIHBsb3RzKS4NCiANCiAgQ8OhYyBsb+G6oWkgYmnhu4N1IMSR4buTIHBo4buVIGJp4bq/biBiYW8gZ+G7k20gduG6vSBwaOG6p24gZMawICjEkcOjIGNodeG6qW4gaMOzYSkgY2jhu5FuZyBs4bqhaSBjw6FjIGdpw6EgdHLhu4sgxJHDoyBmaXR0ZWQgKGZpdHRlZCB2YWx1ZXMpLCBjaOG7kW5nIGzhuqFpIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2gsIGhv4bq3YyBjaOG7kW5nIGzhuqFpIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggKGxpbmVhciBwcmVkaWN0b3IpLiBDw6FjIGJp4buDdSDEkeG7kyBuw6B5IGdpw7pwIGtp4buDbSB0cmEgdMOtbmggcGjDuSBo4bujcCBj4bunYSBow6BtIGxpw6puIGvhur90LCBj4bqldSB0csO6YyBj4bunYSB0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gKMSR4bq3YyBiaeG7h3QgbMOgIGjDoG0gcGjGsMahbmcgc2FpIC0gdmFyaWFuY2UgZnVuY3Rpb24pLCB2w6AgY8OhYyBnaeG6oyDEkeG7i25oIGtow6FjLg0KICANCiAgQmnhu4N1IMSR4buTIFEtUSAoUS1RIHBsb3RzKSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBraeG7g20gdHJhIGdp4bqjIMSR4buLbmggduG7gSBwaMOibiBwaOG7kWkgY+G7p2EgdGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChzYXUga2hpIGNodeG6qW4gaMOzYSBwaOG6p24gZMawKS4gQmnhu4N1IMSR4buTIExhZyBwbG90cyBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4Mga2nhu4NtIHRyYSB0w61uaCDEkeG7mWMgbOG6rXAuDQogDQogIENoxrDGoW5nIGPFqW5nIHRo4bqjbyBsdeG6rW4gY8OhY2ggeMOhYyDEkeG7i25oIGPDoWMgcXVhbiBzw6F0IGLhuqV0IHRoxrDhu51uZyAob3V0bGllcnMpIHbDoCBjw6FjIHF1YW4gc8OhdCBnw6J5IOG6o25oIGjGsOG7n25nIChpbmZsdWVudGlhbCBvYnNlcnZhdGlvbnMpLCBz4butIGThu6VuZyBjw6FjIGNo4buJIHPhu5EgbmjGsCBwaOG6p24gZMawIHN0dWRlbnRpemVkIHbDoCBDb29rJ3MgZGlzdGFuY2UuDQogDQogIEtoaSBjw6FjIHbhuqVuIMSR4buBIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCB0aMO0bmcgcXVhIGNo4bqpbiDEkW/DoW4sIGNoxrDGoW5nIHPhur0gxJHhu4EgY+G6rXAgxJHhur9uIGPDoWMgYmnhu4duIHBow6FwIGto4bqvYyBwaOG7pWMgKHJlbWVkaWVzKS4gQ8OhYyBiaeG7h24gcGjDoXAgbsOgeSBjw7MgdGjhu4MgYmFvIGfhu5NtIGJp4bq/biDEkeG7lWkgYmnhur9uIChj4bqjIGJp4bq/biBwaOG6o24gaOG7k2kgdsOgIGJp4bq/biBnaeG6o2kgdGjDrWNoLCBuaMawIHRyb25nIENoxrDGoW5nIDMpLCB44butIGzDvSBjw6FjIHF1YW4gc8OhdCBi4bqldCB0aMaw4budbmcvZ8OieSDhuqNuaCBoxrDhu59uZywgaG/hurdjIHhlbSB4w6l0IGPDoWMgbcO0IGjDrG5oIHRoYXkgdGjhur8uDQogDQogIE3hu5l0IGJp4buHbiBwaMOhcCBraOG6r2MgcGjhu6VjIHF1YW4gdHLhu41uZyDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSBsw6Agc+G7rSBk4bulbmcgxq/hu5tjIGzGsOG7o25nIFF1YXNpLUxpa2VsaWhvb2QgdsOgIEV4dGVuZGVkIFF1YXNpLUxpa2VsaWhvb2QsIMSR4bq3YyBiaeG7h3QgaOG7r3Ugw61jaCBraGkgY8OzIGhp4buHbiB0xrDhu6NuZyBwaMOibiB0w6FuIHF1w6EgbeG7qWMgKG92ZXJkaXNwZXJzaW9uKSwgdOG7qWMgbMOgIHBoxrDGoW5nIHNhaSBs4bubbiBoxqFuIHNvIHbhu5tpIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oICh2w60gZOG7pTogUG9pc3NvbiBob+G6t2MgQmlub21pYWwpLg0KIA0KICBW4bqlbiDEkeG7gSDEkWEgY+G7mW5nIHR1eeG6v24gKGNvbGxpbmVhcml0eSkgY8WpbmcgxJHGsOG7o2MgdGjhuqNvIGx14bqtbiBuaMawIG3hu5l0IHbhuqVuIMSR4buBIHRp4buBbSDhuqluIHRyb25nIG3DtCBow6xuaCBHTE0sIHTGsMahbmcgdOG7sSBuaMawIHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oLg0KDQojIyMjICoqVsOtIGThu6UgTWluaCBo4buNYToqKg0KIA0KICBDaMawxqFuZyA4IHPhu60gZOG7pW5nIGJp4buDdSDEkeG7kyBjaOG6qW4gxJFvw6FuIHThu6sgdmnhu4djIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IGPDonkgYW5oIMSRw6BvIChjaGVycnkgdHJlZSBkYXRhKSDEkeG7gyBtaW5oIGjhu41hIGPDoWMga+G7uSB0aHXhuq10IGNo4bqpbiDEkW/DoW4uIEPDoWMgYmnhu4N1IMSR4buTIG7DoHkgaGnhu4NuIHRo4buLIHBo4bqnbiBkxrAgZGV2aWFuY2UgxJHDoyBjaHXhuqluIGjDs2EgKHN0YW5kYXJkaXplZCBkZXZpYW5jZSByZXNpZHVhbHMpIMSRxrDhu6NjIHbhur0gY2jhu5FuZyBs4bqhaSBjw6FjIGdpw6EgdHLhu4sgxJHDoyBmaXR0ZWQgKGxvZyDOvMyCaSksIGNo4buRbmcgbOG6oWkgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCAobG9nKEdpcnRoKSB2w6AgbG9nKEhlaWdodCkpLCBjaOG7kW5nIGzhuqFpIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggdsOgIHdvcmtpbmcgcmVzcG9uc2VzLiBOaOG7r25nIGJp4buDdSDEkeG7kyBuw6B5IGdpw7pwIG5nxrDhu51pIGTDuW5nIGtp4buDbSB0cmEgdHLhu7FjIHF1YW4gbGnhu4d1IG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgYmnhur9uIGdp4bqjaSB0aMOtY2ggdsOgIHBo4bqjbiBo4buTaSBjw7MgcGjDuSBo4bujcCB24bubaSBk4bqhbmcgdHV54bq/biB0w61uaCB0csOqbiB0aGFuZyDEkW8gY+G7p2EgYuG7mSBk4buxIGLDoW8gdHV54bq/biB0w61uaCBoYXkga2jDtG5nLCB2w6AgbGnhu4d1IHBoxrDGoW5nIHNhaSBj4bunYSBjw6FjIHBo4bqnbiBkxrAgY8OzIMSR4buTbmcgbmjhuqV0IChjb25zdGFudCB2YXJpYW5jZSkgaGF5IHR1w6JuIHRoZW8gaMOgbSBwaMawxqFuZyBzYWkgxJHGsOG7o2MgZ2nhuqMgxJHhu4tuaCBoYXkga2jDtG5nLg0KIA0KICBOZ2/DoGkgcmEsIGPDoWMgYmnhu4N1IMSR4buTIGNo4bqpbiDEkW/DoW4gbmjGsCBiaeG7g3UgxJHhu5MgcGjhuqduIGTGsCBkZXZpYW5jZSBjaOG7kW5nIGzhuqFpIGPEg24gYuG6rWMgaGFpIGPhu6dhIGZpdHRlZCB2YWx1ZXMgdsOgIGJp4buDdSDEkeG7kyBDb29rJ3MgZGlzdGFuY2UgY8WpbmcgxJHGsOG7o2MgaGnhu4NuIHRo4buLIHRyb25nIHBo4bqnbiBDYXNlIFN0dWR5IGPhu6dhIENoxrDGoW5nIDEwIChjaG8gZOG7ryBsaeG7h3Ugc+G7j2kgdGjhuq1uIC0ga2lkbmV5IHN0b25lIGRhdGEpLCBtaW5oIGjhu41hIGPDoWNoIMOhcCBk4bulbmcgY8OhYyBjw7RuZyBj4bulIHThu6sgQ2jGsMahbmcgOCBjaG8gbeG7mXQgR0xNIGPhu6UgdGjhu4MgKFBvaXNzb24pIMSR4buDIGtp4buDbSB0cmEgc+G7sSBwaMO5IGjhu6NwIHbDoCB4w6FjIMSR4buLbmggY8OhYyDEkWnhu4NtIOG6o25oIGjGsOG7n25nLg0KDQojIyMgKio4LjIgVmFpIHRyw7IgdsOgIExpw6puIGvhur90KioNCg0KICBDaMawxqFuZyA4IMSRw7NuZyB2YWkgdHLDsiBsw6AgbeG7mXQgYsaw4bubYyBraeG7g20gdHJhIGNo4bqldCBsxrDhu6NuZyB0aGnhur90IHnhur91IHRyb25nIHF1eSB0csOsbmggbcO0IGjDrG5oIGjDs2EgR0xNLiBOw7MgY3VuZyBj4bqlcCBjw6FjIGvhu7kgdGh14bqtdCDEkeG7gyB4w6FjIHRo4buxYyBjw6FjIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oIMSRw6MgxJHGsOG7o2MgZml0dGVkIGLhurFuZyBjw6FjIHBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyB04burIENoxrDGoW5nIDYgdsOgIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRxrBhIHJhIHN1eSBsdeG6rW4gdHJvbmcgQ2jGsMahbmcgNy4NCiANCiMjICoqQ0jGr8agTkcgOTogTcOUIEjDjE5IIFRVWeG6vk4gVMONTkggVOG7lE5HIFFVw4FUIChHTE0pIE5I4buKIFRI4buoQyAoQklOT01JQUwgR0xNKSoqDQoNCiAgQ2jGsMahbmcgOSB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyB0csOsbmggYsOgeSBjaGkgdGnhur90IE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR0xNKSBuaOG7iyB0aOG7qWMgKEJpbm9taWFsIEdMTSksIG3hu5l0IGxv4bqhaSBHTE0gxJHGsOG7o2MgbcO0IHThuqMgbMOgIHBo4buVIGJp4bq/biBuaOG6pXQgdHJvbmcgdOG6pXQgY+G6oyBjw6FjIGxv4bqhaSBHTE0uIE3hu6VjIHRpw6p1IGNow61uaCBsw6AgaMaw4bubbmcgZOG6q24gbmfGsOG7nWkgxJHhu41jIGPDoWNoIG3DtCBow6xuaCBow7NhIGThu68gbGnhu4d1IHThu7cgbOG7hyAocHJvcG9ydGlvbnMpLCBuxqFpIGThu68gbGnhu4d1IHRodSDEkcaw4bujYyBkxrDhu5tpIGThuqFuZyBz4buRIHRyxrDhu51uZyBo4bujcCAndGjDoG5oIGPDtG5nJyB0csOqbiB04buVbmcgc+G7kSB0aOG7rSBuZ2hp4buHbSDEkeG7mWMgbOG6rXAuIENoxrDGoW5nIG7DoHkgxJFpIHPDonUgdsOgbyBj4bqldSB0csO6YyBj4bunYSBtw7QgaMOsbmgsIGPDoWMgaMOgbSBsacOqbiBr4bq/dCAobGluayBmdW5jdGlvbnMpIHRow7RuZyBk4bulbmcsIGPDoWNoIGRp4buFbiBnaeG6o2kga+G6v3QgcXXhuqMsIHbDoCB0aOG6o28gbHXhuq1uIGPDoWMgduG6pW4gxJHhu4EgdGjhu7FjIHThur8gbmjGsCBwaMOibiB0w6FuIHF1w6EgbeG7qWMgKG92ZXJkaXNwZXJzaW9uKS4gTsOzIMOhcCBk4bulbmcgbMO9IHRodXnhur90IEdMTSB04buVbmcgcXXDoXQgdOG7qyBjw6FjIGNoxrDGoW5nIHRyxrDhu5tjIHbDoG8gbeG7mXQgdHLGsOG7nW5nIGjhu6NwIGPhu6UgdGjhu4MgdsOgIHLhuqV0IGjhu691IMOtY2guDQogIA0KIyMjICoqOS4xIE7hu5lpIGR1bmcgY2jDrW5oKioNCg0KICBO4buZaSBkdW5nIGNow61uaCBj4bunYSBDaMawxqFuZyA5IGJhbyBn4buTbSBjw6FjIGtow6FpIG5p4buHbSBj4buRdCBsw7VpLCBjw6FjIHBoxrDGoW5nIHBow6FwIG3DtCBow6xuaCBow7NhLCB2w6AgY8OhYyB24bqlbiDEkeG7gSBsacOqbiBxdWFuIMSR4bq/biBCaW5vbWlhbCBHTE0uDQoNCiMjIyMgKipDw6FjIEtow6FpIG5p4buHbSB2w6AgTMO9IHRodXnhur90IEPhu5F0IGzDtWk6KioNCiANCiAgROG7ryBsaeG7h3UgxJHGsOG7o2MgbcO0IGjDrG5oIGjDs2EgbMOgIGThu68gbGnhu4d1IHThu7cgbOG7hywgdGjGsOG7nW5nIHBow6F0IHNpbmggdOG7qyBjw6FjIHTDrG5oIGh14buRbmcgY8OzIHPhu5EgbMaw4bujbmcgdGjhu60gbmdoaeG7h20gY+G7kSDEkeG7i25oIHbDoCDEkeG6v20gc+G7kSBs4bqnbiAidGjDoG5oIGPDtG5nIi4NCiANCiAgVGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIGPhu6dhIG3DtCBow6xuaCBsw6AgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyAoQmlub21pYWwgZGlzdHJpYnV0aW9uKSwuIFBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMgbMOgIG3hu5l0IHRow6BuaCB2acOqbiBj4bunYSBo4buNIE3DtCBow6xuaCBQaMOibiB0w6FuIEjDoG0gbcWpIChFeHBvbmVudGlhbCBEaXNwZXJzaW9uIE1vZGVscyAtIEVETSksLiBDw6FjIMSR4bq3YyB0w61uaCBj4bunYSBwaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljIG5oxrAgaMOgbSBwaMawxqFuZyBzYWkgVijOvCkgPSDOvCgxLc68KSwgdGhhbSBz4buRIGNow61uaCB04bqvYyAoY2Fub25pY2FsIHBhcmFtZXRlcikgJM64ID0gbG9nKM68LygxLc68KSkkLCB2w6AgxJHhu5kgbOG7h2NoIMSRxqFuIHbhu4sgKHVuaXQgZGV2aWFuY2UpIMSRxrDhu6NjIGxp4buHdCBrw6ouDQoNCiAgTcO0IGjDrG5oIG5o4buLIHRo4bupYywgbmjGsCBjw6FjIEdMTSBraMOhYywgYmFvIGfhu5NtIG3hu5l0IHRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiB2w6AgbeG7mXQgdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgxJHGsOG7o2MgbGnDqm4ga+G6v3QgYuG7n2kgbeG7mXQgaMOgbSBsacOqbiBr4bq/dC4gVGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgbMOgIGLhu5kgZOG7sSBiw6FvIHR1eeG6v24gdMOtbmggKGxpbmVhciBwcmVkaWN0b3IpLg0KIA0KICBDw6FjIGtow6FpIG5p4buHbSB24buBIFThu7cgbOG7hyBjxrDhu6NjIChPZGRzKSB2w6AgVOG7tyBs4buHIGPGsOG7o2MgY2jDqm5oIGzhu4djaCAoT2RkcyBSYXRpb3MpIGzDoCB0cuG7jW5nIHTDom0gxJHhu4MgZGnhu4VuIGdp4bqjaSBr4bq/dCBxdeG6oyBraGkgc+G7rSBk4bulbmcgaMOgbSBsacOqbiBr4bq/dCBsb2dpdCwuDQogDQogIEjDoG0gbGnDqm4ga+G6v3QgY8WpbmcgY8OzIHRo4buDIMSRxrDhu6NjIGRp4buFbiBnaeG6o2kgdGhlbyBjw6FjaCB0aeG6v3AgY+G6rW4gbmfGsOG7oW5nICh0aHJlc2hvbGQgaW50ZXJwcmV0YXRpb24pLC4NCiANCiMjIyMgKipDw6FjIE3DtCBow6xuaCB2w6AgUGjGsMahbmcgcGjDoXA6KioNCg0KICBNw7QgaMOsbmggY2jDrW5oIGzDoCBCaW5vbWlhbCBHTE0uIE7DsyBjw7MgZOG6oW5nIGvhur90IG7hu5FpIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggKHThu7cgbOG7hyB0aMOgbmggY8O0bmcpIGPhu6dhIGJp4bq/biBwaOG6o24gaOG7k2kgduG7m2kgYuG7mSBk4buxIGLDoW8gdHV54bq/biB0w61uaCB0aMO0bmcgcXVhIGjDoG0gbGnDqm4ga+G6v3QgxJHDoyBjaOG7jW4sLg0KIA0KICBDaMawxqFuZyB0aOG6o28gbHXhuq1uIGPDoWMgaMOgbSBsacOqbiBr4bq/dCBwaOG7lSBiaeG6v24gY2hvIGThu68gbGnhu4d1IHThu7cgbOG7hzoNCiAgDQotIEjDoG0gbGnDqm4ga+G6v3QgTG9naXQgKGxvZ2l0IGxpbmspOiAkbG9nKM68LygxLc68KSkkLiDEkMOieSBsw6AgaMOgbSBsacOqbiBr4bq/dCBjaMOtbmggdOG6r2MgKGNhbm9uaWNhbCBsaW5rKSB2w6AgdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbDrCBjaG8gcGjDqXAgZGnhu4VuIGdp4bqjaSBr4bq/dCBxdeG6oyBk4buFIGTDoG5nIGTGsOG7m2kgZOG6oW5nIHThu7cgbOG7hyBjxrDhu6NjLC4NCiANCi0gSMOgbSBsacOqbiBr4bq/dCBQcm9iaXQgKHByb2JpdCBsaW5rKTogbGnDqm4gcXVhbiDEkeG6v24gcGjDom4gcGjhu5FpIHTDrWNoIGzFqXkgY2h14bqpbiAobm9ybWFsIENERikgdsOgIGPDsyB0aOG7gyDEkcaw4bujYyBkaeG7hW4gZ2nhuqNpIGTGsOG7m2kgZOG6oW5nIG5nxrDhu6FuZywuDQoNCi0gSMOgbSBsacOqbiBr4bq/dCBMb2ctTG9nIGLDuSAoY29tcGxlbWVudGFyeSBsb2ctbG9nIGxpbmspOiBjxaluZyDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSB2w6AgY8OzIHRo4buDIHBow7kgaOG7o3AgY2hvIG3hu5l0IHPhu5EgbG/huqFpIGThu68gbGnhu4d1IG5o4bqldCDEkeG7i25oLCB2w60gZOG7pSB0cm9uZyBwaMOibiB0w61jaCBhc3NheSwuDQoNCiAgQ8OhYyBwaMawxqFuZyBwaMOhcCDGsOG7m2MgbMaw4bujbmcgKHThu6sgQ2jGsMahbmcgNiksIHbDoCBzdXkgbHXhuq1uICh04burIENoxrDGoW5nIDcpLCBjaG8gR0xNIHThu5VuZyBxdcOhdCDEkcaw4bujYyDDoXAgZOG7pW5nLiBUdXkgbmhpw6puLCBjaMawxqFuZyBjw7MgbeG7mXQgY+G6o25oIGLDoW8gduG7gSB2aeG7h2Mga2nhu4NtIMSR4buLbmggV2FsZCAoV2FsZCB0ZXN0cykgY8OzIHRo4buDIHRo4bqldCBi4bqhaSB0cm9uZyBt4buZdCBz4buRIHRyxrDhu51uZyBo4bujcCBj4bunYSBCaW5vbWlhbCBHTE0uDQogDQogIFbhuqVuIMSR4buBIHBow6JuIHTDoW4gcXXDoSBt4bupYyAob3ZlcmRpc3BlcnNpb24pLCBsw6AgbeG7mXQgdHLhu41uZyB0w6JtLCB44bqjeSByYSBraGkgcGjGsMahbmcgc2FpIHF1YW4gc8OhdCDEkcaw4bujYyBs4bubbiBoxqFuIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oIG5o4buLIHRo4bupYy4gQ2jGsMahbmcgOCDEkcOjIGdp4bubaSB0aGnhu4d1IGPDoWMgYmnhu4duIHBow6FwIGto4bqvYyBwaOG7pWMgY2h1bmcgbmjGsCDGr+G7m2MgbMaw4bujbmcgUXVhc2ktTGlrZWxpaG9vZCwgdsOgIENoxrDGoW5nIDkgdGjhuqNvIGx14bqtbiB24buBIHPhu7EgeHXhuqV0IGhp4buHbiBj4bunYSBvdmVyZGlzcGVyc2lvbiB0cm9uZyBCaW5vbWlhbCBHTE0gdsOgIGPDoWMgdMOhYyDEkeG7mW5nIGPhu6dhIG7DsywuDQoNCiAgQ8OhYyBr4bu5IHRodeG6rXQgY2jhuqluIMSRb8OhbiBtw7QgaMOsbmggdOG7qyBDaMawxqFuZyA4IMSRxrDhu6NjIMOhcCBk4bulbmcuIEJp4buDdSDEkeG7kyBwaOG6p24gZMawIChyZXNpZHVhbHMgcGxvdHMpLCDEkeG6t2MgYmnhu4d0IGzDoCBwaOG6p24gZMawIHF1YW50aWxlIChRdWFudGlsZSByZXNpZHVhbHMpLCB2w6AgYmnhu4N1IMSR4buTIFEtUSBjaHXhuqluIChOb3JtYWwgUS1RIHBsb3QpIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSB0cmEgc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCB2w6AgcGjDoXQgaGnhu4duIGPDoWMgduG6pW4gxJHhu4EgbmjGsCBwaMOibiB0w6FuIHF1w6EgbeG7qWMgaG/hurdjIHNhaSBzw7N0IHRyb25nIGPhuqV1IHRyw7pjIGjhu4cgdGjhu5FuZy4gTeG7mXQgxJFp4buDbSBxdWFuIHRy4buNbmcgxJHGsOG7o2MgbmjhuqVuIG3huqFuaCBsw6Aga2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIHThu5VuZyB0aOG7gyAoZ29vZG5lc3Mtb2YtZml0IHRlc3RzKSBraMO0bmcgcGjDuSBo4bujcCBjaG8gZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4gKGJpbmFyeSByZXNwb25zZXMpLCB04bupYyBsw6AgdHLGsOG7nW5nIGjhu6NwIGNo4buJIGPDsyAxIHRo4butIG5naGnhu4dtIGNobyBt4buXaSBxdWFuIHPDoXQgKG09MSksLg0KDQojIyMjICoqVsOtIGThu6UgQ+G7pSB0aOG7gzoqKg0KIA0KICBDaMawxqFuZyBz4butIGThu6VuZyBk4buvIGxp4buHdSB24buBIHRodeG7kWMgZGnhu4d0IGPDtG4gdHLDuW5nIChkZXBvc2l0KSwgxJHhu4MgbWluaCBo4buNYSB2aeG7h2MgZml0dGVkIG3hu5l0IEJpbm9taWFsIEdMTS4gROG7ryBsaeG7h3UgbsOgeSBiYW8gZ+G7k20gdOG7tyBs4buHIGPDtG4gdHLDuW5nIGLhu4sgdGnDqnUgZGnhu4d0IChLaWxsZWQvTnVtYmVyKSBwaOG7pSB0aHXhu5ljIHbDoG8gbMaw4bujbmcgdGh14buRYyAoRGVwb3NpdCkgdsOgIGxv4bqhaSB0aHXhu5FjIChJbnNlY3RpY2lkZSkuDQogDQogIEPDoWMgYmnhu4N1IMSR4buTIGNo4bqpbiDEkW/DoW4gxJHGsOG7o2MgdHLDrG5oIGLDoHkgY2hvIG3DtCBow6xuaCBmaXR0ZWQgdOG7qyBk4buvIGxp4buHdSBuw6B5LCBiYW8gZ+G7k20gYmnhu4N1IMSR4buTIHBo4bqnbiBkxrAgcXVhbnRpbGUgKFF1YW50aWxlIHJlc2lkdWFscykgduG6vSBjaOG7kW5nIGzhuqFpIGPDoWMgZ2nDoSB0cuG7iyDEkcOjIGZpdHRlZCAoZml0dGVkIHZhbHVlcykuIEJp4buDdSDEkeG7kyBuw6B5IGdpw7pwIHRy4buxYyBxdWFuIGjDs2EgbGnhu4d1IHBo4bqnbiBkxrAgY8OzIHBow6JuIHTDoW4gbmfhuqt1IG5oacOqbiB4dW5nIHF1YW5oIDAgdsOgIGPDsyDEkeG7k25nIG5o4bqldCBwaMawxqFuZyBzYWkgaGF5IGtow7RuZywgaOG7lyB0cuG7oyBraeG7g20gdHJhIGdp4bqjIMSR4buLbmggbcO0IGjDrG5oLiBCaeG7g3UgxJHhu5MgbG9nLW9kZHMgKGxvZ2l0KSB24bq9IGNo4buRbmcgbOG6oWkgbG9nKERlcG9zaXQpIGPFqW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIHPhu7EgcGjDuSBo4bujcCBj4bunYSBow6BtIGxpw6puIGvhur90IGxvZ2l0Lg0KICANCiAgROG7ryBsaeG7h3UgduG7gSBz4buxIG7huqN5IG3huqdtIGPhu6dhIGjhuqF0IChnZXJtKSBjxaluZyDEkcaw4bujYyBz4butIGThu6VuZywgdGjhu4MgaGnhu4duIGvhur90IHF14bqjIHBow6JuIHTDrWNoIHBoxrDGoW5nIHNhaSAoQU5PVkEpIHThu6sgbeG7mXQgQmlub21pYWwgR0xNLCBjaG8gdGjhuqV5IGPDoWNoIMSRw6FuaCBnacOhIMSRw7NuZyBnw7NwIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggdsOgbyBtw7QgaMOsbmguDQoNCiAgQuG7mSBk4buvIGxp4buHdSB24buBIHPhu5EgY2EgbeG6r2MgaOG7mWkgY2jhu6luZyBEb3duIChEb3ducyBTeW5kcm9tZSBiaXJ0aHMpIMSRxrDhu6NjIMSRxrBhIHJhIHRyb25nIHBo4bqnbiBiw6BpIHThuq1wIG5oxrAgbeG7mXQgdsOtIGThu6UgZOG7ryBsaeG7h3UgdOG7tyBs4buHIGPDsyB0aOG7gyDEkcaw4bujYyBtw7QgaMOsbmggaMOzYSBi4bqxbmcgQmlub21pYWwgR0xNLg0KDQojIyMgKio5LjIgVmFpIHRyw7IqKg0KDQogIENoxrDGoW5nIDkgxJHDs25nIHZhaSB0csOyIGzDoCDhu6luZyBk4bulbmcgY2h1ecOqbiBzw6J1IMSR4bqndSB0acOqbiBj4bunYSBraHVuZyBsw70gdGh1eeG6v3QgR0xNIHThu5VuZyBxdcOhdCBjaG8gbeG7mXQgbG/huqFpIGThu68gbGnhu4d1IGPhu6UgdGjhu4MgdsOgIHBo4buVIGJp4bq/bjogZOG7ryBsaeG7h3UgdOG7tyBs4buHLC4gTsOzIG1pbmggaOG7jWEgY8OhY2ggY8OhYyBuZ3V5w6puIHThuq9jIGPhu6dhIEdMTSBob+G6oXQgxJHhu5luZyB0cm9uZyB0aOG7sWMgdOG6vyB2w6AgY8OhYyB0aMOhY2ggdGjhu6ljIChuaMawIG92ZXJkaXNwZXJzaW9uKSBjw7MgdGjhu4MgcGjDoXQgc2luaC4NCiAgDQojIyAqKkNIxq/GoE5HIDEwOiBDw4FDIE3DlCBIw4xOSCBDSE8gROG7riBMSeG7hlUgxJDhur5NIC0gTcOUIEjDjE5IIEdMTSBQT0lTU09OIFbDgCBORUdBVElWRSAqKg0KDQogIENoxrDGoW5nIDEwIHThuq1wIHRydW5nIHbDoG8gdmnhu4djIG3DtCBow6xuaCBow7NhIGThu68gbGnhu4d1IMSR4bq/bSAoY291bnQgZGF0YSksIGzDoCBk4buvIGxp4buHdSB0aOG7gyBoaeG7h24gc+G7kSBs4bqnbiB44bqjeSByYSBj4bunYSBt4buZdCBz4buxIGtp4buHbiAodsOtIGThu6U6IHPhu5EgY2EgYuG7h25oLCBz4buRIHPhuqNuIHBo4bqpbSBs4buXaSwgc+G7kSBjdeG7mWMgZ+G7jWkpLiDEkMOieSBsw6AgbG/huqFpIGThu68gbGnhu4d1IHLhu51pIHLhuqFjLCBraMO0bmcgw6JtIHbDoCB0aMaw4budbmcga2jDtG5nIHBow7kgaOG7o3AgduG7m2kgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGNodeG6qW4gZG8gdMOtbmggY2jhuqV0IHbDoCBwaMOibiBwaOG7kWkgY+G7p2EgY2jDum5nLiBN4bulYyB0acOqdSBjaMOtbmggY+G7p2EgY2jGsMahbmcgbMOgIGdp4bubaSB0aGnhu4d1IHbDoCB0csOsbmggYsOgeSBjw6FjaCBz4butIGThu6VuZyBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTSkgduG7m2kgcGjDom4gcGjhu5FpIFBvaXNzb24gKFBvaXNzb24gR0xNKSB2w6AgcGjDom4gcGjhu5FpIE5lZ2F0aXZlIEJpbm9taWFsIChOZWdhdGl2ZSBCaW5vbWlhbCBHTE0pIG5oxrAgY8OhYyBjw7RuZyBj4bulIHBow7kgaOG7o3AgxJHhu4MgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgxJHhur9tLiBDaMawxqFuZyBuw6B5IMSRaSBzw6J1IHbDoG8gY+G6pXUgdHLDumMsIGPDoWNoIGRp4buFbiBnaeG6o2ksIOG7qW5nIGThu6VuZywgdsOgIMSR4bq3YyBiaeG7h3QgbMOgIHjhu60gbMO9IHbhuqVuIMSR4buBIHBow6JuIHTDoW4gcXXDoSBt4bupYyAob3ZlcmRpc3BlcnNpb24pLCBt4buZdCB24bqlbiDEkeG7gSBwaOG7lSBiaeG6v24gdHJvbmcgZOG7ryBsaeG7h3UgxJHhur9tIFBvaXNzb24uDQoNCiMjIyAqKjEwLjEgTuG7mWkgZHVuZyBjaMOtbmgqKg0KDQojIyMjICoqQ8OhYyBLaMOhaSBuaeG7h20gdsOgIEzDvSB0aHV54bq/dCBD4buRdCBsw7VpOioqDQogDQogIEThu68gbGnhu4d1IMSRxrDhu6NjIG3DtCBow6xuaCBow7NhIGzDoCBk4buvIGxp4buHdSDEkeG6v20uDQogDQogIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiBiYW4gxJHhuqd1IGThu7FhIHRyw6puIHBow6JuIHBo4buRaSBQb2lzc29uLiBQaMOibiBwaOG7kWkgUG9pc3NvbiBsw6AgbeG7mXQgdGjDoG5oIHZpw6puIGPhu6dhIGjhu40gTcO0IGjDrG5oIFBow6JuIHTDoW4gSMOgbSBtxakgKEVETSksIHbhu5tpIMSR4bq3YyB0w61uaCBxdWFuIHRy4buNbmcgbMOgIHRydW5nIGLDrG5oIGLhurFuZyBwaMawxqFuZyBzYWkgJChWKM68KSA9IM68KSQuIFRoYW0gc+G7kSBjaMOtbmggdOG6r2MgKGNhbm9uaWNhbCBwYXJhbWV0ZXIpIGNobyBQb2lzc29uIGzDoCAkbG9nKM68KSQuDQogDQogIMSQ4buRaSB24bubaSBk4buvIGxp4buHdSDEkeG6v20gY8OzIHBow6JuIHTDoW4gcXXDoSBt4bupYywgdOG7qWMgbMOgIHBoxrDGoW5nIHNhaSBs4bubbiBoxqFuIHRydW5nIGLDrG5oLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBraMO0bmcgY8OybiBwaMO5IGjhu6NwLiBQaMOibiBwaOG7kWkgTmVnYXRpdmUgQmlub21pYWwgxJHGsOG7o2MgZ2nhu5tpIHRoaeG7h3UgbmjGsCBt4buZdCBs4buxYSBjaOG7jW4gdGhheSB0aOG6vyB2w6wgbsOzIGPDsyBj4bqldSB0csO6YyBwaMawxqFuZyBzYWkgY2hvIHBow6lwIHBoxrDGoW5nIHNhaSBs4bubbiBoxqFuIHRydW5nIGLDrG5oICh2w60gZOG7pTogJFYozrwpID0gzrwgKyDOvMKyL2skKS4NCiANCiAgSMOgbSBsacOqbiBr4bq/dCBwaOG7lSBiaeG6v24gbmjhuqV0IGNobyBk4buvIGxp4buHdSDEkeG6v20gbMOgIGjDoG0gbGnDqm4ga+G6v3QgbG9nIChsb2cgbGluayk6ICRsb2cozrwpID0gzrckLiBIw6BtIGxpw6puIGvhur90IG7DoHkgxJHhuqNtIGLhuqNvIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggZOG7sSDEkW/DoW4gKM68KSBsdcO0biBkxrDGoW5nLCBwaMO5IGjhu6NwIHbhu5tpIGLhuqNuIGNo4bqldCBj4bunYSBk4buvIGxp4buHdSDEkeG6v20sIHbDoCBjaG8gcGjDqXAgZGnhu4VuIGdp4bqjaSBoaeG7h3Ug4bupbmcgY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCBkxrDhu5tpIGThuqFuZyBuaMOibiB0csOqbiBnacOhIHRy4buLIHRydW5nIGLDrG5oLg0KIA0KICBLaMOhaSBuaeG7h20gT2Zmc2V0IMSRxrDhu6NjIGdp4bubaSB0aGnhu4d1LiBPZmZzZXQgbMOgIG3hu5l0IGJp4bq/biB0cm9uZyBi4buZIGThu7EgYsOhbyB0dXnhur9uIHTDrW5oIGPDsyBo4buHIHPhu5EgY+G7kSDEkeG7i25oIGLhurFuZyAxICh0aMaw4budbmcgbMOgIGxvZyBj4bunYSBt4buZdCBiaeG6v24gxJFvIGzGsOG7nW5nICJleHBvc3VyZSIgaG/hurdjICJxdXkgbcO0IiksIHLhuqV0IGjhu691IMOtY2gga2hpIG3DtCBow6xuaCBow7NhIHThu5FjIMSR4buZIChyYXRlcykgKHbDrSBk4bulOiBz4buRIHPhu7Ega2nhu4duIHRyw6puIG3hu5l0IMSRxqFuIHbhu4sgdGjhu51pIGdpYW4gaG/hurdjIGRp4buHbiB0w61jaCkuDQoNCiMjIyMgKipDw6FjIE3DtCBow6xuaCB2w6AgUGjGsMahbmcgcGjDoXA6KioNCiANCiAgUG9pc3NvbiBHTE0gbMOgIG3DtCBow6xuaCBjxqEgYuG6o24gY2hvIGThu68gbGnhu4d1IMSR4bq/bS4gTsOzIG3DtCBow6xuaCBsb2cgY+G7p2EgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBr4buzIHbhu41uZyBj4bunYSBz4buRIMSR4bq/bSAozrwpIG5oxrAgbeG7mXQgaMOgbSB0dXnhur9uIHTDrW5oIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2g6ICRsb2cozrwpID0gzrLigoAgKyDOsuKCgXjigoEgKyAuLi4gKyDOsuKCmnjigpogJC4NCiANCiAgTcO0IGjDrG5oIExvZy1MaW5lYXIgKExvZy1MaW5lYXIgTW9kZWxzKSDEkcaw4bujYyB0csOsbmggYsOgeSBuaMawIG3hu5l0IOG7qW5nIGThu6VuZyBj4bulIHRo4buDIGPhu6dhIFBvaXNzb24gR0xNIMSR4buDIHBow6JuIHTDrWNoIGLhuqNuZyB04bqnbiBzdeG6pXQgKGNvbnRpbmdlbmN5IHRhYmxlcykuIEPDoWMgbcO0IGjDrG5oIG7DoHkgZ2nDunAga2jDoW0gcGjDoSBt4buRaSBxdWFuIGjhu4cgdsOgIHTGsMahbmcgdMOhYyBnaeG7r2EgY8OhYyBiaeG6v24gcGjDom4gbG/huqFpIGLhurFuZyBjw6FjaCBtw7QgaMOsbmggaMOzYSBsb2cgY+G7p2Egc+G7kSDEkeG6v20gdHJvbmcgbeG7l2kgw7QgY+G7p2EgYuG6o25nLg0KIA0KICBOZWdhdGl2ZSBCaW5vbWlhbCBHTE0gxJHGsOG7o2Mgc+G7rSBk4bulbmcga2hpIHBow6F0IGhp4buHbiBwaMOibiB0w6FuIHF1w6EgbeG7qWMuIE7DsyBsw6AgbeG7mXQgbcO0IGjDrG5oIHRoYXkgdGjhur8gY2hvIFBvaXNzb24gR0xNLCBjaG8gcGjDqXAgcGjGsMahbmcgc2FpIGxpbmggaG/huqF0IGjGoW4uDQogDQogIE3DtCBow6xuaCBRdWFzaS1Qb2lzc29uIChRdWFzaS1Qb2lzc29uIE1vZGVscykgbMOgIG3hu5l0IGPDoWNoIGtow6FjIMSR4buDIHjhu60gbMO9IHBow6JuIHTDoW4gcXXDoSBt4bupYyB0cm9uZyBk4buvIGxp4buHdSDEkeG6v20gYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIMaw4bubYyBsxrDhu6NuZyBRdWFzaS1MaWtlbGlob29kLiBQaMawxqFuZyBwaMOhcCBuw6B5IGtow7RuZyBnaeG6oyDEkeG7i25oIG3hu5l0IHBow6JuIHBo4buRaSBj4bulIHRo4buDIG5nb8OgaSBt4buRaSBxdWFuIGjhu4cgdHJ1bmcgYsOsbmgtcGjGsMahbmcgc2FpLg0KIA0KICBDw6FjIGvhu7kgdGh14bqtdCBjaOG6qW4gxJFvw6FuIG3DtCBow6xuaCB04burIENoxrDGoW5nIDggxJHGsOG7o2Mgw6FwIGThu6VuZywgYmFvIGfhu5NtIHPhu60gZOG7pW5nIHBo4bqnbiBkxrAgKHJlc2lkdWFscykgxJHhu4Mga2nhu4NtIHRyYSBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oLiBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgdOG7lW5nIHRo4buDIChHb29kbmVzcy1vZi1maXQgdGVzdHMpIHPhu60gZOG7pW5nIMSR4buZIGzhu4djaCAoZGV2aWFuY2UpIMSRxrDhu6NjIHRo4bqjbyBsdeG6rW4gY2hvIFBvaXNzb24gR0xNcy4NCg0KIyMjIyAqKlbDrSBk4bulIEPhu6UgdGjhu4M6KioNCiANCiAgQ2jGsMahbmcgc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgduG7gSBz4buPaSB0aOG6rW4gKGtpZG5leSBzdG9uZSBkYXRhKSDEkeG7gyBtaW5oIGjhu41hIOG7qW5nIGThu6VuZyBj4bunYSBtw7QgaMOsbmggbG9nLWxpbmVhciBjaG8gYuG6o25nIHThuqduIHN14bqldC4gROG7ryBsaeG7h3UgYmFvIGfhu5NtIHPhu5EgY2EgdGjDoG5oIGPDtG5nL3Ro4bqldCBi4bqhaSBj4bunYSBoYWkgcGjGsMahbmcgcGjDoXAgxJFp4buBdSB0cuG7iyBz4buPaSB0aOG6rW4ga2jDoWMgbmhhdSwgcGjDom4gbG/huqFpIHRoZW8ga8OtY2ggdGjGsOG7m2Mgc+G7j2kuIELhurFuZyBjw6FjaCBmaXR0ZWQgY8OhYyBQb2lzc29uIEdMTSBraMOhYyBuaGF1ICh2w60gZOG7pTogbcO0IGjDrG5oIMSR4buZYyBs4bqtcCBs4bqrbiBuaGF1LCBtw7QgaMOsbmggxJHhu5ljIGzhuq1wIHThu6tuZyBwaOG6p24pLCBjaMawxqFuZyBjaG8gdGjhuqV5IGPDoWNoIHBow6JuIHTDrWNoIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHBoxrDGoW5nIHBow6FwIMSRaeG7gXUgdHLhu4ssIGvDrWNoIHRoxrDhu5tjIHPhu49pIHbDoCBr4bq/dCBxdeG6oyDEkWnhu4F1IHRy4buLLiBWw60gZOG7pSBuw6B5IG1pbmggaOG7jWEgY8OhY2ggUG9pc3NvbiBHTE0gY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSB0cmEgY8OhYyBnaeG6oyDEkeG7i25oIMSR4buZYyBs4bqtcCB0cm9uZyBk4buvIGxp4buHdSB04bqnbiBzdeG6pXQuDQogDQogIEThu68gbGnhu4d1IHBvY2sgKHBvY2sgZGF0YSkgxJHGsOG7o2MgZMO5bmcgxJHhu4MgbWluaCBo4buNYSB24bqlbiDEkeG7gSBwaMOibiB0w6FuIHF1w6EgbeG7qWMgdsOgIGPDoWNoIHPhu60gZOG7pW5nIG3DtCBow6xuaCBOZWdhdGl2ZSBCaW5vbWlhbCBob+G6t2MgUXVhc2ktUG9pc3Nvbi4gROG7ryBsaeG7h3UgbsOgeSBjaG8gdGjhuqV5IHPhu5EgbMaw4bujbmcgcG9jayAoZOG6pXUgduG6v3QgaG/huqF0IMSR4buZbmcgY+G7p2EgdmlydXMpIMSR4bq/bSDEkcaw4bujYyDhu58gY8OhYyDEkeG7mSBwaGEgbG/Do25nIGtow6FjIG5oYXUuIEJp4buDdSDEkeG7kyBjaG8gdGjhuqV5IHBoxrDGoW5nIHNhaSB0xINuZyB0aGVvIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgsIHZpIHBo4bqhbSBnaeG6oyDEkeG7i25oIFBvaXNzb24uIE3DtCBow6xuaCBOZWdhdGl2ZSBCaW5vbWlhbCB2w6AgUXVhc2ktUG9pc3NvbiDEkcaw4bujYyBmaXR0ZWQgdsOgIGPDoWMgYmnhu4N1IMSR4buTIGNo4bqpbiDEkW/DoW4gY2hvIHRo4bqleSBz4buxIHBow7kgaOG7o3AgdOG7kXQgaMahbiBzbyB24bubaSBtw7QgaMOsbmggUG9pc3NvbiBjaHXhuqluLg0KICANCiMjIyAqKjEwLjIgVmFpIHRyw7IqKg0KDQogIENoxrDGoW5nIDEwIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIGNoxrDGoW5nIOG7qW5nIGThu6VuZyBj4buRdCBsw7VpIHNhdSBraGkgdHLDrG5oIGLDoHkgbMO9IHRodXnhur90IEdMTSB04buVbmcgcXXDoXQgKENoxrDGoW5nIDUtOCkuIE7DsyBjdW5nIGPhuqVwIGPDoWMgbcO0IGjDrG5oIHRoaeG6v3QgeeG6v3UgY2hvIG3hu5l0IGxv4bqhaSBk4buvIGxp4buHdSBy4bqldCBwaOG7lSBiaeG6v24gKGThu68gbGnhu4d1IMSR4bq/bSksIG3hu58gcuG7mW5nIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIHbGsOG7o3QgcmEgbmdvw6BpIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGNodeG6qW4uDQogDQojIyAqKkNIxq/GoE5HIDExOiBE4buuIExJ4buGVSBMScOKTiBU4bukQyBExq/GoE5HIC0gTcOUIEjDjE5IIEdMTSBW4buaSSBQSMOCTiBQSOG7kEkgR0FNTUEgVsOAIElOVkVSU0UgR0FVU1NJT04qKg0KDQogIENoxrDGoW5nIDExIHThuq1wIHRydW5nIHbDoG8gdmnhu4djIG3DtCBow6xuaCBow7NhIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcsIHThu6ljIGzDoCBk4buvIGxp4buHdSBjw7MgZ2nDoSB0cuG7iyB0aOG7sWMgdsOgIGx1w7RuIGzhu5tuIGjGoW4gMCAodsOtIGThu6U6IHRo4budaSBnaWFuLCB0cuG7jW5nIGzGsOG7o25nLCBnacOhIHRy4buLIHRp4buBbiB04buHKS4gxJDDonkgbMOgIG3hu5l0IGxv4bqhaSBk4buvIGxp4buHdSBwaOG7lSBiaeG6v24ga2jDtG5nIMSRw6FwIOG7qW5nIGPDoWMgZ2nhuqMgxJHhu4tuaCBj4bunYSBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaHXhuqluLCDEkeG6t2MgYmnhu4d0IGzDoCBnaeG6oyDEkeG7i25oIHbhu4EgcGjDom4gcGjhu5FpIHbDoCBt4buRaSBxdWFuIGjhu4cgdHJ1bmcgYsOsbmgtcGjGsMahbmcgc2FpLiBN4bulYyB0acOqdSBjaMOtbmggY+G7p2EgY2jGsMahbmcgbMOgIGdp4bubaSB0aGnhu4d1IHbDoCBoxrDhu5tuZyBk4bqrbiDDoXAgZOG7pW5nIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR0xNKSBz4butIGThu6VuZyBwaMOibiBwaOG7kWkgR2FtbWEgKEdhbW1hIEdMTSkgdsOgIHBow6JuIHBo4buRaSBJbnZlcnNlIEdhdXNzaWFuIChJbnZlcnNlIEdhdXNzaWFuIEdMTSkgbmjGsCBjw6FjIGPDtG5nIGPhu6UgcGjDuSBo4bujcCBjaG8gbG/huqFpIGThu68gbGnhu4d1IG7DoHkuIENoxrDGoW5nIG7DoHkga2jDoW0gcGjDoSBj4bqldSB0csO6YyBj4bunYSBjw6FjIG3DtCBow6xuaCBuw6B5LCBjw6FjaCBkaeG7hW4gZ2nhuqNpIGvhur90IHF14bqjLCB2w6AgY8OhY2ggw6FwIGThu6VuZyBjw6FjIGvhu7kgdGh14bqtdCBjaOG6qW4gxJFvw6FuIEdMTSB2w6BvIGNow7puZy4NCg0KIyMjICoqMTEuMSBO4buZaSBkdW5nIGNow61uaCoqDQoNCiMjIyMgKipDw6FjIEtow6FpIG5p4buHbSB2w6AgTMO9IHRodXnhur90IEPhu5F0IGzDtWk6KioNCiAgIA0KICBE4buvIGxp4buHdSBwaOG6o24gaOG7k2kgxJHGsOG7o2MgbcO0IGjDrG5oIGjDs2EgbMOgIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcuDQogDQogIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiBj4bunYSBHTE0gY2hvIGxv4bqhaSBk4buvIGxp4buHdSBuw6B5IGThu7FhIHRyw6puIGhhaSBwaMOibiBwaOG7kWkgdOG7qyBo4buNIE3DtCBow6xuaCBQaMOibiB0w6FuIEjDoG0gbcWpIChFRE0pOiBwaMOibiBwaOG7kWkgR2FtbWEgdsOgIHBow6JuIHBo4buRaSBJbnZlcnNlIEdhdXNzaWFuLg0KIA0KICDEkGnhu4NtIGtow6FjIGJp4buHdCBxdWFuIHRy4buNbmcgc28gduG7m2kgcGjDom4gcGjhu5FpIGNodeG6qW4gKMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oKSBsw6AgbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0cnVuZyBiw6xuaCAozrwpIHbDoCBwaMawxqFuZyBzYWkgKCR2YXJbeV0gPSDPhlYozrwpJCkuIMSQ4buRaSB24bubaSBwaMOibiBwaOG7kWkgR2FtbWEsIGjDoG0gcGjGsMahbmcgc2FpIGzDoCAkVijOvCkgPSDOvMKyJCwgbmfhu6Ugw70gaOG7hyBz4buRIGJp4bq/biB0aGnDqm4gJENWID0g4oiadmFyW3ldL868JCBsw6AgaOG6sW5nIHPhu5EuIMSQ4buRaSB24bubaSBwaMOibiBwaOG7kWkgSW52ZXJzZSBHYXVzc2lhbiwgaMOgbSBwaMawxqFuZyBzYWkgbMOgICRWKM68KSA9IM68wrMkDQogDQogIFRoYW0gc+G7kSBwaMOibiB0w6FuICgkXHBoaSQpIGzDoCBt4buZdCB0aMOgbmggcGjhuqduIGPhu6dhIG3DtCBow6xuaCwg4bqjbmggaMaw4bufbmcgxJHhur9uIHBoxrDGoW5nIHNhaSBuaMawbmcga2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmcgYuG7n2kgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCB0cuG7sWMgdGnhur9wLiBWaeG7h2MgxrDhu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBuw6B5IGzDoCBt4buZdCBwaOG6p24gcXVhbiB0cuG7jW5nIGPhu6dhIHZp4buHYyBmaXR0ZWQgbcO0IGjDrG5oLg0KIA0KICBDw6FjIGjDoG0gbGnDqm4ga+G6v3QgcGjhu5UgYmnhur9uIMSRxrDhu6NjIHPhu60gZOG7pW5nIGJhbyBn4buTbSBow6BtIGxpw6puIGvhur90IGxvZyAobG9nIGxpbmspICgkzrcgPSBsb2cgzrwkKSwgaMOgbSBsacOqbiBr4bq/dCBpZGVudGl0eSAoJM63ID0gzrwkKSwgdsOgIGjDoG0gbGnDqm4ga+G6v3QgaW52ZXJzZSAoJM63ID0gMS/OvCQpLiBIw6BtIGxpw6puIGvhur90IGxvZyDEkeG6o20gYuG6o28gZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBk4buxIMSRb8OhbiBsdcO0biBkxrDGoW5nIHbDoCBjaG8gcGjDqXAgZGnhu4VuIGdp4bqjaSBoaeG7h3Ug4bupbmcgY+G7p2EgYmnhur9uIGdp4bqjaSB0aMOtY2ggZMaw4bubaSBk4bqhbmcgbmjDom4gdHLDqm4gdHJ1bmcgYsOsbmguIEjDoG0gbGnDqm4ga+G6v3QgbG9nIGzDoCBow6BtIGxpw6puIGvhur90IGNow61uaCB04bqvYyAoY2Fub25pY2FsIGxpbmspIGNobyBwaMOibiBwaOG7kWkgR2FtbWEsIHbDoCBow6BtIGxpw6puIGvhur90IGludmVyc2UgbMOgIGNow61uaCB04bqvYyBjaG8gcGjDom4gcGjhu5FpIEludmVyc2UgR2F1c3NpYW4uDQogDQojIyMjICoqQ8OhYyBNw7QgaMOsbmggdsOgIFBoxrDGoW5nIHBow6FwOioqDQogDQogIEdhbW1hIEdMTSDEkcaw4bujYyBz4butIGThu6VuZyBraGkgZOG7ryBsaeG7h3UgY8OzIHTDrW5oIGNo4bqldCBtw6AgcGjGsMahbmcgc2FpIHTEg25nIHThu7cgbOG7hyB0aHXhuq1uIHbhu5tpIGLDrG5oIHBoxrDGoW5nIGPhu6dhIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgsIGhv4bq3YyBraGkgaOG7hyBz4buRIGJp4bq/biB0aGnDqm4gxJHGsOG7o2MgZ2nhuqMgxJHhu4tuaCBsw6AgZ+G6p24gbmjGsCBo4bqxbmcgc+G7kS4NCiANCiAgSW52ZXJzZSBHYXVzc2lhbiBHTE0gxJHGsOG7o2Mgc+G7rSBk4bulbmcga2hpIHBoxrDGoW5nIHNhaSB0xINuZyB04bu3IGzhu4cgdGh14bqtbiB24bubaSBsxal5IHRo4burYSBi4bqtYyBiYSBj4bunYSBnacOhIHRy4buLIHRydW5nIGLDrG5oLCBob+G6t2MgZOG7sWEgdHLDqm4gY8ahIHPhu58gbMO9IHRodXnhur90IGNobyBjw6FjIHF1w6EgdHLDrG5oIG5oxrAgdGjhu51pIGdpYW4gY2jhu50gxJHhu6NpIChoaXR0aW5nIHRpbWVzKS4NCiANCiAgQ2jGsMahbmcgbsOgeSB0aOG6o28gbHXhuq1uIHZp4buHYyBs4buxYSBjaOG7jW4gaMOgbSBsacOqbiBr4bq/dCBwaMO5IGjhu6NwIGThu7FhIHRyw6puIGLhuqNuIGNo4bqldCBk4buvIGxp4buHdSB2w6AgbeG7pWMgdGnDqnUgcGjDom4gdMOtY2guDQogDQogIEPDoWMgcGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBtw7QgaMOsbmggxJHGsOG7o2MgZOG7sWEgdHLDqm4gbmd1ecOqbiBsw70gxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSB04buRaSDEkWEgKE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uIC0gTUxFKSBob+G6t2MgUXVhc2ktTGlrZWxpaG9vZCwgxJHDoyDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSB0cm9uZyBjw6FjIGNoxrDGoW5nIHRyxrDhu5tjIChDaMawxqFuZyA2LCA4KS4NCiAgDQogIEtp4buDbSB0cmEgZ2nhuqMgxJHhu4tuaCBtw7QgaMOsbmggdsOgIGNo4bqpbiDEkW/DoW4gxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBi4bqxbmcgY8OhY2ggc+G7rSBk4bulbmcgY8OhYyBr4bu5IHRodeG6rXQgxJHDoyB0csOsbmggYsOgeSB0cm9uZyBDaMawxqFuZyA4IChEaWFnbm9zdGljcykuIMSQaeG7gXUgbsOgeSBiYW8gZ+G7k20gdmnhu4djIHPhu60gZOG7pW5nIGPDoWMgbG/huqFpIHBo4bqnbiBkxrAga2jDoWMgbmhhdSAoZGV2aWFuY2UgcmVzaWR1YWxzLCBQZWFyc29uIHJlc2lkdWFscywgcXVhbnRpbGUgcmVzaWR1YWxzKSB2w6AgY8OhYyBiaeG7g3UgxJHhu5MgY2jhuqluIMSRb8OhbiDEkeG7gyBraeG7g20gdHJhIHPhu7EgcGjDuSBo4bujcCBj4bunYSB0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gdsOgIHRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nLg0KDQojIyMjICoqVsOtIGThu6UgQ+G7pSB0aOG7gzoqKg0KICANCiAgQ2jGsMahbmcgc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgduG7gSB0w61uaCB0aOG6pW0gY+G7p2EgduG6rXQgbGnhu4d1IHjDonkgZOG7sW5nIChwZXJtIGRhdGEpIGzDoG0gdHLGsOG7nW5nIGjhu6NwIG5naGnDqm4gY+G7qXUgKENhc2UgU3R1ZHkgMSkuIEThu68gbGnhu4d1IG7DoHkgxJFvIGzGsOG7nW5nIHTDrW5oIHRo4bqlbSAobeG7mXQgZ2nDoSB0cuG7iyBsacOqbiB04bulYyBkxrDGoW5nKSBj4bunYSBjw6FjIHThuqVtIHbhuq10IGxp4buHdS4gQmnhu4N1IMSR4buTIGPhu6dhIGThu68gbGnhu4d1IGNobyB0aOG6pXkgcsO1IHLDoG5nIHBoxrDGoW5nIHNhaSB0xINuZyB0aGVvIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgsIGNobyB0aOG6pXkgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGNodeG6qW4ga2jDtG5nIHBow7kgaOG7o3AuIE3DtCBow6xuaCBJbnZlcnNlIEdhdXNzaWFuIMSRxrDhu6NjIMSR4buBIHh14bqldCBk4buxYSB0csOqbiBjxqEgc+G7nyBsw70gdGh1eeG6v3QgduG7gSBjaHV54buDbiDEkeG7mW5nIEJyb3duIGPhu6dhIGPDoWMgaOG6oXQgcXVhIHbhuq10IGxp4buHdS4gVmnhu4djIGZpdHRlZCBt4buZdCBJbnZlcnNlIEdhdXNzaWFuIEdMTSB24bubaSBow6BtIGxpw6puIGvhur90IGxvZyB2w6AgZGnhu4VuIGdp4bqjaSBo4buHIHPhu5EgY2hvIGJp4bq/biBNYWNoaW5lIG1pbmggaOG7jWEgY8OhY2ggw6FwIGThu6VuZyB2w6AgZGnhu4VuIGdp4bqjaSBr4bq/dCBxdeG6oyBjaG8gbG/huqFpIGThu68gbGnhu4d1IG7DoHkuIFbDrSBk4bulIG7DoHkgbmjhuqVuIG3huqFuaCB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2Egdmnhu4djIGtp4buDbSB0cmEgbeG7kWkgcXVhbiBo4buHIHRydW5nIGLDrG5oLXBoxrDGoW5nIHNhaSDEkeG7gyBjaOG7jW4gbcO0IGjDrG5oIEdMTSBwaMO5IGjhu6NwLg0KIA0KICBUcsaw4budbmcgaOG7o3AgbmdoacOqbiBj4bupdSB0aOG7qSBoYWkgc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgbsSDbmcgc3XhuqV0IHbDoCBt4bqtdCDEkeG7mSAoeWllbGRkZW4gZGF0YSkgxJHhu4MgbWluaCBo4buNYSB2aeG7h2Mgc+G7rSBk4bulbmcgR2FtbWEgR0xNLiBE4buvIGxp4buHdSBiYW8gZ+G7k20gWWllbGQgdsOgIERlbnMsIHbDoCBiaeG6v24gcGjhuqNuIGjhu5NpIMSRxrDhu6NjIHhlbSB4w6l0IGzDoCBZaWVsZCAqIERlbnMuIE3hu5l0IG3DtCBow6xuaCBz4butIGThu6VuZyBwaMOibiBwaOG7kWkgR2FtbWEgduG7m2kgaMOgbSBsacOqbiBr4bq/dCBpbnZlcnNlIMSRxrDhu6NjIGZpdHRlZCwgZOG7sWEgdHLDqm4gbeG7mXQgbcO0IGjDrG5oIGzDvSB0aHV54bq/dC4gQuG6o25nIEFOT1ZBIGNobyB0aOG6pXkgc+G7sSDEkcOzbmcgZ8OzcCBj4bunYSBjw6FjIGJp4bq/biB2w6BvIG3DtCBow6xuaC4NCiAgDQojIyMjICoqVmFpIHRyw7IqKg0KDQogIENoxrDGoW5nIDExIMSRw7NuZyB2YWkgdHLDsiBsw6AgbeG7mXQgdHJvbmcgbmjhu69uZyBjaMawxqFuZyDhu6luZyBk4bulbmcgY2jDrW5oIGPhu6dhIGtodcO0biBraOG7lSBHTE0sIHThuq1wIHRydW5nIHbDoG8gbG/huqFpIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcsIGLhu5Ugc3VuZyB2w6BvIGPDoWMg4bupbmcgZOG7pW5nIGNobyBk4buvIGxp4buHdSBuaOG7iyBwaMOibiAoQ2jGsMahbmcgOSkgdsOgIGThu68gbGnhu4d1IMSR4bq/bSAoQ2jGsMahbmcgMTApLiBOw7MgbWluaCBo4buNYSBjw6FjaCDDoXAgZOG7pW5nIGzDvSB0aHV54bq/dCBHTE0gdOG7lW5nIHF1w6F0IHbDoG8gY8OhYyB0w6xuaCBodeG7kW5nIGPhu6UgdGjhu4MgduG7m2kgY8OhYyDEkeG6t2MgxJFp4buDbSBk4buvIGxp4buHdSBraMOhYyBuaGF1Lg0KDQojIyAqKkNIxq/GoE5HIDEyOiBQSMOCTiBQSOG7kEkgVFdFRURJRSAoVFdFRURJRSBHTE0pKioNCg0KICBDaMawxqFuZyAxMiBt4bufIHLhu5luZyBwaOG6oW0gdmkgY+G7p2EgY8OhYyBNw7QgaMOsbmggVHV54bq/biB0w61uaCBU4buVbmcgcXXDoXQgKEdMTSkgYuG6sW5nIGPDoWNoIGdp4bubaSB0aGnhu4d1IEdMTSBk4buxYSB0csOqbiBQaMOibiBwaOG7kWkgVHdlZWRpZSAoVHdlZWRpZSBHTE0pLiBUcm9uZyBraGkgY8OhYyBjaMawxqFuZyB0csaw4bubYyDEkcOjIHThuq1wIHRydW5nIHbDoG8gY8OhYyBwaMOibiBwaOG7kWkgY+G7pSB0aOG7gyBuaMawIEJpbm9taWFsIChDaMawxqFuZyA5KSwgUG9pc3NvbiB2w6AgTmVnYXRpdmUgQmlub21pYWwgKENoxrDGoW5nIDEwKSwgR2FtbWEgdsOgIEludmVyc2UgR2F1c3NpYW4gKENoxrDGoW5nIDExKSwgQ2jGsMahbmcgMTIgY3VuZyBj4bqlcCBt4buZdCBraHXDtG4ga2jhu5UgdGjhu5FuZyBuaOG6pXQgY2hvIG5oaeG7gXUgbG/huqFpIGThu68gbGnhu4d1IHBo4bqjbiBo4buTaSwgxJHhurdjIGJp4buHdCBsw6Agbmjhu69uZyBk4buvIGxp4buHdSBtw6AgcGjGsMahbmcgc2FpIGPDsyBt4buRaSBxdWFuIGjhu4cgaMOgbSBtxakgduG7m2kgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCwgxJHGsOG7o2MgbcO0IHThuqMgYuG7n2kgaMOgbSBwaMawxqFuZyBzYWkgJFYoXG11KSA9IFxtdV5ceGkkLiBN4bulYyB0acOqdSBjaMOtbmggY+G7p2EgY2jGsMahbmcgbMOgIHRyw6xuaCBiw6B5IGPhuqV1IHRyw7pjIGPhu6dhIFBow6JuIHBo4buRaSBUd2VlZGllIG5oxrAgbeG7mXQgbcO0IGjDrG5oIHBow6JuIHTDoW4gaMOgbSBtxakgKEVETSksIGtow6FtIHBow6EgY8OhY2ggY8OhYyBwaMOibiBwaOG7kWkgcGjhu5UgYmnhur9uIGtow6FjIGzDoCBjw6FjIHRyxrDhu51uZyBo4bujcCDEkeG6t2MgYmnhu4d0IGPhu6dhIG7DsywgdsOgIGjGsOG7m25nIGThuqtuIGPDoWNoIMaw4bubYyBsxrDhu6NuZyB2w6Agw6FwIGThu6VuZyBUd2VlZGllIEdMTSwgYmFvIGfhu5NtIGPhuqMgdmnhu4djIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY2jhu4kgbeG7pWMgJFx4aSQuDQoNCiMjIyAqKjEyLjEgTuG7mWkgZHVuZyBjaMOtbmgqKg0KDQojIyMjICoqQ8OhYyBLaMOhaSBuaeG7h20gdsOgIEzDvSB0aHV54bq/dCBD4buRdCBsw7VpOioqDQogDQogIFBow6JuIHBo4buRaSBUd2VlZGllIGzDoCBt4buZdCBo4buNIGPDoWMgbcO0IGjDrG5oIHBow6JuIHTDoW4gaMOgbSBtxakgKEVETSkuDQogDQogIMSQ4bq3YyDEkWnhu4NtIHjDoWMgxJHhu4tuaCBj4bunYSBQaMOibiBwaOG7kWkgVHdlZWRpZSBsw6AgaMOgbSBwaMawxqFuZyBzYWkgJFYoXG11KSQgY8OzIGThuqFuZyAkVihcbXUpID0gXG11Xlx4aSQsIHRyb25nIMSRw7MgJFxtdSQgbMOgIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggdsOgICRceGkkICh4aSkgbMOgIHRoYW0gc+G7kSBjaOG7iSBt4bulYyAoaW5kZXggcGFyYW1ldGVyKS4NCiAgDQogIFRoYW0gc+G7kSBjaOG7iSBt4bulYyAkXHhpJCBxdXnhur90IMSR4buLbmggaMOsbmggZOG6oW5nIHbDoCB0w61uaCBjaOG6pXQgY+G7p2EgcGjDom4gcGjhu5FpLiBDw6FjIGdpw6EgdHLhu4sgY+G7pSB0aOG7gyBj4bunYSAkXHhpJCB0xrDGoW5nIOG7qW5nIHbhu5tpIGPDoWMgcGjDom4gcGjhu5FpIMSRw6MgYmnhur90Og0KDQotICRceGkgPSAxJCBsw6AgUGjDom4gcGjhu5FpIFBvaXNzb24gKGtoaSB0aGFtIHPhu5EgcGjDom4gdMOhbiAkXHBoaSA9IDEkKS4NCiANCi0gJFx4aSA9IDIkIGzDoCBQaMOibiBwaOG7kWkgR2FtbWEuDQoNCi0gJFx4aSA9IDMkIGzDoCBQaMOibiBwaOG7kWkgSW52ZXJzZSBHYXVzc2lhbi4NCg0KQ8OhYyBnacOhIHRy4buLICRceGkkIGtow6FjIGNobyBwaMOpcCBtw7QgaMOsbmggaMOzYSBjw6FjIG3hu5FpIHF1YW4gaOG7hyB0cnVuZyBiw6xuaC1waMawxqFuZyBzYWkgxJFhIGThuqFuZyBoxqFuLg0KDQogIENoxrDGoW5nIHRo4bqjbyBsdeG6rW4gduG7gSBj4bqldSB0csO6YyBj4bunYSBUd2VlZGllIEVETSwgYmFvIGfhu5NtIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgdGhhbSBz4buRIGNow61uaCB04bqvYyAkXHRoZXRhJCB2w6AgaMOgbSB0w61jaCBsxal5IChjdW11bGFudCBmdW5jdGlvbikgJFxrYXBwYShcdGhldGEpJCBk4buxYSB0csOqbiAkXHhpJC4gTsOzIGzGsHUgw70gcuG6sW5nIFBow6JuIHBo4buRaSBUd2VlZGllIGzDoCBFRE0gbuG6v3UgJFx4aSQgxJHGsOG7o2MgYmnhur90IHRyxrDhu5tjLg0KDQojIyMjICoqQ8OhYyBNw7QgaMOsbmggdsOgIFBoxrDGoW5nIHBow6FwOioqDQogDQogIFR3ZWVkaWUgR0xNIMSRxrDhu6NjIHjDonkgZOG7sW5nIGLhurFuZyBjw6FjaCBz4butIGThu6VuZyBQaMOibiBwaOG7kWkgVHdlZWRpZSBsw6BtIHRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiwga+G6v3QgaOG7o3AgduG7m2kgdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKGxpbmVhciBwcmVkaWN0b3IpIHRow7RuZyBxdWEgaMOgbSBsacOqbiBr4bq/dC4gSMOgbSBsacOqbiBr4bq/dCBjaMOtbmggdOG6r2MgKGNhbm9uaWNhbCBsaW5rKSBjaG8gUGjDom4gcGjhu5FpIFR3ZWVkaWUgcGjhu6UgdGh14buZYyB2w6BvIGdpw6EgdHLhu4sgY+G7p2EgJFx4aSQuDQogIA0KICDEkGnhu4NtIMSR4bq3YyBiaeG7h3QgY+G7p2EgVHdlZWRpZSBHTE0gc28gduG7m2kgY8OhYyBHTE0gY+G7pSB0aOG7gyAoJFx4aSQgY+G7kSDEkeG7i25oKSBsw6Aga2jhuqMgbsSDbmcgxrDhu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBjaOG7iSBt4bulYyAkXHhpJCB04burIGThu68gbGnhu4d1LiBDw6FjIHBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyAkXHhpJCDEkcaw4bujYyB0csOsbmggYsOgeSBjaGkgdGnhur90IChN4bulYyAxMi4zLjIpLg0KIA0KICBWaeG7h2MgxrDhu5tjIGzGsOG7o25nIGPDoWMgdGhhbSBz4buRIG3DtCBow6xuaCBraMOhYyAoaOG7hyBz4buRIGjhu5NpIHF1eSAkXGJldGEkIHbDoCB0aGFtIHPhu5EgcGjDom4gdMOhbiAkXHBoaSQpIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gYuG6sW5nIGPDoWMga+G7uSB0aHXhuq10IMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gdOG7kWkgxJFhIChNTEUpIGhv4bq3YyBRdWFzaS1MaWtlbGlob29kLCB0xrDGoW5nIHThu7EgbmjGsCBjw6FjIEdMTSBraMOhYywgZOG7sWEgdHLDqm4gZnJhbWV3b3JrIMSRw6MgaOG7jWMgdHJvbmcgQ2jGsMahbmcgNi4gUXV5IHRyw6xuaCBmaXR0ZWQgVHdlZWRpZSBHTE0gxJHGsOG7o2MgbcO0IHThuqMgdHJvbmcgTeG7pWMgMTIuMy4zLg0KIA0KICBUd2VlZGllIEdMTSDEkeG6t2MgYmnhu4d0IGjhu691IMOtY2ggY2hvIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcsIGJhbyBn4buTbSBj4bqjIHRyxrDhu51uZyBo4bujcCBjw7MgY8OhYyBnacOhIHRy4buLIGLhurFuZyAwIGNow61uaCB4w6FjLiDEkMOieSBsw6AgbG/huqFpIGThu68gbGnhu4d1IHBo4buVIGJp4bq/biB0cm9uZyBjw6FjIGzEqW5oIHbhu7FjIG5oxrAgYuG6o28gaGnhu4NtICh2w60gZOG7pTogc+G7kSB0aeG7gW4gecOqdSBj4bqndSBi4buTaSB0aMaw4budbmcsIGPDsyB0aOG7gyBi4bqxbmcgMCksIG7GoWkgbcO0IGjDrG5oIENvbXBvdW5kIFBvaXNzb24tR2FtbWEgKCRceGkkIHRyb25nIGtob+G6o25nICgxLCAyKSkgdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIFtraMO0bmcgdHLhu7FjIHRp4bq/cCB0cm9uZyBuZ3Xhu5NuLCBuaMawbmcgc3V5IHJhIHThu6sgdmnhu4djIFR3ZWVkaWUgKDEsMikgYmFvIGfhu5NtIDAgdsOgIGxpw6puIHThu6VjXS4NCg0KIyMjIyAqKlbDrSBk4bulIEPhu6UgdGjhu4M6KioNCg0KICBDaMawxqFuZyBiYW8gZ+G7k20gY8OhYyB0csaw4budbmcgaOG7o3AgbmdoacOqbiBj4bupdSAoQ2FzZSBTdHVkaWVzKSAoTeG7pWMgMTIuNCkuIE3hu5l0IHbDrSBk4bulIGto4bqjIGTEqSAoxJHGsOG7o2MgZ+G7o2kgw70gYuG7n2kgYuG6o25nIGThu68gbGnhu4d1IHRyb25nIG5ndeG7k24pIGzDoCBk4buvIGxp4buHdSB24buBIHZp4buHYyBz4butIGThu6VuZyBwb2x5dGhlbmUgdsOgIGRvYW5oIHRodSBj4bunYSBjw6FjIGPDtG5nIHR5IG3hu7kgcGjhuqltIOG7nyBBbmggKFByb2JsZW0gMTIuMTAgLyBUYWJsZSAxMi40KS4gROG7ryBsaeG7h3UgbsOgeSBjw7MgdGjhu4MgY2jhu6lhIGPDoWMgZ2nDoSB0cuG7iyBi4bqxbmcgMCAobeG7mXQgc+G7kSBjw7RuZyB0eSBraMO0bmcgc+G7rSBk4bulbmcgcG9seXRoZW5lIGhv4bq3YyBjw7MgZG9hbmggdGh1IGLhurFuZyAwIHRyb25nIG3hu5l0IGdpYWkgxJFv4bqhbiksIMSR4buTbmcgdGjhu51pIGPDoWMgZ2nDoSB0cuG7iyBkxrDGoW5nIGzDoCBsacOqbiB04bulYy4NCg0KICBWaeG7h2MgbcO0IGjDrG5oIGjDs2EgZOG7ryBsaeG7h3UgbsOgeSBi4bqxbmcgVHdlZWRpZSBHTE0gY2hvIHBow6lwIHBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gcGjhuqNuIGjhu5NpICh2w60gZOG7pTogUG9seXRoZW5lIHVzZSkgdsOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggKHbDrSBk4bulOiBUdXJub3ZlciksIMSR4buTbmcgdGjhu51pIHjhu60gbMO9IGhp4buHdSBxdeG6oyBz4buxIGhp4buHbiBkaeG7h24gY+G7p2EgY+G6oyBnacOhIHRy4buLIDAgdsOgIGdpw6EgdHLhu4sgZMawxqFuZyBsacOqbiB04bulYyB0cm9uZyBiaeG6v24gcGjhuqNuIGjhu5NpLiDEkGnhu4F1IG7DoHkgbWluaCBo4buNYSBraOG6oyBuxINuZyBj4bunYSBUd2VlZGllIEdMTSB0cm9uZyB2aeG7h2MgeOG7rSBsw70gY8OhYyBj4bqldSB0csO6YyBk4buvIGxp4buHdSBwaOG7qWMgdOG6oXAgbcOgIGPDoWMgR0xNIHRydXnhu4FuIHRo4buRbmcgKG5oxrAgUG9pc3NvbiBjaG8gc+G7kSDEkeG6v20gcuG7nWkgcuG6oWMgaG/hurdjIEdhbW1hIGNobyBnacOhIHRy4buLIGTGsMahbmcgbGnDqm4gdOG7pWMpIGtow7RuZyBwaMO5IGjhu6NwIG3hu5l0IGPDoWNoIHRy4buxYyB0aeG6v3AuDQogIA0KIyMjICoqMTIuMiBWYWkgdHLDsioqDQoNCiAgQ2jGsMahbmcgMTIgxJHDs25nIHZhaSB0csOyIGzDoCBjaMawxqFuZyB04buVbmcgaOG7o3AgdsOgIG3hu58gcuG7mW5nIHRyb25nIGPhuqV1IHRyw7pjIHTDoGkgbGnhu4d1LCBtYW5nIMSR4bq/biBt4buZdCBjw6FpIG5ow6xuIHRo4buRbmcgbmjhuqV0IHbhu4Egbmhp4buBdSBwaMOibiBwaOG7kWkga2jDoWMgbmhhdSBkxrDhu5tpIGPDuW5nIG3hu5l0IG3DoWkgbmjDoCBUd2VlZGllLiBOw7MgZ2nhu5tpIHRoaeG7h3UgbeG7mXQgY8O0bmcgY+G7pSBt4bqhbmggbeG6vSB2w6AgbGluaCBob+G6oXQgY2hvIHBow6lwIG3DtCBow6xuaCBow7NhIG3hu5l0IHBo4bqhbSB2aSBy4buZbmcgaMahbiBjw6FjIGxv4bqhaSBk4buvIGxp4buHdSBzbyB24bubaSBjw6FjIEdMTSDEkcOjIHRo4bqjbyBsdeG6rW4gdHLGsOG7m2MgxJHDsywgxJHhurdjIGJp4buHdCBsw6AgZOG7ryBsaeG7h3UgbGnDqm4gdOG7pWMgZMawxqFuZyBjw7MgaG/hurdjIGtow7RuZyBjw7MgZ2nDoSB0cuG7iyAwLg0KICBDaMawxqFuZyBuw6B5IGThu7FhIHRyw6puIG7hu4FuIHThuqNuZyBj4bunYSB0b8OgbiBi4buZIGtodcO0biBraOG7lSBHTE0gxJHDoyDEkcaw4bujYyB4w6J5IGThu7FuZzoNCg0KLSBD4bqldSB0csO6YyBHTE0gKENoxrDGoW5nIDUpOiDEkOG7i25oIG5naMSpYSBFRE0gdsOgIGPhuqV1IHRyw7pjIGNodW5nIGPhu6dhIEdMTS4gVHdlZWRpZSDEkcaw4bujYyB0csOsbmggYsOgeSBuaMawIG3hu5l0IGjhu40gRURNIHF1YW4gdHLhu41uZy4NCiANCi0gxq/hu5tjIGzGsOG7o25nIEdMTSAoQ2jGsMahbmcgNik6IEPDoWMgcGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIChNTEUsIFF1YXNpLUxpa2VsaWhvb2QpIGzDoCBjxqEgc+G7nyDEkeG7gyBmaXR0ZWQgVHdlZWRpZSBHTE0gdsOgIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSAkXGJldGEkIHbDoCAkXHBoaSQuDQogDQotIFN1eSBsdeG6rW4gR0xNIChDaMawxqFuZyA3KTogQ8OhYyBr4bu5IHRodeG6rXQga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgdsOgIGtob+G6o25nIHRpbiBj4bqteSDEkcaw4bujYyDDoXAgZOG7pW5nIMSR4buDIGRp4buFbiBnaeG6o2kga+G6v3QgcXXhuqMgY+G7p2EgVHdlZWRpZSBHTE0uDQoNCi0gQ2jhuqluIMSRb8OhbiBHTE0gKENoxrDGoW5nIDgpOiBN4bq3YyBkw7kga2jDtG5nIMSRxrDhu6NjIGNoaSB0aeG6v3QgdHJvbmcgY8OhYyDEkW/huqFuIHRyw61jaCB24buBIENoxrDGoW5nIDEyLCBjw6FjIGvhu7kgdGh14bqtdCBjaOG6qW4gxJFvw6FuIHThu5VuZyBxdcOhdCB04burIENoxrDGoW5nIDggbMOgIGPhuqduIHRoaeG6v3QgxJHhu4MgxJHDoW5oIGdpw6Egc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBUd2VlZGllLiBLaMOhaSBuaeG7h20gUXVhc2ktTGlrZWxpaG9vZCB04burIENoxrDGoW5nIDggY8WpbmcgbGnDqm4gcXVhbiDEkeG6v24gdmnhu4djIMaw4bubYyBsxrDhu6NuZyAkXHBoaSQgDQoNCiMjICoqQ0jGr8agTkcgMTM6IELDgEkgVOG6rFAgQuG7lCBTVU5HICoqDQogDQogIENoxrDGoW5nIDEzLCBtYW5nIHRpw6p1IMSR4buBICJFeHRyYSBQcm9ibGVtcyIsIGtow7RuZyBnaeG7m2kgdGhp4buHdSBsw70gdGh1eeG6v3QgbeG7m2kgbcOgIMSRw7NuZyB2YWkgdHLDsiBsw6AgbeG7mXQgdOG6rXAgaOG7o3AgY8OhYyBiw6BpIHThuq1wIHbDoCBuZ2hpw6puIGPhu6l1IMSRaeG7g24gaMOsbmggYuG7lSBzdW5nLiBN4bulYyB0acOqdSBjaMOtbmggY+G7p2EgY2jGsMahbmcgbsOgeSBsw6AgY3VuZyBj4bqlcCBjaG8gbmfGsOG7nWkgxJHhu41jIGPGoSBo4buZaSDEkeG7gyB24bqtbiBk4bulbmcgdsOgIGPhu6duZyBj4buRIGtp4bq/biB0aOG7qWMgxJHDoyBo4buNYyB24buBIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR0xNKSB04burIGPDoWMgY2jGsMahbmcgdHLGsOG7m2MsIHRow7RuZyBxdWEgdmnhu4djIGdp4bqjaSBxdXnhur90IGPDoWMgduG6pW4gxJHhu4EgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGjhu7FjIHThur8uIENoxrDGoW5nIG5o4bqlbiBt4bqhbmggdsOgbyB2aeG7h2Mg4bupbmcgZOG7pW5nIHRo4buxYyBow6BuaCBjw6FjIHBoxrDGoW5nIHBow6FwIHbDoCBtw7QgaMOsbmggR0xNIMSRw6MgxJHGsOG7o2MgdHLDrG5oIGLDoHksIGNobyBwaMOpcCBuZ8aw4budaSDEkeG7jWMgbMOgbSBxdWVuIHbhu5tpIHZp4buHYyB44butIGzDvSBjw6FjIGxv4bqhaSBk4buvIGxp4buHdSDEkWEgZOG6oW5nIHbDoCBkaeG7hW4gZ2nhuqNpIGvhur90IHF14bqjIG3DtCBow6xuaC4NCg0KIyMjICoqMTMuMSBO4buZaSBkdW5nIGNow61uaCAqKg0KDQogIENoxrDGoW5nIDEzIGtow7RuZyBnaeG7m2kgdGhp4buHdSBjw6FjIGtow6FpIG5p4buHbSBob+G6t2MgbMO9IHRodXnhur90IGPhu5F0IGzDtWkgbeG7m2kuIFRoYXkgdsOgbyDEkcOzLCBuw7MgecOqdSBj4bqndSBuZ8aw4budaSDEkeG7jWMgw6FwIGThu6VuZyBzw6J1IHPhuq9jIGPDoWMgbmd1ecOqbiBsw70gbuG7gW4gdOG6o25nIGPhu6dhIEdMTS4gDQogIA0KIyMjIyAqKkPDoWMga2jDoWkgbmnhu4dtIHRy4buNbmcgdMOibSDEkcaw4bujYyB24bqtbiBk4bulbmcgYmFvIGfhu5NtOioqDQogDQotIEPhuqV1IHRyw7pjIEdMTTogVGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChs4buxYSBjaOG7jW4gcGjDom4gcGjhu5FpIHBow7kgaOG7o3AgdOG7qyBo4buNIEVETSksIHRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nICho4buTaSBxdXkgdHV54bq/biB0w61uaCksIHbDoCBow6BtIGxpw6puIGvhur90IHBow7kgaOG7o3AuDQogDQotIMav4bubYyBsxrDhu6NuZyBtw7QgaMOsbmg6IFPhu60gZOG7pW5nIGPDoWMgcGjGsMahbmcgcGjDoXAgxrDhu5tjIGzGsOG7o25nIHRoYW0gc+G7kSAobmjGsCBI4bujcCBsw70gVOG7kWkgxJFhIGhv4bq3YyBRdWFzaS1MaWtlbGlob29kKS4NCiANCi0gU3V5IGx14bqtbiB0aOG7kW5nIGvDqjogVGjhu7FjIGhp4buHbiBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB2w6AgeMOieSBk4buxbmcga2hv4bqjbmcgdGluIGPhuq15IGNobyBjw6FjIHRoYW0gc+G7kSBtw7QgaMOsbmguDQoNCi0gQ2jhuqluIMSRb8OhbiBtw7QgaMOsbmg6IMSQw6FuaCBnacOhIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggduG7m2kgZOG7ryBsaeG7h3UgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGPDoWMgY8O0bmcgY+G7pSBjaOG6qW4gxJFvw6FuIG5oxrAgcGjhuqduIGTGsCAocmVzaWR1YWxzKSB2w6AgY8OhYyBr4bu5IHRodeG6rXQga2nhu4NtIHRyYSBnaeG6oyDEkeG7i25oLg0KDQojIyMjICoqQ8OhYyBNw7QgaMOsbmggdsOgIFBoxrDGoW5nIHBow6FwOioqDQoNCiAgQ2jGsMahbmcgdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2Mgw6FwIGThu6VuZyBjw6FjIG3DtCBow6xuaCBHTE0gY+G7pSB0aOG7gyDEkcOjIMSRxrDhu6NjIHRyw6xuaCBiw6B5IGNoaSB0aeG6v3QgdHJvbmcgY8OhYyBjaMawxqFuZyB0csaw4bubYyBjaG8gY8OhYyBi4buZIGThu68gbGnhu4d1IGtow6FjIG5oYXUuIFRy4buNbmcgdMOibSBsw6Agdmnhu4djIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggcGjDuSBo4bujcCAocGjDom4gcGjhu5FpLCBow6BtIGxpw6puIGvhur90KSBk4buxYSB0csOqbiDEkeG6t2MgxJFp4buDbSBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpIHbDoCBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoLCBzYXUgxJHDsyBmaXR0ZWQgbcO0IGjDrG5oIHbDoCBkaeG7hW4gZ2nhuqNpIGvhur90IHF14bqjLg0KIA0KICBDw6FjIGxv4bqhaSBtw7QgaMOsbmggR0xNIMSRxrDhu6NjIG5n4bulIMO9IHPhu60gZOG7pW5nIHRyb25nIGPDoWMgYsOgaSB04bqtcCBiYW8gZ+G7k20sIG5oxrBuZyBraMO0bmcgZ2nhu5tpIGjhuqFuIOG7nzoNCg0KLSBCaW5vbWlhbCBHTE1zIChDaMawxqFuZyA5KSBjaG8gZOG7ryBsaeG7h3UgdOG7tyBs4buHIGhv4bq3YyBz4buRIGzhuqduIHRow6BuaCBjw7RuZyB0cm9uZyB04buVbmcgc+G7kSB0aOG7rSBuZ2hp4buHbSAodsOtIGThu6U6IHPhu5EgY2EgYuG7h25oIHRyw6puIHThu5VuZyBz4buRIGNhIHNpbmgsIHPhu5EgcGjDtGkgY2jhur90IHRyw6puIHThu5VuZyBz4buRIHBow7RpLCB04bu3IGzhu4cgY2jhur90IHRyw6puIHThu5VuZyBz4buRIHRy4bupbmcpLg0KIA0KLSBQb2lzc29uIEdMTXMgdsOgIE5lZ2F0aXZlIEJpbm9taWFsIEdMTXMgKENoxrDGoW5nIDEwKSBjaG8gZOG7ryBsaeG7h3UgxJHhur9tICh2w60gZOG7pTogc+G7kSB5w6p1IGPhuqd1IGLhu5NpIHRoxrDhu51uZyB0cm9uZyBk4buvIGxp4buHdSBi4bqjbyBoaeG7g20sIHPhu5EgbG/DoGkgdHLDqm4gY8OhYyDEkeG6o28pLiBWaeG7h2MgeOG7rSBsw70gb3ZlcmRpc3BlcnNpb24gbMOgIG3hu5l0IGtow61hIGPhuqFuaCBxdWFuIHRy4buNbmcuDQoNCi0gR2FtbWEgR0xNcyB2w6AgY8OzIHRo4buDIFR3ZWVkaWUgR0xNcyAoQ2jGsMahbmcgMTEgJiAxMikgY2hvIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGTGsMahbmcsIMSR4bq3YyBiaeG7h3QgbMOgIGThu68gbGnhu4d1IHRp4buBbiB04buHIG5oxrAgY2hpIHBow60gecOqdSBj4bqndSBi4buTaSB0aMaw4budbmcgdHJvbmcgYuG6o28gaGnhu4NtLCBjw7MgdGjhu4MgY8OzIGPhuqMgZ2nDoSB0cuG7iyAwLg0KDQotIEPDoWMgcGjGsMahbmcgcGjDoXAgxJHGsOG7o2MgdGjhu7FjIGjDoG5oIGJhbyBn4buTbSBmaXR0ZWQgbcO0IGjDrG5oIGLhurFuZyBwaOG6p24gbeG7gW0gdGjhu5FuZyBrw6ogKG5oxrAgUiksIHBow6JuIHTDrWNoIHBoxrDGoW5nIHNhaSAoQU5PVkEpIGNobyBHTE0sIHbDoCBz4butIGThu6VuZyBjw6FjIMSR4buTIHRo4buLIGNo4bqpbiDEkW/DoW4gxJHhu4Mga2nhu4NtIHRyYSBnaeG6oyDEkeG7i25oLg0KDQojIyMjICoqVsOtIGThu6UgQ+G7pSB0aOG7gzoqKg0KDQogIE3hu5l0IHbDrSBk4bulIGPhu6UgdGjhu4MgxJHGsOG7o2MgY3VuZyBj4bqlcCBkxrDhu5tpIGThuqFuZyBk4buvIGxp4buHdSB0cm9uZyBiw6BpIHThuq1wIGzDoCBE4buvIGxp4buHdSBi4bqjbyBoaeG7g20gw7QgdMO0IGPhu6dhIENhbmFkYSAoUHJvYmxlbSAxMy42LCDEkcaw4bujYyBn4buNaSBsw6AgIm1vdG9yaW5zIikuIELhu5kgZOG7ryBsaeG7h3UgbsOgeSBiYW8gZ+G7k20gY8OhYyB0aMO0bmcgdGluIG5oxrAgSOG6oW5nIG3hu6ljIChNZXJpdCBDbGFzcyksIFPhu5EgbmfGsOG7nWkgxJHGsOG7o2MgYuG6o28gaGnhu4NtIChJbnN1cmVkKSwgUGjDrSBi4bqjbyBoaeG7g20gKFByZW1pdW0pLCBT4buRIHnDqnUgY+G6p3UgYuG7k2kgdGjGsOG7nW5nIChDbGFpbXMgQ29zdCksIHbDoCBT4buRIHnDqnUgY+G6p3UgYuG7k2kgdGjGsOG7nW5nIChDbGFpbXMgQ29zdCkuDQogDQogIEThu68gbGnhu4d1IG7DoHkgbWluaCBo4buNYSB2aeG7h2Mgw6FwIGThu6VuZyBHTE0gY2hvIGThu68gbGnhu4d1IGPDsyBj4bqldSB0csO6YyBwaOG7qWMgdOG6oXAgdGjGsOG7nW5nIGfhurdwIHRyb25nIGLhuqNvIGhp4buDbS4gQmnhur9uIHBo4bqjbiBo4buTaSBjw7MgdGjhu4MgbMOgOg0KDQotIFPhu5EgecOqdSBj4bqndSBi4buTaSB0aMaw4budbmc6IMSQw6J5IGzDoCBk4buvIGxp4buHdSDEkeG6v20sIGPDsyB0aOG7gyDEkcaw4bujYyBtw7QgaMOsbmggaMOzYSBi4bqxbmcgUG9pc3NvbiBob+G6t2MgTmVnYXRpdmUgQmlub21pYWwgR0xNIChDaMawxqFuZyAxMCkuIFPhu5EgbmfGsOG7nWkgxJHGsOG7o2MgYuG6o28gaGnhu4NtIGhv4bq3YyBwaMOtIGLhuqNvIGhp4buDbSBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSBvZmZzZXQgxJHhu4MgbcO0IGjDrG5oIGjDs2EgdOG7tyBs4buHIHnDqnUgY+G6p3UgYuG7k2kgdGjGsOG7nW5nIHRyw6puIG3hu5dpIG5nxrDhu51pIMSRxrDhu6NjIGLhuqNvIGhp4buDbSBob+G6t2MgbeG7l2kgcGjDrSBi4bqjbyBoaeG7g20uDQoNCi0gQ2hpIHBow60gecOqdSBj4bqndSBi4buTaSB0aMaw4budbmc6IMSQw6J5IGzDoCBk4buvIGxp4buHdSBsacOqbiB04bulYyBkxrDGoW5nLCB0aMaw4budbmcgxJHGsOG7o2MgbcO0IGjDrG5oIGjDs2EgYuG6sW5nIEdhbW1hIEdMTSAoQ2jGsMahbmcgMTEpLiBO4bq/dSBjaGkgcGjDrSBjw7MgdGjhu4MgYuG6sW5nIDAsIFR3ZWVkaWUgR0xNIChDaMawxqFuZyAxMikgc+G6vSBsw6AgbOG7sWEgY2jhu41uIHBow7kgaOG7o3AgaMahbi4NCg0KICBWw60gZOG7pSBuw6B5IGJ14buZYyBuZ8aw4budaSDEkeG7jWMgcGjhuqNpIGzhu7FhIGNo4buNbiBwaMOibiBwaOG7kWkgdsOgIGjDoG0gbGnDqm4ga+G6v3QgdGjDrWNoIGjhu6NwLCB4w6J5IGThu7FuZyB0aMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyB24bubaSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIChuaMawIE1lcml0IENsYXNzKSwgZml0dGVkIG3DtCBow6xuaCBi4bqxbmcgcGjhuqduIG3hu4FtLCB2w6AgZGnhu4VuIGdp4bqjaSDDvSBuZ2jEqWEgY+G7p2EgY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IHRyb25nIG5n4buvIGPhuqNuaCBj4bunYSBi4bqjbyBoaeG7g20uDQoNCiMjIyAqKjEzLjIgVmFpIHRyw7IqKg0KDQogIENoxrDGoW5nIDEzIMSRw7NuZyB2YWkgdHLDsiBsw6AgZ2lhaSDEkW/huqFuIHTDrWNoIGjhu6NwIHbDoCB0aOG7sWMgaMOgbmggdHJvbmcgdMOgaSBsaeG7h3UuIE7DsyBraMO0bmcgcGjhuqNpIGzDoCBu4buBbiB04bqjbmcgbMO9IHRodXnhur90IG3hu5tpIGhheSBj4bqndSBu4buRaSDEkeG6v24gY8OhYyBjaOG7pyDEkeG7gSBuw6JuZyBjYW8gKHbDrCBuw7MgbMOgIG3hu5l0IHRyb25nIG5o4buvbmcgY2jGsMahbmcgY3Xhu5FpIGPDuW5nIGNo4bupYSBu4buZaSBkdW5nIGPhu5F0IGzDtWkgdHLGsOG7m2MgcGjhuqduIHBo4bulIGzhu6VjIHbDoCBs4budaSBnaeG6o2kpLiBUaGF5IHbDoG8gxJHDsywgdmFpIHRyw7IgY+G7p2EgbsOzIGzDoCBj4bunbmcgY+G7kSBz4buxIGhp4buDdSBiaeG6v3QgYuG6sW5nIGPDoWNoIGNobyBwaMOpcCBuZ8aw4budaSDEkeG7jWMgw6FwIGThu6VuZyB0b8OgbiBi4buZIGtodcO0biBraOG7lSBHTE0gxJHDoyBo4buNYyB2w6BvIGPDoWMgdMOsbmggaHXhu5FuZyBk4buvIGxp4buHdSDEkWEgZOG6oW5nIGPhu6dhIHRo4bq/IGdp4bubaSB0aOG7sWMuIENoxrDGoW5nIG7DoHkgcGjhu6UgdGh14buZYyBob8OgbiB0b8OgbiB2w6BvIG7hu5lpIGR1bmcgY+G7p2EgY8OhYyBjaMawxqFuZyB0csaw4bubYy4NCiAgDQojIyAqKlBI4bukIEzhu6RDIEE6IFVTSU5HIFIgRk9SIERBVEEgQU5BTFlTVCoqDQoNCiAgUGjhu6UgbOG7pWMgQSAiVXNpbmcgUiBmb3IgRGF0YSBBbmFseXNpcyIsIGzDoCBwaOG6p24gZ2nhu5tpIHRoaeG7h3UgduG7gSBSLCBt4buZdCBtw7RpIHRyxrDhu51uZyBt4bqhbmggbeG6vSB2w6AgbWnhu4VuIHBow60gZMOgbmggY2hvIHTDrW5oIHRvw6FuIHRo4buRbmcga8OqIHbDoCDEkeG7kyBo4buNYS4gTeG7pWMgdGnDqnUgY2jDrW5oIGPhu6dhIHBo4bulIGzhu6VjIG7DoHkgbMOgIGdpw7pwIG5nxrDhu51pIMSR4buNYyBsw6BtIHF1ZW4gduG7m2kgbmjhu69uZyBraeG6v24gdGjhu6ljIGPGoSBi4bqjbiB2w6Aga+G7uSBuxINuZyB0aOG7sWMgaMOgbmggY+G6p24gdGhp4bq/dCDEkeG7gyBz4butIGThu6VuZyBSIHRyb25nIHBow6JuIHTDrWNoIGThu68gbGnhu4d1LCDEkeG6t2MgYmnhu4d0IGzDoCDEkeG7gyBsw6BtIHZp4buHYyB24bubaSBjw6FjIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCAoR0xNKSBz4bq9IMSRxrDhu6NjIHRyw6xuaCBiw6B5IGNoaSB0aeG6v3Qg4bufIGPDoWMgY2jGsMahbmcgc2F1IGPhu6dhIHPDoWNoLg0KICANCiAgVHLGsOG7m2Mga2hpIHPhu60gZOG7pW5nIFIsIGLhuqFuIGPhuqduIGNodeG6qW4gYuG7iyBtw7RpIHRyxrDhu51uZyBsw6BtIHZp4buHYy4gxJBp4buBdSBuw6B5IGJhbyBn4buTbSB2aeG7h2MgdOG6o2kgeHXhu5FuZyB2w6AgY8OgaSDEkeG6t3QgUiB04burIGPDoWMgdHJhbmcgd2ViIGNow61uaCB0aOG7qWMgbmjGsCBUaGUgUiBQcm9qZWN0IGZvciBTdGF0aXN0aWNhbCBDb21wdXRpbmcgaG/hurdjIENSQU4gKENvbXByZWhlbnNpdmUgUiBBcmNoaXZlIE5ldHdvcmspLiBDUkFOIGzDoCBuxqFpIGNo4bupYSBjw6FjIHThu4dwIGPhuqduIHRoaeG6v3QgxJHhu4MgdOG6o2kgeHXhu5FuZyBSIHbDoCBjw6FjIGfDs2kgKHBhY2thZ2VzKSBi4buVIHN1bmcuIEPDoWMgZ8OzaSBuw6B5IGNo4bupYSBjw6FjIGjDoG0gUiB0aMOqbSBjaOG7qWMgbsSDbmcgY2hvIFIuIE3hu5l0IGfDs2kgcXVhbiB0cuG7jW5nIGNobyBjdeG7kW4gc8OhY2ggbsOgeSBsw6AgZ8OzaSBHTE1zRGF0YSwgY2jhu6lhIGjhuqd1IGjhur90IGPDoWMgYuG7mSBk4buvIGxp4buHdSDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBzw6FjaC4gQuG6oW4gY8OzIHRo4buDIGPDoGkgxJHhurd0IGfDs2kgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gaW5zdGFsbC5wYWNrYWdlcygpIHRyb25nIFIuIFNhdSBraGkgY8OgaSDEkeG6t3QsIGLhuqFuIHBo4bqjaSBu4bqhcCBnw7NpIHbDoG8gcGhpw6puIGzDoG0gdmnhu4djIGhp4buHbiB04bqhaSBj4bunYSBSIGLhurFuZyBs4buHbmggbGlicmFyeShwYWNrYWdlX25hbWUpIHRyxrDhu5tjIGtoaSBz4butIGThu6VuZyBjw6FjIGjDoG0gaG/hurdjIGThu68gbGnhu4d1IHRyb25nIGfDs2kgxJHDsy4gVsOtIGThu6UsIMSR4buDIHPhu60gZOG7pW5nIGThu68gbGnhu4d1IHThu6sgZ8OzaSBHTE1zRGF0YSwgYuG6oW4gY+G6p24gY2jhuqF5IGxpYnJhcnkoR0xNc0RhdGEpLg0KICANCiAgUGjhu6UgbOG7pWMgaMaw4bubbmcgZOG6q24gc+G7rSBk4bulbmcgUiBt4buZdCBjw6FjaCBjxqEgYuG6o24uIFIgaG/huqF0IMSR4buZbmcgdGjDtG5nIHF1YSBkw7JuZyBs4buHbmgsIG7GoWkgYuG6oW4gbmjhuq1wIGPDoWMgbOG7h25oIHThuqFpIGThuqV1IG5o4bqvYyA+LiBC4bqhbiBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgUiBuaMawIG3hu5l0IG3DoXkgdMOtbmggbsOibmcgY2FvIMSR4buDIHRo4buxYyBoaeG7h24gY8OhYyBwaMOpcCB0w61uaC4gS+G6v3QgcXXhuqMgdMOtbmggdG/DoW4gaG/hurdjIGThu68gbGnhu4d1IGPDsyB0aOG7gyDEkcaw4bujYyBnw6FuIHbDoG8gYmnhur9uIGLhurFuZyBrw70gaGnhu4d1ICQ8LSQgaG/hurdjICQ9JC4gVMOqbiBiaeG6v24gdHJvbmcgUiBjw7MgcGjDom4gYmnhu4d0IGNo4buvIGhvYSwgY2jhu68gdGjGsOG7nW5nICh2w60gZOG7pTogSFQsIEh0IHbDoCBodCBsw6AgYmEgYmnhur9uIGtow6FjIG5oYXUpIHbDoCBraMO0bmcgxJHGsOG7o2MgYuG6r3QgxJHhuqd1IGLhurFuZyBjaOG7ryBz4buRLg0KROG7ryBsaeG7h3UgdHJvbmcgUiB0aMaw4budbmcgxJHGsOG7o2MgbMawdSB0cuG7ryBkxrDhu5tpIGThuqFuZyBkYXRhIGZyYW1lLiBEYXRhIGZyYW1lIGPDsyBj4bqldSB0csO6YyBnaeG7kW5nIGLhuqNuZywgduG7m2kgY8OhYyBiaeG6v24gKGPhu5l0KSB2w6AgY8OhYyB0csaw4budbmcgaOG7o3AvcXVhbiBzw6F0IChow6BuZykuIELhuqFuIGPDsyB0aOG7gyBu4bqhcCBk4buvIGxp4buHdSB2w6BvIFIgZGF0YSBmcmFtZSBi4bqxbmcgbmhp4buBdSBjw6FjaC4gQ8OhYyBi4buZIGThu68gbGnhu4d1IMSRaSBrw6htIFIgaG/hurdjIGPDoWMgZ8OzaSDEkcOjIGPDoGkgxJHhurd0IChuaMawIEdMTXNEYXRhKSBjw7MgdGjhu4MgxJHGsOG7o2MgbuG6oXAgYuG6sW5nIGjDoG0gZGF0YShkYXRhc2V0X25hbWUpLiBE4buvIGxp4buHdSBsxrB1IHRy4buvIHRyb25nIHThu4dwIHbEg24gYuG6o24gKG5oxrAgLmNzdiwgLnR4dCkgY8OzIHRo4buDIMSRxrDhu6NjIMSR4buNYyB2w6BvIFIgYuG6sW5nIGPDoWMgaMOgbSBuaMawIHJlYWQuY3N2KCkgaG/hurdjIHJlYWQuZGVsaW0oKS4NCiAgDQogIFNhdSBraGkgbuG6oXAgZGF0YSBmcmFtZSwgY8OhYyBiaeG6v24gcmnDqm5nIGzhursgYsOqbiB0cm9uZyBuw7MgY2jGsGEgaGnhu4NuIHRo4buLIHRy4buxYyB0aeG6v3AuIELhuqFuIGPDsyB0aOG7gyB0cnV5IGPhuq1wIHThu6tuZyBiaeG6v24gYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGvDvSBoaeG7h3UgJCwgdsOtIGThu6UgZGF0YV9mcmFtZV9uYW1lJHZhcmlhYmxlX25hbWUgKG5oxrAgbHVuZ2NhcCRBZ2UpLiBIw6BtIHdpdGgoKSBjxaluZyBsw6AgbeG7mXQgY8OhY2gga2jDoWMgxJHhu4MgbMOgbSB2aeG7h2MgduG7m2kgY8OhYyBiaeG6v24gdHJvbmcgZGF0YSBmcmFtZSBtw6Aga2jDtG5nIGPhuqduIGzhurdwIGzhuqFpIHTDqm4gZGF0YSBmcmFtZS4gVmnhu4djIHPhu60gZOG7pW5nIGF0dGFjaCgpIMSRxrDhu6NjIMSR4buBIGPhuq1wIG5oxrBuZyBraMO0bmcga2h1eeG6v24ga2jDrWNoIGRvIGPDsyB0aOG7gyBnw6J5IHJhIGPDoWMgdMOhYyBk4bulbmcgcGjhu6Uga2jDtG5nIG1vbmcgbXXhu5FuLg0KDQogIFBo4bulIGzhu6VjIGdp4bubaSB0aGnhu4d1IG3hu5l0IHPhu5EgaMOgbSBjxqEgYuG6o24gxJHhu4MgbMOgbSB2aeG7h2MgduG7m2kgZOG7ryBsaeG7h3UgdsOgIHRo4buxYyBoaeG7h24gdGjhu5FuZyBrw6ouIELhuqFuIGPDsyB0aOG7gyB4ZW0gdMOqbiBjw6FjIGJp4bq/biB0cm9uZyBkYXRhIGZyYW1lIGLhurFuZyBow6BtIG5hbWVzKCkuIEjDoG0gc3VtbWFyeShvYmplY3QpIGN1bmcgY+G6pXAgYuG6o24gdMOzbSB04bqvdCBj4bunYSBiaeG6v24gaG/hurdjIGRhdGEgZnJhbWUuIEzGsHUgw70gcuG6sW5nIHN1bW1hcnkoKSBz4bq9IGhp4buDbiB0aOG7iyBr4bq/dCBxdeG6oyBraMOhYyBuaGF1IGNobyBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyAocXVhbnRpdGF0aXZlKSB2w6AgYmnhur9uIMSR4buLbmggdMOtbmggKHF1YWxpdGF0aXZlL2ZhY3RvcikuIELhuqFuIGPDsyB0aOG7gyBjaHV54buDbiDEkeG7lWkgbeG7mXQgYmnhur9uIMSR4buLbmggbMaw4bujbmcgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oIChmYWN0b3IpIGLhurFuZyBow6BtIGZhY3RvcigpLiANCkPDoWMgaMOgbSB0aOG7kW5nIGvDqiBjxqEgYuG6o24ga2jDoWMgbmjGsCBtZWFuKCksIG1lZGlhbigpLCBzZCgpLCB2YXIoKSBjxaluZyDEkcaw4bujYyBnaeG7m2kgdGhp4buHdS4NCg0KICBW4bq9IMSR4buTIHRo4buLIGPGoSBi4bqjbiBjxaluZyBsw6AgbeG7mXQgcGjhuqduIHF1YW4gdHLhu41uZy4gSMOgbSBwbG90KCkgdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHThuqFvIMSR4buTIHRo4buLLiBC4bqhbiBjw7MgdGjhu4MgY2jhu4kgxJHhu4tuaCBiaeG6v24gY2hvIHRy4bulYyB5IHbDoCB4IGLhurFuZyBjw7RuZyB0aOG7qWMgZOG6oW5nICR5IFxzaW0geCQgdsOgIHPhu60gZOG7pW5nIMSR4buRaSBz4buRIGRhdGEgxJHhu4MgY2jhu4kgxJHhu4tuaCBkYXRhIGZyYW1lIGNo4bupYSBjw6FjIGJp4bq/biDEkcOzLCB2w60gZOG7pTogcGxvdChGRVYgfiBBZ2UsIGRhdGEgPSBsdW5nY2FwKS4NCg0KICBN4buZdCB2w60gZOG7pSBu4buVaSBi4bqtdCDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBwaOG7pSBs4bulYyBuw6B5IHbDoCB4dXnDqm4gc3Xhu5F0IGPDoWMgY2jGsMahbmcgxJHhuqd1IGzDoCBk4buvIGxp4buHdSBkdW5nIHTDrWNoIHBo4buVaSAobHVuZ2NhcCksIGJhbyBn4buTbSBjw6FjIGJp4bq/biBuaMawIFR14buVaSwgRkVWIChkdW5nIHTDrWNoIHRo4bufIGPGsOG7oW5nIGLhu6ljKSwgQ2hp4buBdSBjYW8sIEdp4bubaSB0w61uaCwgdsOgIFTDrG5oIHRy4bqhbmcgaMO6dCB0aHXhu5FjLiBE4buvIGxp4buHdSBuw6B5IG1pbmggaOG7jWEgY8OhY2ggbuG6oXAsIHhlbSwgdMOzbSB04bqvdCB2w6AgduG6vSDEkeG7kyB0aOG7iyB0cm9uZyBSLg0KDQogIEN14buRaSBjw7luZywgcGjhu6UgbOG7pWMgaMaw4bubbmcgZOG6q24gY8OhY2ggdMOsbSBraeG6v20gdHLhu6MgZ2nDunAgdHJvbmcgUiBi4bqxbmcgY8OhY2ggc+G7rSBk4bulbmcgP2Z1bmN0aW9uX25hbWUuIE5nb8OgaSByYSwgYuG6oW4gY8WpbmcgY8OzIHRo4buDIHThu7Egdmnhur90IGPDoWMgaMOgbSDEkcahbiBnaeG6o24gY+G7p2EgcmnDqm5nIG3DrG5oLg0KDQogIFTDs20gbOG6oWksIFBo4bulIGzhu6VjIEEgbMOgIG7hu4FuIHThuqNuZyB0aOG7sWMgaMOgbmggcXVhbiB0cuG7jW5nLCB0cmFuZyBi4buLIGNobyBuZ8aw4budaSDEkeG7jWMgY8OhYyBr4bu5IG7Eg25nIGPGoSBi4bqjbiBuaOG6pXQgxJHhu4MgY8OzIHRo4buDIHPhu60gZOG7pW5nIFIgxJHhu4MgbuG6oXAgZOG7ryBsaeG7h3UsIHRoYW8gdMOhYywgdMOzbSB04bqvdCB2w6AgduG6vSDEkeG7kyB0aOG7iy4gTmjhu69uZyBr4bu5IG7Eg25nIG7DoHkgbMOgIGLhuq90IGJ14buZYyDEkeG7gyB0aGVvIGTDtWkgdsOgIHRo4buxYyBow6BuaCBjw6FjIHbDrSBk4bulIHbhu4EgSOG7k2kgcXV5IFR1eeG6v24gdMOtbmggKGxtKCkpIHbDoCBHTE0gKGdsbSgpKSBjw7luZyBjw6FjIHBow6JuIHTDrWNoIGNo4bqpbiDEkW/DoW4gdsOgIG3DtCBow6xuaCBwaOG7qWMgdOG6oXAgaMahbiDEkcaw4bujYyB0csOsbmggYsOgeSB0cm9uZyBjw6FjIGNoxrDGoW5nIHRp4bq/cCB0aGVvIGPhu6dhIHPDoWNoLiBWaeG7h2Mgc+G7rSBk4bulbmcgUiDEkcaw4bujYyB0w61jaCBo4bujcCBjaOG6t3QgY2jhur0gdHJvbmcgdG/DoG4gYuG7mSBjdeG7kW4gc8OhY2gNCiANCiMjICoqUEjhu6QgTOG7pEMgQjogVEhFIEdMTXNEQVRBIFBBQ0tBR0UqKg0KDQogIEfDs2kgR0xNc0RhdGEgbMOgIG3hu5l0IGfDs2kgdHJvbmcgbcO0aSB0csaw4budbmcgdMOtbmggdG/DoW4gdGjhu5FuZyBrw6ogUi4gTsOzIMSRxrDhu6NjIHThuqFvIHJhIGLhu59pIGPDoWMgdMOhYyBnaeG6oyBj4bunYSBjdeG7kW4gc8OhY2ggIkdlbmVyYWxpemVkIExpbmVhciBNb2RlbHMgV2l0aCBFeGFtcGxlcyBpbiBSIiwgUGV0ZXIgSy4gRHVubiB2w6AgR29yZG9uIEsuIFNteXRoLiBN4bulYyDEkcOtY2ggY2jDrW5oIGPhu6dhIGfDs2kgbsOgeSBsw6AgdOG7lW5nIGjhu6NwIHbDoCBjdW5nIGPhuqVwIGjhuqd1IGjhur90IGPDoWMgYuG7mSBk4buvIGxp4buHdSDEkcaw4bujYyBz4butIGThu6VuZyBsw6BtIHbDrSBk4bulIHbDoCBiw6BpIHThuq1wIHRyb25nIGN14buRbiBzw6FjaC4gVmnhu4djIHPhu60gZOG7pW5nIGfDs2kgR0xNc0RhdGEgxJHGsOG7o2MgY29pIGzDoCB0aGnhur90IHnhur91IMSR4buDIGNo4bqheSBjw6FjIMSRb+G6oW4gbcOjIFIgdsOgIHRo4buxYyBow6BuaCB0aGVvIG7hu5lpIGR1bmcgY3Xhu5FuIHPDoWNoLiBHw7NpIG7DoHkgaGnhu4duIGPDsyBz4bq1biB0csOqbiBt4bqhbmcgbMaw4bubaSBraG8gbMawdSB0cuG7ryB0b8OgbiBkaeG7h24gY2hvIFIsIMSRxrDhu6NjIGfhu41pIGzDoCBDUkFOIChDb21wcmVoZW5zaXZlIFIgQXJjaGl2ZSBOZXR3b3JrKSwgdsOgIGPDsyB0aOG7gyDEkcaw4bujYyB04bqjaSB4deG7kW5nIHThu6sgxJHDsy4gUGhpw6puIGLhuqNuIGPhu6UgdGjhu4MgY+G7p2EgR0xNc0RhdGEgxJHGsOG7o2Mgc+G7rSBk4bulbmcga2hpIGNodeG6qW4gYuG7iyBjdeG7kW4gc8OhY2ggbMOgIDEuMC4wLg0KDQogIMSQ4buDIHPhu60gZOG7pW5nIEdMTXNEYXRhLCBi4bqhbiBj4bqnbiB04bqjaSB4deG7kW5nIHbDoCBjw6BpIMSR4bq3dCBnw7NpIG7DoHksIGtow6FjIHbhu5tpIG3hu5l0IHPhu5EgZ8OzaSDEkWkga8OobSBz4bq1biB24bubaSBi4bqjbiBjw6BpIMSR4bq3dCBSIGPGoSBi4bqjbi4gUXXDoSB0csOsbmggY8OgaSDEkeG6t3QgY8OzIHRo4buDIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gbeG7mXQgY8OhY2ggdGnhu4duIGzhu6NpIHRow7RuZyBxdWEgbWVudSB0cm9uZyBSIGhv4bq3YyBSU3R1ZGlvIChi4bqxbmcgY8OhY2ggY2jhu41uIENSQU4gbWlycm9yIHbDoCB0w6xtIHTDqm4gZ8OzaSksIGhv4bq3YyDEkcahbiBnaeG6o24gaMahbiBi4bqxbmcgY8OhY2ggc+G7rSBk4bulbmcgbOG7h25oIGluc3RhbGwucGFja2FnZXMoIkdMTXNEYXRhIikgdOG7qyBkw7JuZyBs4buHbmggUi4gU2F1IGtoaSBnw7NpIMSRw6MgxJHGsOG7o2MgY8OgaSDEkeG6t3QgdGjDoG5oIGPDtG5nIHRyw6puIG3DoXkgdMOtbmggY+G7p2EgYuG6oW4sIGLhuqFuIGPDsyB0aOG7gyBz4butIGThu6VuZyBuw7MgdHJvbmcgYuG6pXQga+G7syBwaGnDqm4gbMOgbSB2aeG7h2MgbsOgbyBj4bunYSBSLg0KDQogIFRyb25nIG3hu5l0IHBoacOqbiBSIGPhu6UgdGjhu4MsIGfDs2kgR0xNc0RhdGEgKGhv4bq3YyBi4bqldCBr4buzIGfDs2kgbsOgbyBraMOhYyDEkcOjIGPDoGkgxJHhurd0KSBwaOG6o2kgxJHGsOG7o2MgbuG6oXAgdsOgbyBwaGnDqm4gbMOgbSB2aeG7h2MgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGzhu4duaCBsaWJyYXJ5KEdMTXNEYXRhKS4gU2F1IGtoaSBu4bqhcCBnw7NpLCBi4bqhbiBjw7MgdGjhu4MgdHJ1eSBj4bqtcCBjw6FjIGLhu5kgZOG7ryBsaeG7h3UgcmnDqm5nIGzhursgbcOgIG7DsyBjaOG7qWEgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gZGF0YShkYXRhc2V0X25hbWUpLCB2w60gZOG7pTogbOG7h25oIGRhdGEobHVuZ2NhcCkgc+G6vSDEkcawYSBi4buZIGThu68gbGnhu4d1IGx1bmdjYXAgdsOgbyBtw7RpIHRyxrDhu51uZyBsw6BtIHZp4buHYyBj4bunYSBi4bqhbi4gR8OzaSBuw6B5IGJhbyBn4buTbSA5NyBi4buZIGThu68gbGnhu4d1IGtow6FjIG5oYXUsIMSRxrDhu6NjIGxp4buHdCBrw6ogY2hpIHRp4bq/dCBjw7luZyB24bubaSBtw7QgdOG6oyBuZ+G6r24gZ+G7jW4gdHJvbmcgcGjhu6UgbOG7pWMgQiBj4bunYSBzw6FjaC4gQ8OhYyB2w60gZOG7pSB24buBIGThu68gbGnhu4d1IGPDsyB0cm9uZyBnw7NpIGJhbyBn4buTbSBk4buvIGxp4buHdSBkdW5nIHTDrWNoIHBo4buVaSAobHVuZ2NhcCksIGThu68gbGnhu4d1IHbhu4EgY2hpbSDhu5NuIMOgbyAobm1pbmVyKSwgZOG7ryBsaeG7h3UgY8OieSBi4buTIMSR4buBIChsaW1lKSwgZOG7ryBsaeG7h3UgxJHhu5kgdGjhuqVtIHbhuq10IGxp4buHdSAocGVybSksIHbDoCBuaGnhu4F1IGLhu5kgZOG7ryBsaeG7h3Uga2jDoWMgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgY8OhYyBjaMawxqFuZyBzYXUuIEtoaSBk4buvIGxp4buHdSDEkcOjIMSRxrDhu6NjIG7huqFwIGTGsOG7m2kgZOG6oW5nIGRhdGEgZnJhbWUsIGPDoWMgYmnhur9uIGPhu6UgdGjhu4MgYsOqbiB0cm9uZyBkYXRhIGZyYW1lIMSRw7MgY8OzIHRo4buDIMSRxrDhu6NjIHRydXkgY+G6rXAgYuG6sW5nIGvDvSBoaeG7h3UgXCQgKHbDrSBk4bulOiBsdW5nY2FwJEFnZSkuDQoNCiAgxJDhu4Mgbmjhuq1uIHRy4bujIGdpw7pwIHbhu4EgZ8OzaSBHTE1zRGF0YSBuw7NpIGNodW5nIChu4bq/dSDEkcOjIMSRxrDhu6NjIGPDoGkgxJHhurd0KSwgYuG6oW4gY8OzIHRo4buDIHPhu60gZOG7pW5nIGzhu4duaCBsaWJyYXJ5KGhlbHA9IkdMTXNEYXRhIikgdOG6oWkgZOG6pXUgbmjhuq9jIFIuIE7hur91IGfDs2kgxJHDoyDEkcaw4bujYyBu4bqhcCwgYuG6oW4gY8OzIHRo4buDIHTDrG0gaGnhu4N1IGNoaSB0aeG6v3QgduG7gSBt4buZdCBi4buZIGThu68gbGnhu4d1IGPhu6UgdGjhu4MgdHJvbmcgZ8OzaSBi4bqxbmcgbOG7h25oID9kYXRhc2V0X25hbWUsIGNo4bqzbmcgaOG6oW4gbmjGsCA/bHVuZ2NhcC4NCg0KICBUw7NtIGzhuqFpLCBnw7NpIEdMTXNEYXRhIMSRw7NuZyB2YWkgdHLDsiBsw6AgbeG7mXQgbmd14buTbiB0w6BpIG5ndXnDqm4gZOG7ryBsaeG7h3UgdHJ1bmcgdMOibSBjaG8gY3Xhu5FuIHPDoWNoLCBjdW5nIGPhuqVwIGPDoWMgYuG7mSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vyBj4bqnbiB0aGnhur90IMSR4buDIG5nxrDhu51pIMSR4buNYyBjw7MgdGjhu4MgdHLhu7FjIHRp4bq/cCDDoXAgZOG7pW5nIHbDoCB0aOG7sWMgaMOgbmggY8OhYyBr4bu5IHRodeG6rXQgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdsOgIE3DtCBow6xuaCBUdXnhur9uIHTDrW5oIFThu5VuZyBxdcOhdCBi4bqxbmcgUiwgZ2nDunAgdmnhu4djIGjhu41jIGzDvSB0aHV54bq/dCB0cuG7nyBuw6puIGhp4buHdSBxdeG6oyBoxqFuIHRow7RuZyBxdWEgY8OhYyB2w60gZOG7pSBj4bulIHRo4buDLg0KDQoqKioNCg0KIyAqKklJLiBUSOG7kE5HIEvDiiBNw5QgVOG6oioqDQoNCiBUaOG7kW5nIGvDqiBtw7QgdOG6oyAoRGVzY3JpcHRpdmUgU3RhdGlzdGljcykgbMOgIGLGsOG7m2MgxJHhuqd1IHRpw6puIHRyb25nIHF1w6EgdHLDrG5oIHBow6JuIHTDrWNoIGThu68gbGnhu4d1LCBuaOG6sW0gbeG7pWMgxJHDrWNoIHTDs20gdOG6r3QsIHRyw6xuaCBiw6B5IHbDoCBtw7QgdOG6oyBjw6FjIMSR4bq3YyB0csawbmcgY8ahIGLhuqNuIGPhu6dhIGThu68gbGnhu4d1IHRodSB0aOG6rXAgxJHGsOG7o2MuIFRow7RuZyBxdWEgY8OhYyBjaOG7iSBz4buRIG5oxrAgdOG6p24gc3XhuqV0LCB0cnVuZyBiw6xuaCwgxJHhu5kgbOG7h2NoIGNodeG6qW4sIGdpw6EgdHLhu4sgY+G7sWMgdHLhu4ssIHbDoCBiaeG7g3UgxJHhu5MsIHRo4buRbmcga8OqIG3DtCB04bqjIGdpw7pwIG5nxrDhu51pIHBow6JuIHTDrWNoIGhp4buDdSByw7UgY+G6pXUgdHLDumMgZOG7ryBsaeG7h3UsIHjDoWMgxJHhu4tuaCDEkcaw4bujYyB4dSBoxrDhu5tuZyB04buVbmcgcXXDoXQsIGtp4buDbSB0cmEgc+G7sSBi4bqldCB0aMaw4budbmcgdsOgIMSRxrBhIHJhIGPDoWMgbmjhuq1uIMSR4buLbmggYmFuIMSR4bqndSDEkeG7gyBwaOG7pWMgduG7pSBjaG8gY8OhYyBwaMOibiB0w61jaCBzw6J1IGjGoW4uDQoNCiMjICoqVOG7lW5nIHF1YW4gYuG7mSBk4buvIGxp4buHdSoqDQoNCiAgQuG7mSBk4buvIGxp4buHdSBTdXBlcm1hcmtldCBUcmFuc2FjdGlvbnMgbMOgIG3hu5l0IHThuq1wIGThu68gbGnhu4d1IG3DtCBwaOG7j25nIGPDoWMgZ2lhbyBk4buLY2ggbXVhIGjDoG5nIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gdOG6oWkgbeG7mXQgaOG7hyB0aOG7kW5nIHNpw6p1IHRo4buLLiBE4buvIGxp4buHdSBuw6B5IGNo4bupYSBjw6FjIHRow7RuZyB0aW4gxJFhIGThuqFuZyBsacOqbiBxdWFuIMSR4bq/biBow6BuaCB2aSB0acOqdSBkw7luZyBj4bunYSBraMOhY2ggaMOgbmcsIMSR4bq3YyDEkWnhu4NtIG5ow6JuIGto4bqpdSBo4buNYyB2w6AgY2hpIHRp4bq/dCBz4bqjbiBwaOG6qW0uIEPhu6UgdGjhu4MsIG3hu5dpIGTDsm5nIGThu68gbGnhu4d1IMSR4bqhaSBkaeG7h24gY2hvIG3hu5l0IGdpYW8gZOG7i2NoIGR1eSBuaOG6pXQsIGJhbyBn4buTbSBjw6FjIHRyxrDhu51uZyBuaMawIG5nw6B5IG11YSBow6BuZyAoUHVyY2hhc2VEYXRlKSwgbcOjIGtow6FjaCBow6BuZyAoQ3VzdG9tZXJJRCksIGdp4bubaSB0w61uaCAoR2VuZGVyKSwgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIChNYXJpdGFsU3RhdHVzKSwgc+G7nyBo4buvdSBuaMOgIChIb21lb3duZXIpLCBz4buRIGzGsOG7o25nIGNvbiAoQ2hpbGRyZW4pLCB0aHUgbmjhuq1wIGjDoG5nIG7Eg20gKEFubnVhbEluY29tZSksIHbhu4sgdHLDrSDEkeG7i2EgbMO9IChDaXR5LCBTdGF0ZW9yUHJvdmluY2UsIENvdW50cnkpLCBjxaluZyBuaMawIHRow7RuZyB0aW4gc+G6o24gcGjhuqltIG5oxrAgbmjDs20gbmfDoG5oIGjDoG5nIChQcm9kdWN0RmFtaWx5KSwgYuG7mSBwaOG6rW4gc+G6o24gcGjhuqltIChQcm9kdWN0RGVwYXJ0bWVudCksIGRhbmggbeG7pWMgc+G6o24gcGjhuqltIChQcm9kdWN0Q2F0ZWdvcnkpLCBz4buRIGzGsOG7o25nIGLDoW4gKFVuaXRzU29sZCkgdsOgIGRvYW5oIHRodSAoUmV2ZW51ZSkuDQogICAgDQogIEPDoWMgYmnhur9uIHRyb25nIGThu68gbGnhu4d1IMSRxrDhu6NjIGNoaWEgdGjDoG5oIGJhIG5ow7NtIGNow61uaDoNCg0KICBCaeG6v24gxJHhu4tuaCBkYW5oIChJZGVudGlmaWVyIC8gSUQgVmFyaWFibGVzKTogbMOgIGPDoWMgYmnhur9uIGTDuW5nIMSR4buDIHBow6JuIGJp4buHdCBnaeG7r2EgY8OhYyDEkeG7kWkgdMaw4bujbmcgcXVhbiBzw6F0LCBraMO0bmcgbWFuZyB0aMO0bmcgdGluIHRo4buRbmcga8OqLCBiYW8gZ+G7k206DQogIA0KICAtIFB1cmNoYXNlRGF0ZQ0KICANCiAgLSBDdXN0b21lcklEDQoNCiAgQmnhur9uIMSR4buLbmggdMOtbmggKENhdGVnb3JpY2FsIC8gUXVhbGl0YXRpdmUgVmFyaWFibGVzKTogYmFvIGfhu5NtIGPDoWMgYmnhur9uIHBow6JuIGxv4bqhaSBraMO0bmcgY8OzIMO9IG5naMSpYSBz4buRIGjhu41jLCBiYW8gZ+G7k206IA0KDQogIC0gR2VuZGVyDQogIA0KICAtIE1hcml0YWxTdGF0dXMJDQogIA0KICAtIEhvbWVvd25lcgkNCiAgDQogIC0gQW5udWFsSW5jb21lDQogIA0KICAtIENpdHkJDQogIA0KICAtIFN0YXRlb3JQcm92aW5jZQkNCiAgDQogIC0gQ291bnRyeQ0KICANCiAgLSBQcm9kdWN0RmFtaWx5CQ0KICANCiAgLSBQcm9kdWN0RGVwYXJ0bWVudA0KICANCiAgLSBQcm9kdWN0Q2F0ZWdvcnkNCg0KICBCaeG6v24gxJHhu4tuaCBsxrDhu6NuZyAoTnVtZXJpY2FsIC8gUXVhbnRpdGF0aXZlIFZhcmlhYmxlcyk6IGzDoCBjw6FjIGJp4bq/biBjw7MgdGjhu4MgxJFvIGzGsOG7nW5nIMSRxrDhu6NjIGLhurFuZyBz4buRIHbDoCBjw7Mgw70gbmdoxKlhIHPhu5EgaOG7jWMsIGJhbyBn4buTbToNCiAgDQogIC0gQ2hpbGRyZW4JDQogIA0KICAtCVVuaXRzU29sZAkNCiAgDQogIC0gUmV2ZW51ZQ0KICANCiAgVmnhu4djIHjDoWMgxJHhu4tuaCDEkcO6bmcgbG/huqFpIGJp4bq/biBnacO6cCBs4buxYSBjaOG7jW4gcGjGsMahbmcgcGjDoXAgbcO0IHThuqMgcGjDuSBo4bujcCwgxJHhu5NuZyB0aOG7nWkgxJHhuqNtIGLhuqNvIHTDrW5oIGNow61uaCB4w6FjIHbDoCBo4bujcCBsw70gdHJvbmcgcXXDoSB0csOsbmggeOG7rSBsw70sIHBow6JuIHTDrWNoIGThu68gbGnhu4d1Lg0KICANCmBgYHtyfQ0KbGlicmFyeShjc3YpDQp0dCA8LSByZWFkLmNzdignQzovVXNlcnMvQWRtaW4vT25lRHJpdmUvRGVza3RvcC9Uw4BJIExJ4buGVSBI4buMQyBU4bqsUC9QVERMRFQvU3VwZXJtYXJrZXQgVHJhbnNhY3Rpb25zLmNzdicsIGhlYWRlciA9IFQsIHNlcCA9ICI7IikNCmBgYA0KDQojIyAqKlRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biDEkeG7i25oIGRhbmggKioNCiAgQmnhur9uIMSR4buLbmggZGFuaCBraMO0bmcgbWFuZyDDvSBuZ2jEqWEgxJFvIGzGsOG7nW5nIGhheSBwaMOibiBsb+G6oWkgY8OzIGdpw6EgdHLhu4sgdGjhu5FuZyBrw6ouIENow7puZyBjaOG7iSBjw7MgdmFpIHRyw7Igbmjhuq1uIGRp4buHbiwgxJHDoW5oIGThuqV1IGPDoSB0aOG7gyByacOqbmcgYmnhu4d0IHRyb25nIHThuq1wIGThu68gbGnhu4d1LiBEbyDEkcOzOg0KDQogIC0gQ3VzdG9tZXJJRDogbMOgIG3DoyBraMOhY2ggaMOgbmcgZHV5IG5o4bqldCBjaG8gdOG7q25nIGdpYW8gZOG7i2NoIOKAkyBraMO0bmcgY8OzIMO9IG5naMSpYSDEkeG7gyB0w61uaCB0cnVuZyBiw6xuaCwgdOG6p24gc3XhuqV0IGhheSB24bq9IGJp4buDdSDEkeG7ky4gTeG7l2kgZ2nDoSB0cuG7iyBsw6AgZHV5IG5o4bqldCDihpIga2jDtG5nIHRo4buDIG5ow7NtIGhheSB0w7NtIHThuq90IG3hu5l0IGPDoWNoIGPDsyDDvSBuZ2jEqWEuDQoNCiAgLSBQdXJjaGFzZURhdGU6IGzDoCB0aMO0bmcgdGluIHRo4budaSBnaWFuIGPhu6dhIGdpYW8gZOG7i2NoIOKAkyBraMO0bmcgcGjhuqNpIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGhheSBwaMOibiBsb+G6oWksIG7Dqm4ga2jDtG5nIHRo4buDIHTDrW5oIGPDoWMgxJHhurdjIHRyxrBuZyBuaMawIHRydW5nIGLDrG5oIGhheSDEkeG7mSBs4buHY2ggY2h14bqpbiBt4buZdCBjw6FjaCB0cuG7sWMgdGnhur9wLiBUdXkgbmhpw6puLCBuw7MgY8OzIHRo4buDIGTDuW5nIMSR4buDIHRyw61jaCB4deG6pXQgdGjDtG5nIHRpbiBuaMawIHRow6FuZywgcXXDvSwgbsSDbSDEkeG7gyBwaOG7pWMgduG7pSB0aOG7kW5nIGvDqiB0aGVvIHRo4budaSBnaWFuLg0KICANCiMjICoqVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIMSR4buLbmggdMOtbmggKioNCg0KIyMjICoqMS4gR2VuZGVyIChnaeG7m2kgdMOtbmgpKioNCg0KICBCaeG6v24gR2VuZGVyIGzDoCBt4buZdCBiaeG6v24gxJHhu4tuaCB0w61uaCBwaMOibiBsb+G6oWkgbmjhu4sgcGjDom4sIHBo4bqjbiDDoW5oIGdp4bubaSB0w61uaCBj4bunYSBraMOhY2ggaMOgbmcgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UuIFZp4buHYyB0aOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gbsOgeSBnacO6cCBuaOG6rW4gZGnhu4duIGPGoSBj4bqldSBnaeG7m2kgdMOtbmgsIHThu6sgxJHDsyBo4buXIHRy4bujIHBow6JuIHTDrWNoIGjDoG5oIHZpIHRpw6p1IGTDuW5nIGhv4bq3YyB4w6J5IGThu7FuZyBtw7QgaMOsbmggZOG7sSBiw6FvIGPDsyBwaMOibiBiaeG7h3QgdGhlbyBnaeG7m2kuDQoNCmBgYHtyfQ0KZ2VuZGVyX2ZyZXEgPC0gdGFibGUodHQkR2VuZGVyKSAgICAgICAgICAgICAgICAgIyDEkOG6v20gc+G7kSBsxrDhu6NuZyBGIHbDoCBNDQpnZW5kZXJfcGN0IDwtIHJvdW5kKHByb3AudGFibGUoZ2VuZGVyX2ZyZXEpICogMTAwLCAxKSAgIyBUw61uaCBwaOG6p24gdHLEg20gdsOgIGzDoG0gdHLDsm4gMSBjaOG7ryBz4buRDQpsYWJlbHMgPC0gcGFzdGUobmFtZXMoZ2VuZGVyX2ZyZXEpLCAiKCIsIGdlbmRlcl9wY3QsICIlKSIsIHNlcCA9ICIiKSAgIyBH4buZcCBuaMOjbg0KcGllKGdlbmRlcl9mcmVxLA0KICAgIGxhYmVscyA9IGxhYmVscywNCiAgICBjb2wgPSBjKCJsaWdodHBpbmsiLCAibGlnaHRibHVlIiksDQogICAgbWFpbiA9ICJCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHThu7cgbOG7hyBnaeG7m2kgdMOtbmgiKQ0KYGBgDQoNCiAgS+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogbcO0IHThuqMgY2hvIHRo4bqleSB04bu3IGzhu4cgZ2nhu5tpIHTDrW5oIGdp4buvYSBu4buvIChGKSB2w6AgbmFtIChNKSB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBraMOhIGPDom4gYuG6sW5nLCB24bubaSBu4buvIGNoaeG6v20gNTElIHbDoCBuYW0gY2hp4bq/bSA0OSUuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGtow7RuZyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIMSRw6FuZyBr4buDIGdp4buvYSBoYWkgbmjDs20gZ2nhu5tpIHTDrW5oLCBnacO6cCDEkeG6o20gYuG6o28gdMOtbmggxJHhuqFpIGRp4buHbiB2w6AgaOG6oW4gY2jhur8gcuG7p2kgcm8gc2FpIGzhu4djaCBt4bqrdSAoc2FtcGxpbmcgYmlhcykga2hpIHRo4buxYyBoaeG7h24gcGjDom4gdMOtY2ggdGnhur9wIHRoZW8uIE5nb8OgaSByYSwgdmnhu4djIHBow6JuIGLhu5EgZ2nhu5tpIHTDrW5oIMSR4buTbmcgxJHhu4F1IGPFqW5nIHThuqFvIMSRaeG7gXUga2nhu4duIHRodeG6rW4gbOG7o2kgY2hvIGPDoWMgbcO0IGjDrG5oIHRo4buRbmcga8OqIHbDoCBwaMOibiB0w61jaCBk4buxIGLDoW8gY8OzIGxpw6puIHF1YW4gxJHhur9uIHnhur91IHThu5EgZ2nhu5tpLg0KICANCiMjIyAqKjIuIE1hcml0YWxTdGF0dXMJKHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibikgKioNCiAgDQogIEJp4bq/biBNYXJpdGFsU3RhdHVzIHRo4buDIGhp4buHbiB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gY+G7p2Ega2jDoWNoIGjDoG5nLCB0cm9uZyDEkcOzIGdpw6EgdHLhu4sgJ1MnIMSR4bqhaSBkaeG7h24gY2hvIMSR4buZYyB0aMOibiAoU2luZ2xlKSB2w6AgJ00nIMSR4bqhaSBkaeG7h24gY2hvIMSRw6Mga+G6v3QgaMO0biAoTWFycmllZCkuIMSQw6J5IGzDoCBt4buZdCBiaeG6v24gcGjDom4gbG/huqFpIMSR4buLbmggdMOtbmggbmjhu4sgcGjDom4sIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBwaMOibiB0w61jaCBow6BuaCB2aSB0acOqdSBkw7luZyDEkeG7gyB0w6xtIGhp4buDdSBz4buxIGtow6FjIGJp4buHdCB0cm9uZyBuaHUgY+G6p3UgdsOgIHh1IGjGsOG7m25nIG11YSBz4bqvbSBnaeG7r2EgY8OhYyBuaMOzbSBraMOhY2ggaMOgbmcuIFbDrSBk4bulLCBraMOhY2ggaMOgbmcgxJHhu5ljIHRow6JuIGPDsyB0aOG7gyDGsHUgdGnDqm4gdGnDqnUgZMO5bmcgY2hvIGLhuqNuIHRow6JuLCB0cm9uZyBraGkga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBjw7MgeHUgaMaw4bubbmcgY2hpIHRpw6p1IGNobyBnaWEgxJHDrG5oIGhv4bq3YyBjw6JuIG5o4bqvYyB0w6BpIGNow61uaCBuaGnhu4F1IGjGoW4uIFZp4buHYyDEkcawYSBiaeG6v24gbsOgeSB2w6BvIHBow6JuIHTDrWNoIGdpw7pwIGhp4buDdSBzw6J1IGjGoW4gduG7gSDEkeG6t2MgxJFp4buDbSBuaMOibiBraOG6qXUgaOG7jWMgY+G7p2Ega2jDoWNoIGjDoG5nLCB04burIMSRw7MgcGjhu6VjIHbhu6UgY2hvIGPDoWMgbeG7pWMgdGnDqnUgdGnhur9wIHRo4buLLCBk4buxIGLDoW8gdsOgIHBow6JuIGtow7pjIHRo4buLIHRyxrDhu51uZyBoaeG7h3UgcXXhuqMgaMahbi4NCiAgDQpgYGB7cn0NCm1hcnJ5X2ZyZXEgPC0gdGFibGUodHQkTWFyaXRhbFN0YXR1cykgICAgICAgICAgICAgICAgDQptYXJyeV9wY3QgPC0gcm91bmQocHJvcC50YWJsZShtYXJyeV9mcmVxKSAqIDEwMCwgMSkgDQpsYWJlbHMgPC0gcGFzdGUobmFtZXMobWFycnlfZnJlcSksICIoIiwgbWFycnlfcGN0LCAiJSkiLCBzZXAgPSAiIikgDQpwaWUobWFycnlfZnJlcSwNCiAgICBsYWJlbHMgPSBsYWJlbHMsDQogICAgY29sID0gYygicmVkIiwgImdyZWVuIiksDQogICAgbWFpbiA9ICJCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiAiKQ0KYGBgDQogIA0KICBL4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiBjaG8gdGjhuqV5IHThu7cgbOG7hyBraMOhY2ggaMOgbmcgxJHDoyBr4bq/dCBow7RuIChNKSBjaGnhur9tIGtob+G6o25nIDQ4LjglLCB0cm9uZyBraGkgdOG7tyBs4buHIGPDsm4gbOG6oWkgKDUxLjIlKSBsw6Aga2jDoWNoIGjDoG5nIMSR4buZYyB0aMOibiAoUykuIFPhu7EgcGjDom4gYuG7kSBuw6B5IHTGsMahbmcgxJHhu5FpIMSR4buTbmcgxJHhu4F1IGdp4buvYSBoYWkgbmjDs20gdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuLCBjaG8gdGjhuqV5IHThuq1wIGThu68gbGnhu4d1IGPDsyB0w61uaCDEkeG6oWkgZGnhu4duIHThu5F0IHbhu4EgbeG6t3QgxJHhurdjIMSRaeG7g20geMOjIGjhu5lpLiBWaeG7h2MgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkeG7mWMgdGjDom4gbmjhu4luaCBoxqFuIG3hu5l0IGNow7p0IGPDsyB0aOG7gyBwaOG6o24gw6FuaCDEkeG6t2MgxJFp4buDbSBuaMOibiBraOG6qXUgaOG7jWMgY+G7p2EgdOG7h3Aga2jDoWNoIGjDoG5nLCB04burIMSRw7MgZ+G7o2kgw70gcuG6sW5nIGPDoWMgY2hp4bq/biBsxrDhu6NjIGtpbmggZG9hbmggaG/hurdjIHRp4bq/cCB0aOG7iyBuw6puIHhlbSB4w6l0IMSR4bq/biBuaHUgY+G6p3UgdGnDqnUgZMO5bmcgY8OhIG5ow6JuIHbDoCBsaW5oIGhv4bqhdCBj4bunYSBuaMOzbSBraMOhY2ggaMOgbmcgbsOgeS4gDQogIA0KIyMjICoqMy4gSG9tZW93bmVyKiogIA0KICANCiAgQmnhur9uIEhvbWVvd25lciBwaOG6o24gw6FuaCB0w6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgbmjDoCDhu58gY+G7p2Ega2jDoWNoIGjDoG5nLCB24bubaSBnacOhIHRy4buLICdZJyBiaeG7g3UgdGjhu4sgY8OzIHPhu58gaOG7r3UgbmjDoCB2w6AgJ04nIGJp4buDdSB0aOG7iyBraMO0bmcgc+G7nyBo4buvdSBuaMOgLiDEkMOieSBsw6AgbeG7mXQgYmnhur9uIMSR4buLbmggdMOtbmggbmjhu4sgcGjDom4sIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBwaMOibiB0w61jaCBraOG6oyBuxINuZyB0w6BpIGNow61uaCBob+G6t2MgbeG7qWMgxJHhu5kg4buVbiDEkeG7i25oIGtpbmggdOG6vyBj4bunYSBraMOhY2ggaMOgbmcuIFZp4buHYyBz4bufIGjhu691IG5ow6AgY8OzIHRo4buDIGxpw6puIHF1YW4gxJHhur9uIG3hu6ljIHRodSBuaOG6rXAsIHRow7NpIHF1ZW4gY2hpIHRpw6p1IGhv4bq3YyBuaHUgY+G6p3Ugc+G6o24gcGjhuqltIGPhu6UgdGjhu4MsIMSR4bq3YyBiaeG7h3QgdHJvbmcgY8OhYyBuZ8OgbmggbmjGsCBi4bqjbyBoaeG7g20sIGLhuqV0IMSR4buZbmcgc+G6o24sIGhv4bq3YyB0w6BpIGNow61uaCB0acOqdSBkw7luZy4gIA0KICANCmBgYHtyfQ0KaG9tZV9mcmVxIDwtIHRhYmxlKHR0JEhvbWVvd25lcikgICAgICAgICAgICAgICAgDQpob21lX3BjdCA8LSByb3VuZChwcm9wLnRhYmxlKGhvbWVfZnJlcSkgKiAxMDAsIDEpIA0KbGFiZWxzIDwtIHBhc3RlKG5hbWVzKGhvbWVfZnJlcSksICIoIiwgaG9tZV9wY3QsICIlKSIsIHNlcCA9ICIiKSANCnBpZShob21lX2ZyZXEsDQogICAgbGFiZWxzID0gbGFiZWxzLA0KICAgIGNvbCA9IGMoImdyZXkiLCAieWVsbG93IiksDQogICAgbWFpbiA9ICJCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSBuaMOgICAiKQ0KYGBgICANCiAgDQogIEvhur90IHF14bqjIHRo4buRbmcga8OqIGNobyB0aOG6pXkgY8OzIDYwLjElIGtow6FjaCBow6BuZyB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBz4bufIGjhu691IG5ow6Ag4bufIChZKSwgdHJvbmcga2hpIDM5LjklIGtow6FjaCBow6BuZyBraMO0bmcgc+G7nyBo4buvdSBuaMOgIChOKS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgcGjhuqduIGzhu5tuIGtow6FjaCBow6BuZyBjw7MgbeG7qWMgxJHhu5kg4buVbiDEkeG7i25oIHTDoGkgY2jDrW5oIHTGsMahbmcgxJHhu5FpIGNhby4gVmnhu4djIHPhu58gaOG7r3UgbmjDoCBjw7MgdGjhu4MgxJHhu5NuZyBuZ2jEqWEgduG7m2kgbmh1IGPhuqd1IHRpw6p1IGTDuW5nIGPDsyB4dSBoxrDhu5tuZyDEkeG6p3UgdMawIHbDoCBi4buBbiB24buvbmcgaMahbiwgxJHhu5NuZyB0aOG7nWkgY8WpbmcgbMOgIG3hu5l0IMSR4bq3YyDEkWnhu4NtIHF1YW4gdHLhu41uZyDEkeG7gyBwaMOibiBraMO6YyBraMOhY2ggaMOgbmcgdGhlbyBraOG6oyBuxINuZyB0w6BpIGNow61uaCBob+G6t2MgbeG7pWMgdGnDqnUgdGnhur9wIHRo4buLLiBUdXkgbmhpw6puLCB04bu3IGzhu4cgZ+G6p24gNDAlIGtow7RuZyBz4bufIGjhu691IG5ow6AgY8WpbmcgcGjhuqNuIMOhbmggbeG7mXQgbmjDs20ga2jDoWNoIGjDoG5nIMSRw6FuZyBr4buDIHbhu5tpIGPDoWMgbmh1IGPhuqd1IGxpbmggaG/huqF0IGjGoW4sIGPDsyB0aOG7gyBoxrDhu5tuZyDEkeG6v24gY8OhYyBz4bqjbiBwaOG6qW0gZOG7i2NoIHbhu6UgY8OzIHTDrW5oIHRp4buHbiBs4bujaSB2w6Agbmfhuq9uIGjhuqFuLg0KICANCiMjIyAqKjQuIEFubnVhbEluY29tZSoqDQoNCiAgQmnhur9uIEFubnVhbEluY29tZSB0aOG7gyBoaeG7h24ga2hv4bqjbmcgdGh1IG5o4bqtcCBow6BuZyBuxINtIGPhu6dhIGtow6FjaCBow6BuZywgxJHGsOG7o2MgcGjDom4gbG/huqFpIHRow6BuaCBjw6FjIG5ow7NtIHRoZW8gbeG7qWMgdGh1IG5o4bqtcCB0xINuZyBk4bqnbi4gxJDDonkgbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oIGPDsyB0aOG7qSB04buxIChvcmRpbmFsIGNhdGVnb3JpY2FsIHZhcmlhYmxlKSwgdsOsIGPDoWMgbeG7qWMgdGh1IG5o4bqtcCDEkcaw4bujYyBz4bqvcCB44bq/cCB0aGVvIHRo4bupIHThu7EgdOG7qyB0aOG6pXAgxJHhur9uIGNhby4NCg0KYGBge3IsIHdhcm5pbmc9IEZBTFNFfQ0KIyBUaOG7kW5nIGvDqiB04bqnbiBzdeG6pXQNCnRhYmxlX2luY29tZSA8LSB0YWJsZSh0dCRBbm51YWxJbmNvbWUpDQpwcm9wX2luY29tZSA8LSBwcm9wLnRhYmxlKHRhYmxlX2luY29tZSkgKiAxMDAgICMgVOG7tyBs4buHIHBo4bqnbiB0csSDbQ0KDQojIEvhur90IGjhu6NwIHRow6BuaCBkYXRhIGZyYW1lIA0KaW5jb21lX2ZyZXEgPC0gZGF0YS5mcmFtZSgNCiAgQW5udWFsaW5jb21lID0gbmFtZXModGFibGVfaW5jb21lKSwNCiAgRnJlcXVlbmN5ID0gYXMudmVjdG9yKHRhYmxlX2luY29tZSksDQogIFBlcmNlbnRhZ2UgPSByb3VuZChhcy52ZWN0b3IocHJvcF9pbmNvbWUpLCAyKSkNCg0KcHJpbnQoaW5jb21lX2ZyZXEpDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoaW5jb21lX2ZyZXEsIGFlcyh4ID0gcmVvcmRlcihBbm51YWxpbmNvbWUsIC1GcmVxdWVuY3kpLCB5ID0gRnJlcXVlbmN5KSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgZmlsbCA9ICJwdXJwbGUiKSArDQogIGxhYnModGl0bGUgPSAiVGh1IG5o4bqtcCBo4bqxbmcgbsSDbSBj4bunYSBraMOhY2ggaMOgbmciLA0KICAgICAgIHggPSAiTeG7qWMgdGh1IG5o4bqtcCAiLA0KICAgICAgIHkgPSAiVOG6p24gc3XhuqV0ICIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYCANCg0KICBQaMOibiBi4buRIHRodSBuaOG6rXAgY+G7p2Ega2jDoWNoIGjDoG5nIGNobyB0aOG6pXkgc+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmcgbOG7m24gbmjhuqV0IHRodeG7mWMgbmjDs20gY8OzIHRodSBuaOG6rXAgdOG7qyAzMEsgxJHhur9uIDUwSyDEkcO0IGxhLCB24bubaSBoxqFuIDQsNjAwIGtow6FjaCBow6BuZy4gTmjDs20gY8OzIHRodSBuaOG6rXAgdGjhuqVwIG5o4bqldCwgdOG7qyAxMEsgxJHhur9uIDMwSyDEkcO0IGxhLCBjxaluZyBjw7Mgc+G7kSBsxrDhu6NuZyDEkcOhbmcga+G7gywgZ+G6p24gMywxMDAga2jDoWNoIGjDoG5nLiBDw6FjIG5ow7NtIHRodSBuaOG6rXAgdHJ1bmcgYsOsbmggbmjGsCA1MEsgxJHhur9uIDcwSyB2w6AgNzBLIMSR4bq/biA5MEsgxJHDtCBsYSBjxaluZyBjw7MgbMaw4bujbmcga2jDoWNoIGjDoG5nIGtow6EgbOG7m24sIGzhuqduIGzGsOG7o3Qga2hv4bqjbmcgMiwzNzAgdsOgIDEsNzAwIGtow6FjaCBow6BuZy4gVHJvbmcga2hpIMSRw7MsIHPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIOG7nyBjw6FjIG5ow7NtIHRodSBuaOG6rXAgY2FvIGjGoW4sIGJhbyBn4buTbSB04burIDkwSyDEkeG6v24gdHLDqm4gMTUwSyDEkcO0IGxhLCB0aOG6pXAgaMahbiBuaGnhu4F1LCBkYW8gxJHhu5luZyB04burIGtob+G6o25nIDI3MCDEkeG6v24gNzYwIGtow6FjaCBow6BuZy4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgcGjhuqduIGzhu5tuIGtow6FjaCBow6BuZyB0cm9uZyBi4buZIGThu68gbGnhu4d1IHThuq1wIHRydW5nIHbDoG8gY8OhYyBuaMOzbSB0aHUgbmjhuq1wIHThu6sgdGjhuqVwIMSR4bq/biB0cnVuZyBiw6xuaCwgduG7m2kgc+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmcgdGh1IG5o4bqtcCBjYW8ga2jDoSBo4bqhbiBjaOG6vy4NCiAgDQojIyMgKio1LiBDaXR5KioNCg0KYGBge3IsIHdhcm5pbmc9IEZBTFNFfQ0KIyBUaOG7kW5nIGvDqiB04bqnbiBzdeG6pXQNCnRhYmxlX2NpdHkgPC0gdGFibGUodHQkQ2l0eSkNCnByb3BfY2l0eSA8LSBwcm9wLnRhYmxlKHRhYmxlX2NpdHkpICogMTAwICAjIFThu7cgbOG7hyBwaOG6p24gdHLEg20NCg0KIyBL4bq/dCBo4bujcCB0aMOgbmggZGF0YSBmcmFtZSANCmNpdHlfZnJlcSA8LSBkYXRhLmZyYW1lKA0KICBjaXR5ID0gbmFtZXModGFibGVfY2l0eSksDQogIEZyZXF1ZW5jeSA9IGFzLnZlY3Rvcih0YWJsZV9jaXR5KSwNCiAgUGVyY2VudGFnZSA9IHJvdW5kKGFzLnZlY3Rvcihwcm9wX2NpdHkpLCAyKSkNCg0KcHJpbnQoY2l0eV9mcmVxKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGNpdHlfZnJlcSwgYWVzKHggPSByZW9yZGVyKGNpdHksIC1GcmVxdWVuY3kpLCB5ID0gRnJlcXVlbmN5KSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgZmlsbCA9ICJicm93biIpICsNCiAgbGFicyh0aXRsZSA9ICJTw7QgbMaw4bujbmcga2jDoWNoIGjDoG5nIMSR4bq/biB04burIGPDoWMgdGjDoG5oIHBo4buRIGtow6FjIG5oYXUgIiwNCiAgICAgICB4ID0gIkNpdHkgIiwNCiAgICAgICB5ID0gIkzGsOG7o25nIGtow6FjaCBow6BuZyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYCAgIA0KICANCiAgROG7ryBsaeG7h3UgdGjhu4MgaGnhu4duIHLhurFuZyBraMOhY2ggaMOgbmcgxJHhur9uIHThu6sgbmhp4buBdSB0aMOgbmggcGjhu5Ega2jDoWMgbmhhdSwgdHJvbmcgxJHDsyBt4buZdCBz4buRIHRow6BuaCBwaOG7kSBjw7Mgc+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmcgY2FvIHbGsOG7o3QgdHLhu5lpLiBTYWxlbSBsw6AgdGjDoG5oIHBo4buRIGPDsyBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyBjYW8gbmjhuqV0IHbhu5tpIDEuMzg2IGzGsOG7o3QsIGNoaeG6v20gZ+G6p24gMTAlIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UuIFRp4bq/cCB0aGVvIGzDoCBUYWNvbWEgKDEuMjU3IGzGsOG7o3QpIHbDoCBTZWF0dGxlICg5MjIgbMaw4bujdCksIGNobyB0aOG6pXkgc+G7sSB04bqtcCB0cnVuZyDEkcO0bmcga2jDoWNoIGjDoG5nIHThuqFpIGPDoWMga2h1IHbhu7FjIG7DoHkuDQoNCiAg4bueIGNoaeG7gXUgbmfGsOG7o2MgbOG6oWksIG5o4buvbmcgdGjDoG5oIHBo4buRIG5oxrAgR3VhZGFsYWphcmEgKDc1IGzGsOG7o3QpLCBTYW4gRnJhbmNpc2NvICgxMzAgbMaw4bujdCkgdsOgIEJlbGxpbmdoYW0gKDE0MyBsxrDhu6N0KSBjw7MgbMaw4bujbmcga2jDoWNoIGjDoG5nIGtow6EgdGjhuqVwLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBz4buxIHBow6JuIGLhu5Uga2jDoWNoIGjDoG5nIGtow7RuZyDEkeG7k25nIMSR4buBdSBnaeG7r2EgY8OhYyB0aMOgbmggcGjhu5EuDQoNCiAgTeG7mXQgc+G7kSB0aMOgbmggcGjhu5EgY8OzIGzGsOG7o25nIGtow6FjaCBow6BuZyB0xrDGoW5nIMSR4buRaSDEkeG7k25nIMSR4buBdSBuaMawIFBvcnRsYW5kICg4NzYgbMaw4bujdCksIFNwb2thbmUgKDg3NSBsxrDhu6N0KSB2w6AgU2FuIERpZWdvICg4NjYgbMaw4bujdCkg4oCTIG7hurFtIHRyb25nIG5ow7NtIGNhbyBuaMawbmcga2jDtG5nIGNow6puaCBs4buHY2ggbOG7m24gc28gduG7m2kgbmhhdS4NCg0KICBU4buVbmcgdGjhu4MsIGThu68gbGnhu4d1IHBo4bqjbiDDoW5oIHPhu7EgdOG6rXAgdHJ1bmcga2jDoWNoIGjDoG5nIG5oaeG7gXUgaMahbiDhu58gbeG7mXQgc+G7kSDEkcO0IHRo4buLIGzhu5tuIGhv4bq3YyB0cnVuZyB0w6JtIHRpw6p1IGTDuW5nLCB0cm9uZyBraGkgY8OhYyBraHUgduG7sWMgbmjhu48gaMahbiBjw7Mgw610IGzGsOG7o3QgZ2lhbyBk4buLY2ggaMahbi4NCiAgDQojIyMgKio2LiBTdGF0ZW9yUHJvdmluY2UqKg0KDQogIEJp4bq/biBTdGF0ZW9yUHJvdmluY2UgYmnhu4N1IHRo4buLIGPDoWMga2h1IHbhu7FjIGjDoG5oIGNow61uaCBuaMawIGJhbmcgaG/hurdjIHThu4luaCBuxqFpIGtow6FjaCBow6BuZyBzaW5oIHPhu5FuZyBob+G6t2MgdGjhu7FjIGhp4buHbiBnaWFvIGThu4tjaC4gQ8OhYyBnacOhIHRy4buLIGfhu5NtIG5oaeG7gXUga2h1IHbhu7FjIGtow6FjIG5oYXUgbmjGsCBCQywgQ0EsIERGLCBHVUVSUkVSTywgSkFMSVNDTywgT1IsIFZFUkFDUlVaLCBXQSwgWVVDQVRBTiwgWkFDQVRFQ0FTLCB0aOG7gyBoaeG7h24gc+G7sSDEkWEgZOG6oW5nIHbhu4EgxJHhu4thIGzDvSB0cm9uZyBi4buZIGThu68gbGnhu4d1LiBWaeG7h2MgcGjDom4gYuG7kSB0aGVvIGPDoWMgYmFuZyBob+G6t2MgdOG7iW5oIGdpw7pwIGRvYW5oIG5naGnhu4dwIGhp4buDdSByw7UgaMahbiB24buBIMSR4bq3YyDEkWnhu4NtIGtow6FjaCBow6BuZyB2w6AgeHUgaMaw4bubbmcgbXVhIHPhuq9tIHRoZW8gdsO5bmcgbWnhu4FuLCB04burIMSRw7MgaOG7lyB0cuG7oyBjw6FjIGNoaeG6v24gbMaw4bujYyB0aeG6v3AgdGjhu4sgdsOgIHF14bqjbiBsw70ga2hvIGjDoG5nIHBow7kgaOG7o3AuIMSQw6J5IGzDoCBiaeG6v24gxJHhu4tuaCBkYW5oIG7Dqm4gY2jhu6cgeeG6v3UgxJHGsOG7o2MgcGjDom4gdMOtY2ggZMaw4bubaSBk4bqhbmcgdOG6p24gc3XhuqV0IHbDoCB04bu3IGzhu4cgcGjhuqduIHRyxINtIGNobyB04burbmcga2h1IHbhu7FjLCBjaOG7qSBraMO0bmcgdGjhu4MgdMOtbmggdG/DoW4gY8OhYyBjaOG7iSBz4buRIHRo4buRbmcga8OqIG3DtCB04bqjIG5oxrAgdHJ1bmcgYsOsbmggaGF5IMSR4buZIGzhu4djaCBjaHXhuqluLg0KDQpgYGB7ciwgd2FybmluZz0gRkFMU0V9DQojIFRo4buRbmcga8OqIHThuqduIHN14bqldA0KdGFibGVfc3RhdGUgPC0gdGFibGUodHQkU3RhdGVvclByb3ZpbmNlKQ0KcHJvcF9zdGF0ZSA8LSBwcm9wLnRhYmxlKHRhYmxlX3N0YXRlKSAqIDEwMCAgIyBU4bu3IGzhu4cgcGjhuqduIHRyxINtDQoNCiMgS+G6v3QgaOG7o3AgdGjDoG5oIGRhdGEgZnJhbWUgDQpzdGF0ZV9mcmVxIDwtIGRhdGEuZnJhbWUoDQogIFN0YXRlT3JQcm92aW5jZSA9IG5hbWVzKHRhYmxlX3N0YXRlKSwNCiAgRnJlcXVlbmN5ID0gYXMudmVjdG9yKHRhYmxlX3N0YXRlKSwNCiAgUGVyY2VudGFnZSA9IHJvdW5kKGFzLnZlY3Rvcihwcm9wX3N0YXRlKSwgMikpDQoNCnByaW50KHN0YXRlX2ZyZXEpDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3Qoc3RhdGVfZnJlcSwgYWVzKHggPSByZW9yZGVyKFN0YXRlT3JQcm92aW5jZSwgLUZyZXF1ZW5jeSksIHkgPSBGcmVxdWVuY3kpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsID0gIm9yYW5nZSIpICsNCiAgbGFicyh0aXRsZSA9ICJMxrDhu6NuZyBraMOhY2ggaMOgbmcgxJHhur9uIHThu6sgY8OhYyBiYW5nL3Thu4luaCIsDQogICAgICAgeCA9ICJTdGF0ZSBvciBQcm92aW5jZSIsDQogICAgICAgeSA9ICJMxrDhu6NuZyBraMOhY2ggaMOgbmcgIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KYGBgICANCg0KICBQaMOibiBi4buRIGtow6FjaCBow6BuZyB0aGVvIGJhbmcvdOG7iW5oIGNobyB0aOG6pXkgYmFuZyBXYXNoaW5ndG9uIChXQSkgY2hp4bq/bSBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyBs4bubbiBuaOG6pXQgduG7m2kgNCw1NjcgbmfGsOG7nWksIHRp4bq/cCB0aGVvIGzDoCBDYWxpZm9ybmlhIChDQSkgduG7m2kgMiw3MzMga2jDoWNoIGjDoG5nIHbDoCBPcmVnb24gKE9SKSB24bubaSAyLDI2MiBraMOhY2ggaMOgbmcuIMSQw6J5IMSR4buBdSBsw6Agbmjhu69uZyBraHUgduG7sWMgY8OzIGzGsOG7o25nIGtow6FjaCBow6BuZyB04bqtcCB0cnVuZyBjYW8uIEPDoWMgYmFuZyBraMOhYyBuaMawIFphY2F0ZWNhcywgQnJpdGlzaCBDb2x1bWJpYSAoQkMpLCB2w6AgRGlzdHJpdG8gRmVkZXJhbCAoREYpIGPFqW5nIGPDsyBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyDEkcOhbmcga+G7gywgbOG6p24gbMaw4bujdCBsw6AgMSwyOTcsIDgwOSB2w6AgODE1IGtow6FjaCBow6BuZy4gTmfGsOG7o2MgbOG6oWksIGPDoWMgYmFuZyBuaMawIEphbGlzY28gdsOgIEd1ZXJyZXJvIGPDsyBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyB0aOG6pXAgaMahbiwgY2jhu4kgduG7m2kgNzUgdsOgIDM4MyBraMOhY2ggaMOgbmcuIFF1YSDEkcOzLCBjw7MgdGjhu4MgdGjhuqV5IHLhurFuZyBsxrDhu6NuZyBraMOhY2ggaMOgbmcgcGjDom4gYuG7kSBraMO0bmcgxJHhu4F1IGdp4buvYSBjw6FjIGJhbmcvdOG7iW5oLCB24bubaSBz4buxIHThuq1wIHRydW5nIGzhu5tuIOG7nyBt4buZdCBz4buRIGJhbmcgY2jhu6cgY2jhu5F0LCB0cm9uZyBraGkgY8OhYyBiYW5nIGtow6FjIGPDsyBsxrDhu6NuZyBraMOhY2ggaMOgbmcga2jDoSBraGnDqm0gdOG7kW4uICANCg0KIyMjICoqNy4gQ291bnRyeSoqDQoNCiAgQmnhur9uIENvdW50cnkgdGjhu4MgaGnhu4duIHF14buRYyBnaWEgbsahaSBraMOhY2ggaMOgbmcgdGjhu7FjIGhp4buHbiBnaWFvIGThu4tjaC4gROG7ryBsaeG7h3UgYmFvIGfhu5NtIGJhIHF14buRYyBnaWEgY2jDrW5oIGzDoCBVU0EsIE1leGljbyB2w6AgQ2FuYWRhLCBjaG8gdGjhuqV5IHBo4bqhbSB2aSBob+G6oXQgxJHhu5luZyBj4bunYSBzacOqdSB0aOG7iyB0cuG6o2kgcuG7mW5nIHRyw6puIGPhuqMgQuG6r2MgTeG7uS4NCg0KLSBO4bq/dSB4w6l0IHbhu4EgbeG6t3QgxJHhu4thIGzDvSwgxJFp4buBdSBuw6B5IHBo4bqjbiDDoW5oIG3hu5l0IGNoaeG6v24gbMaw4bujYyBraW5oIGRvYW5oIHh1ecOqbiBxdeG7kWMgZ2lhLCBoxrDhu5tuZyDEkeG6v24gdGjhu4sgdHLGsOG7nW5nIHRpw6p1IGTDuW5nIHThuqFpIGPhuqMgTeG7uSwgTWV4aWNvIHbDoCBDYW5hZGEuDQoNCi0gVmnhu4djIGPDsyBk4buvIGxp4buHdSB04burIGJhIHF14buRYyBnaWEgbsOgeSBjxaluZyBnacO6cCDEkcOhbmggZ2nDoSBz4buxIGtow6FjIGJp4buHdCB24buBIGjDoG5oIHZpIHRpw6p1IGTDuW5nLCBkb2FuaCB0aHUsIHPhuqNuIHBo4bqpbSBwaOG7lSBiaeG6v27igKYgdGhlbyB04burbmcga2h1IHbhu7FjLg0KDQpgYGB7ciwgd2FybmluZz0gRkFMU0V9DQojIFRo4buRbmcga8OqIHThuqduIHN14bqldA0KdGFibGVfY291IDwtIHRhYmxlKHR0JENvdW50cnkpDQpwcm9wX2NvdSA8LSBwcm9wLnRhYmxlKHRhYmxlX2NvdSkgKiAxMDAgICMgVOG7tyBs4buHIHBo4bqnbiB0csSDbQ0KDQojIEvhur90IGjhu6NwIHRow6BuaCBkYXRhIGZyYW1lIA0KY291X2ZyZXEgPC0gZGF0YS5mcmFtZSgNCiBjb3UgPSBuYW1lcyh0YWJsZV9jb3UpLA0KICBGcmVxdWVuY3kgPSBhcy52ZWN0b3IodGFibGVfY291KSwNCiAgUGVyY2VudGFnZSA9IHJvdW5kKGFzLnZlY3Rvcihwcm9wX2NvdSksIDIpKQ0KDQpwcmludChjb3VfZnJlcSkNCmxpYnJhcnkoZ2dwbG90MikNCmdncGxvdChjb3VfZnJlcSwgYWVzKHggPSByZW9yZGVyKGNvdSwgLUZyZXF1ZW5jeSksIHkgPSBGcmVxdWVuY3kpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsID0gImRhcmtibHVlIikgKw0KICBsYWJzKHRpdGxlID0gIlPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIMSR4bq/biB04burIGPDoWMgbsaw4bubYyIsDQogICAgICAgeCA9ICJDb3VudHJ5IiwNCiAgICAgICB5ID0gIkzGsOG7o25nICIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYA0KDQogIEJp4bq/biBDb3VudHJ5IHRyb25nIHThuq1wIGThu68gbGnhu4d1IGNo4buJIGPDsyBt4buZdCBnacOhIHRy4buLIGR1eSBuaOG6pXQgbMOgIFVTQSwgdOG7qWMgbMOgIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIGPDoWMga2jDoWNoIGjDoG5nIGPGsCB0csO6IHThuqFpIEhvYSBL4buzLiDEkGnhu4F1IG7DoHkgdGjhu4MgaGnhu4duIHLhurFuZyB04bqtcCBk4buvIGxp4buHdSBjw7MgcGjhuqFtIHZpIMSR4buLYSBsw70gZ2nhu5tpIGjhuqFuIHbDoCBraMO0bmcgcGjhuqNuIMOhbmggc+G7sSDEkWEgZOG6oW5nIHbhu4EgcXXhu5FjIGdpYS4NCg0KICBEbyBraMO0bmcgY8OzIHPhu7EgYmnhur9uIMSR4buVaSAodOG7qWMgbMOgIGtow7RuZyBjw7MgZ2nDoSB0cuG7iyBuw6BvIGtow6FjIG5nb8OgaSBVU0EpLCBiaeG6v24gQ291bnRyeSBraMO0bmcgxJHDs25nIHZhaSB0csOyIHBow6JuIGxv4bqhaSBoYXkgZ2nhuqNpIHRow61jaCB0cm9uZyBwaMOibiB0w61jaCB0aOG7kW5nIGvDqiBtw7QgdOG6oy4gVHJvbmcgY8OhYyBixrDhu5tjIHBow6JuIHTDrWNoIHRp4bq/cCB0aGVvIG5oxrAgeMOieSBk4buxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBob+G6t2MgcGjDom4ga2jDumMgdGjhu4sgdHLGsOG7nW5nLCBiaeG6v24gbsOgeSBjw7MgdGjhu4MgxJHGsOG7o2MgbG/huqFpIGLhu48ga2jhu49pIG3DtCBow6xuaCBu4bq/dSBraMO0bmcgY8OzIG3hu6VjIHRpw6p1IG3hu58gcuG7mW5nIGThu68gbGnhu4d1IHNhbmcgY8OhYyBxdeG7kWMgZ2lhIGtow6FjLg0KICANCiMjICoqVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIMSR4buLbmggbMaw4bujbmcgKioNCg0KIyMjICoqMS4gQ2hpbGRyZW4qKg0KDQogIEJp4bq/biBDaGlsZHJlbiBsw6AgbeG7mXQgYmnhur9uIMSR4buLbmggbMaw4bujbmcgcuG7nWkgcuG6oWMgKGRpc2NyZXRlIHF1YW50aXRhdGl2ZSB2YXJpYWJsZSksIGJp4buDdSB0aOG7iyBz4buRIGzGsOG7o25nIGNvbiBjw6FpIGPhu6dhIHThu6tuZyBraMOhY2ggaMOgbmcgdHJvbmcgYuG7mSBk4buvIGxp4buHdS4gROG7ryBsaeG7h3UgbsOgeSBjw7Mgw70gbmdoxKlhIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgaGnhu4N1IGPhuqV1IHRyw7pjIGjhu5kgZ2lhIMSRw6xuaCBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZywgdOG7qyDEkcOzIGPDsyB0aOG7gyBnacO6cCBjw6FjIG5ow6AgYsOhbiBs4bq7IMSRaeG7gXUgY2jhu4luaCBjaGnhur9uIGzGsOG7o2MgdGnhur9wIHRo4buLIGhv4bq3YyBz4bqjbiBwaOG6qW0gY2hvIHBow7kgaOG7o3AgduG7m2kgdOG7q25nIG5ow7NtIGtow6FjaCBow6BuZy4NCiAgDQpgYGB7ciwgd2FybmluZz0gRkFMU0UsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHBzeWNoKQ0KbGlicmFyeShEVCkgICAgIA0KbGlicmFyeSh0aWJibGUpIA0KDQphIDwtIGRlc2NyaWJlKHR0JENoaWxkcmVuKQ0KYV9sb25nIDwtIGFzLmRhdGEuZnJhbWUodChhKSkgICAgICAgDQphX2xvbmcgPC0gdGliYmxlOjpyb3duYW1lc190b19jb2x1bW4oYV9sb25nLCB2YXIgPSAiU3RhdGlzdGljIikgIA0KDQpjb2xuYW1lcyhhX2xvbmcpWzJdIDwtICJWYWx1ZSINCg0KZGF0YXRhYmxlKGFfbG9uZywgb3B0aW9ucyA9IGxpc3QocGFnZUxlbmd0aCA9IDE1KSkNCmBgYA0KDQotIFPhu5EgcXVhbiBzw6F0IChuKTogMTQuMDU5IGtow6FjaCBow6BuZy4NCg0KLSBUcnVuZyBiw6xuaCAobWVhbik6IGtob+G6o25nIDIuNTMgY29uIG3hu5dpIGtow6FjaCBow6BuZy4NCg0KLSBUcnVuZyB24buLIChtZWRpYW4pOiBsw6AgMywgdOG7qWMgNTAlIGtow6FjaCBow6BuZyBjw7MgMyBjb24gaG/hurdjIMOtdCBoxqFuLCA1MCUgY8OybiBs4bqhaSBuaGnhu4F1IGjGoW4uDQoNCi0gxJDhu5kgbOG7h2NoIGNodeG6qW4gKHNkKToga2hv4bqjbmcgMS40OSwgY2hvIHRo4bqleSBz4buxIHBow6JuIHTDoW4g4bufIG3hu6ljIHbhu6thIHBo4bqjaSB4dW5nIHF1YW5oIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmguDQoNCi0gR2nDoSB0cuG7iyBuaOG7jyBuaOG6pXQgKG1pbik6IDAg4oCTIG3hu5l0IHPhu5Ega2jDoWNoIGjDoG5nIGtow7RuZyBjw7MgY29uLg0KDQotIEdpw6EgdHLhu4sgbOG7m24gbmjhuqV0IChtYXgpOiA1IOKAkyBnacOhIHRy4buLIGNhbyBuaOG6pXQgdHJvbmcgbeG6q3UgbMOgIDUgY29uLg0KDQotIFNrZXduZXNzICjEkeG7mSBs4buHY2gpOiBn4bqnbiAwICgtMC4wMjEpLCBjaOG7qW5nIHThu48gcGjDom4gcGjhu5FpIGtow6EgxJHhu5FpIHjhu6luZyBxdWFuaCB0cnVuZyBiw6xuaC4NCg0KLSBLdXJ0b3Npczogw6JtICgtMS4wMyksIGNobyB0aOG6pXkgcGjDom4gcGjhu5FpIGPDsyDEkeG7iW5oIHRo4bqlcCB2w6AgxJF1w7RpIG5n4bqvbiBoxqFuIHBow6JuIHBo4buRaSBjaHXhuqluIChwbGF0aWt1cnRpYykuDQoNCi0gU3RhbmRhcmQgZXJyb3IgKHNlKTogcuG6pXQgbmjhu48gKH4wLjAxMjYpLCBuZ2jEqWEgbMOgIMaw4bubYyBsxrDhu6NuZyB0cnVuZyBiw6xuaCBt4bqrdSBraMOhIGNow61uaCB4w6FjLg0KDQogIEvhur90IGx14bqtbjogUGjDom4gcGjhu5FpIGPhu6dhIGJp4bq/biBDaGlsZHJlbiBraMOhIMSR4buRaSB44bupbmcgdsOgIHThuq1wIHRydW5nIHF1YW5oIHRydW5nIGLDrG5oIGzDoCAyLjUzLiBLaMOhY2ggaMOgbmcgcGjhu5UgYmnhur9uIG5o4bqldCBjw7MgdOG7qyAyIMSR4bq/biAzIGNvbi4gVmnhu4djIGPDsyBraMOhY2ggaMOgbmcga2jDtG5nIGPDsyBjb24gaG/hurdjIGPDsyB04bubaSA1IGNvbiBwaOG6o24gw6FuaCB0w61uaCDEkWEgZOG6oW5nIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZywgdHV5IG5oacOqbiBz4buxIHBow6JuIHTDoW4ga2jDtG5nIHF1w6EgbOG7m24sIGNobyB0aOG6pXkgbmjDs20ga2jDoWNoIGjDoG5nIHTGsMahbmcgxJHhu5FpIMSR4buTbmcgbmjhuqV0IHbhu4EgbeG6t3Qgc+G7kSBjb24gY8OhaS4NCg0KICANCiMjIyAqKjIuIFVuaXRzU29sZCoqDQoNCiAgQmnhur9uIFVuaXRzU29sZCB0cm9uZyBi4buZIGThu68gbGnhu4d1IFN1cGVybWFya2V0IFRyYW5zYWN0aW9ucyBsw6AgbeG7mXQgYmnhur9uIMSR4buLbmggbMaw4bujbmcgbGnDqm4gdOG7pWMsIHBo4bqjbiDDoW5oIHPhu5EgxJHGoW4gduG7iyBz4bqjbiBwaOG6qW0gxJHGsOG7o2MgYsOhbiB0cm9uZyB04burbmcgZ2lhbyBk4buLY2guDQoNCiAgxJDDonkgbMOgIG3hu5l0IGNo4buJIHRpw6p1IHF1YW4gdHLhu41uZyDEkeG7gyDEkcOhbmggZ2nDoSBraOG7kWkgbMaw4bujbmcgYsOhbiBow6BuZyBj4bunYSB04burbmcgZMOybmcgc+G6o24gcGjhuqltLCB04burIMSRw7MgaOG7lyB0cuG7oyBwaMOibiB0w61jaCB24buBOg0KDQotIE3hu6ljIMSR4buZIHRpw6p1IHRo4bulIGPhu6dhIHPhuqNuIHBo4bqpbS4NCg0KLSBYdSBoxrDhu5tuZyBtdWEgaMOgbmcgY+G7p2Ega2jDoWNoIGjDoG5nLg0KDQotIEhp4buHdSBzdeG6pXQgYsOhbiBow6BuZyBj4bunYSB04burbmcgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW0uDQoNCiAgQmnhur9uIG7DoHkgdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGPDoWMgcGjDom4gdMOtY2ggdGjhu5FuZyBrw6ogbcO0IHThuqMsIG3DtCBow6xuaCBo4buTaSBxdXksIGhv4bq3YyBwaMOibiB0w61jaCBkb2FuaCB0aHUgxJHhu4MgaOG7lyB0cuG7oyBxdXnhur90IMSR4buLbmggdHJvbmcgaG/huqF0IMSR4buZbmcga2luaCBkb2FuaCBzacOqdSB0aOG7iy4NCg0KYGBge3IsIHdhcm5pbmc9IEZBTFNFLCBlY2hvPUZBTFNFfQ0KYiA8LSBkZXNjcmliZSh0dCRVbml0c1NvbGQpDQpiX2xvbmcgPC0gYXMuZGF0YS5mcmFtZSh0KGIpKSAgICAgICANCmJfbG9uZyA8LSB0aWJibGU6OnJvd25hbWVzX3RvX2NvbHVtbihiX2xvbmcsIHZhciA9ICJTdGF0aXN0aWMiKSAgDQoNCmNvbG5hbWVzKGJfbG9uZylbMl0gPC0gIlZhbHVlIg0KDQpkYXRhdGFibGUoYl9sb25nLCBvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTUpKQ0KYGBgDQoNCi0gU+G7kSBxdWFuIHPDoXQgKG4pOiAxNC4wNTkuIEvDrWNoIHRoxrDhu5tjIG3huqt1IGzhu5tuLCDEkeG6o20gYuG6o28gxJHhu5kgdGluIGPhuq15IHRyb25nIHBow6JuIHTDrWNoLg0KDQotIFRydW5nIGLDrG5oIChtZWFuKQl+IDQuMDguIE3hu5dpIGdpYW8gZOG7i2NoIHRydW5nIGLDrG5oIGLDoW4ga2hv4bqjbmcgNCBz4bqjbiBwaOG6qW0uDQoNCi0gVHJ1bmcgduG7iyAobWVkaWFuKTogNAk1MCUgZ2lhbyBk4buLY2ggYsOhbiB04burIDQgc+G6o24gcGjhuqltIHRy4bufIHh14buRbmcuDQoNCi0gxJDhu5kgbOG7h2NoIGNodeG6qW4gKHNkKQl+IDEuMTcuIE3hu6ljIMSR4buZIGRhbyDEkeG7mW5nIHF1YW5oIHRydW5nIGLDrG5oIGzDoCB24burYSBwaOG6o2kuDQoNCi0gR2nDoSB0cuG7iyBuaOG7jyBuaOG6pXQgKG1pbikJMSwgbOG7m24gbmjhuqV0IChtYXgpOiA4CVPhu5EgbMaw4bujbmcgc+G6o24gcGjhuqltIGLDoW4gcmEgZGFvIMSR4buZbmcgdOG7qyAxIMSR4bq/biA4Lg0KDQotIFJhbmdlOiA3CUtob+G6o25nIGJp4bq/biB0aGnDqm4gdMawxqFuZyDEkeG7kWkgaOG6uXAuDQoNCi0gU2tld25lc3MJfiAwLjAxMi4gUGjDom4gcGjhu5FpIGfhuqduIG5oxrAgxJHhu5FpIHjhu6luZywga2jDtG5nIGzhu4djaCB0csOhaS9waOG6o2kgcsO1IHLhu4d0Lg0KDQotIEt1cnRvc2lzCX4gLTAuNDQuCVBow6JuIHBo4buRaSBjw7MgxJHhu4luaCB0aOG6pXAgdsOgIMSRdcO0aSBuZ+G6r24gaMahbiBwaMOibiBwaOG7kWkgY2h14bqpbiAocGxhdGlrdXJ0aWMpLg0KDQotIFNhaSBz4buRIGNodeG6qW4gKFNFKQl+IDAuMDA5OS4JQ2hvIHRo4bqleSB0cnVuZyBiw6xuaCBt4bqrdSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgcuG6pXQgY2jDrW5oIHjDoWMuDQoNCiAgS+G6v3QgbHXhuq1uOiBCaeG6v24gVW5pdHNTb2xkIGPDsyBwaMOibiBwaOG7kWkg4buVbiDEkeG7i25oLCB0xrDGoW5nIMSR4buRaSDEkeG7kWkgeOG7qW5nIHF1YW5oIHRydW5nIGLDrG5oIGzDoCA0IMSRxqFuIHbhu4sgc+G6o24gcGjhuqltL2dpYW8gZOG7i2NoLiBHaWFvIGThu4tjaCBwaOG7lSBiaeG6v24gbmjhuqV0IHLGoWkgdsOgbyBt4bupYyAz4oCTNSBz4bqjbiBwaOG6qW0uIERvIGtow7RuZyBjw7MgaGnhu4duIHTGsOG7o25nIGzhu4djaCBob+G6t2MgcGjDom4gcGjhu5FpIGLhuqV0IHRoxrDhu51uZywgY8OzIHRo4buDIHPhu60gZOG7pW5nIGJp4bq/biBuw6B5IHRyb25nIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGhv4bq3YyBwaMOibiB0w61jaCDEkeG7i25oIGzGsOG7o25nIGtow6FjIG3DoCBraMO0bmcgY+G6p24gYmnhur9uIMSR4buVaSB0aMOqbS4NCg0KIyMjICoqMy4gUmV2ZW51ZSoqDQogIFJldmVudWUgKERvYW5oIHRodSkgbMOgIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIHRo4buDIGhp4buHbiB04buVbmcgc+G7kSB0aeG7gW4gbcOgIGPhu61hIGjDoG5nIHRodSDEkcaw4bujYyB04burIHZp4buHYyBiw6FuIGjDoG5nIGjDs2EgaG/hurdjIGThu4tjaCB24bulIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIG5o4bqldCDEkeG7i25oLiBHacOhIHRy4buLIGPhu6dhIGJp4bq/biBuw6B5IHRoxrDhu51uZyDEkcaw4bujYyB0w61uaCBi4bqxbmcgxJHGoW4gduG7iyB0aeG7gW4gdOG7hyAodsOtIGThu6U6IMSRw7QgbGEsIMSR4buTbmcsIGV1cm8pLiBUcm9uZyBi4buZIGThu68gbGnhu4d1IOKAnFN1cGVybWFya2V0IFRyYW5zYWN0aW9uc+KAnSwgYmnhur9uIFJldmVudWUgcGjhuqNuIMOhbmggZG9hbmggdGh1IHTGsMahbmcg4bupbmcgduG7m2kgdOG7q25nIGdpYW8gZOG7i2NoIGhv4bq3YyB04burbmcgxJHGoW4gaMOgbmcsIGNobyB0aOG6pXkgaGnhu4d1IHF14bqjIGtpbmggZG9hbmggdsOgIHF1eSBtw7QgY+G7p2EgdOG7q25nIGdpYW8gZOG7i2NoIGPhu6UgdGjhu4MuDQogIA0KYGBge3IsIHdhcm5pbmc9IEZBTFNFLCBlY2hvPUZBTFNFfQ0KYyA8LSBkZXNjcmliZSh0dCRSZXZlbnVlKQ0KY19sb25nIDwtIGFzLmRhdGEuZnJhbWUodChjKSkgICAgICAgDQpjX2xvbmcgPC0gdGliYmxlOjpyb3duYW1lc190b19jb2x1bW4oY19sb25nLCB2YXIgPSAiU3RhdGlzdGljIikgIA0KDQpjb2xuYW1lcyhjX2xvbmcpWzJdIDwtICJWYWx1ZSINCg0KZGF0YXRhYmxlKGNfbG9uZywgb3B0aW9ucyA9IGxpc3QocGFnZUxlbmd0aCA9IDE1KSkNCmBgYA0KICANCiAgQmnhur9uIFJldmVudWUgY8OzIHPhu5EgcXVhbiBzw6F0IGtow6EgbOG7m24gKG4gPSAxNCwwNTkpLCB24bubaSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGtob+G6o25nIDEzLjAwIHbDoCBnacOhIHRy4buLIHRydW5nIHbhu4sgbMOgIDExLjI1LCBjaG8gdGjhuqV5IHBow6JuIHBo4buRaSBkb2FuaCB0aHUgY8OzIHh1IGjGsOG7m25nIGzhu4djaCB24buBIGLDqm4gcGjhuqNpIHbDrCBtZWFuIGzhu5tuIGjGoW4gbWVkaWFuLiDEkOG7mSBs4buHY2ggY2h14bqpbiAoc2QpIHTGsMahbmcgxJHhu5FpIGzhu5tuLCBraG/huqNuZyA4LjIyLCB0aOG7gyBoaeG7h24gZG9hbmggdGh1IGPDsyBz4buxIGJp4bq/biDEkeG7mW5nIGtow6EgcuG7mW5nIGdp4buvYSBjw6FjIGdpYW8gZOG7i2NoLiBHacOhIHRy4buLIG5o4buPIG5o4bqldCBsw6AgMC41MyB2w6AgZ2nDoSB0cuG7iyBs4bubbiBuaOG6pXQgbMOqbiB04bubaSA1Ni43LCBuw6puIGtob+G6o25nIGRhbyDEkeG7mW5nIChyYW5nZSkga2jDoSBy4buZbmcgbMOgIDU2LjE3Lg0KDQogIENo4buJIHPhu5Egc2tld25lc3MgZMawxqFuZyAoMS4xMykgY2hvIHRo4bqleSBwaMOibiBwaOG7kWkgZG9hbmggdGh1IGzhu4djaCBwaOG6o2ksIHThu6ljIGzDoCBjw7Mgbmhp4buBdSBnaWFvIGThu4tjaCBkb2FuaCB0aHUgdGjhuqVwIG5oxrBuZyB24bqrbiB04buTbiB04bqhaSBt4buZdCBz4buRIGdpYW8gZOG7i2NoIGPDsyBkb2FuaCB0aHUgcuG6pXQgY2FvIGvDqW8gZMOgaSDEkXXDtGkgcGjDom4gcGjhu5FpIHbhu4EgYsOqbiBwaOG6o2kuIENo4buJIHPhu5Ega3VydG9zaXMgZMawxqFuZyAoMS4zOSkgY2hvIHRo4bqleSBwaMOibiBwaOG7kWkgY8OzIMSR4buJbmggbmjhu41uIGjGoW4gc28gduG7m2kgcGjDom4gcGjhu5FpIGNodeG6qW4uIMSQ4buZIGzhu4djaCBjaHXhuqluIGNodeG6qW4gaMOzYSAoc3RhbmRhcmQgZXJyb3IpIGtow6Egbmjhu48gKDAuMDY5KSwgcGjhuqNuIMOhbmggxrDhu5tjIGzGsOG7o25nIHRydW5nIGLDrG5oIGRvYW5oIHRodSBraMOhIGNow61uaCB4w6FjIHbhu5tpIHThuq1wIGThu68gbGnhu4d1IG7DoHkuDQoNCiAgTmjDrG4gY2h1bmcsIGJp4bq/biBSZXZlbnVlIGPDsyBwaMOibiBwaOG7kWkga2jDtG5nIMSR4buRaSB44bupbmcgdsOgIGPDsyBz4buxIGJp4bq/biB0aGnDqm4gbOG7m24sIMSRaeG7gXUgbsOgeSB0aMaw4budbmcgZ+G6t3AgdHJvbmcgZOG7ryBsaeG7h3UgduG7gSBkb2FuaCB0aHUgYsOhbiBow6BuZywgZG8gY8OhYyBnaWFvIGThu4tjaCBjw7MgdGjhu4MgY8OzIGdpw6EgdHLhu4sgcuG6pXQga2jDoWMgbmhhdS4NCg==