library(readxl)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.1
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(epitools)
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.1
library(caret)
## Warning: package 'caret' was built under R version 4.3.1
## Loading required package: lattice
## 
## Attaching package: 'caret'
## 
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
## 
## The following object is masked from 'package:purrr':
## 
##     lift

2 LỜI CẢM ƠN

Tôi xin gửi lời cảm ơn đến khoa Kinh tế - Luật trường Đại học Tài chính – Marketing đã đưa môn học Phân tích dữ liệu định tính vào giảng dạy. Đây là một môn học rất hay và cung cấp nhiều kiến thức bổ ích. Đặc biệt, tôi xin gửi lời cảm ơn sâu sắc nhất đến giảng viên bộ môn – thầy Trần Mạnh Tường, người đã trực tiếp hướng dẫn tôi hoàn thành bài tiểu luận này.

Trong quá trình làm bài, do hiểu biết của tôi về đề tài còn nhiều hạn chế nên bài làm khó tránh khỏi những thiếu sót. Mong thầy nhận xét và góp ý thêm để bài làm ngày càng hoàn thiện.

Tôi xin chân thành cảm ơn!

3 CHƯƠNG 1: PHẦN MỞ ĐẦU

3.1 Lý do chọn đề tài

Cùng với sự phát triển của thị trường, nhiều tổ chức tài chính đã ra đời và ngày càng đứng vững hơn trên con đường kinh doanh lợi nhuận. Tổ chức tài chính là một công ty hoạt động trong lĩnh vực kinh doanh xử lý các giao dịch tài chính và tiền tệ như tiền gửi, cho vay, đầu tư và trao đổi tiền tệ. Trong số đó, cho vay là một hình thức kinh doanh chủ yếu của tổ chức tín dụng do đó việc tập trung chủ yếu vào các khách hàng để đưa ra quyết định vay là vô cùng cần thiết. Các khách hàng đến với tổ chức đều có ý định muốn vay, tuy nhiên không phải ai cũng đủ điều kiện để được vay. Các tổ chức tín dụng đều mong muốn có nhiều khách hàng nhưng cũng luôn phải cẩn trọng về rủi ro nợ xấu.

Bài nghiên cứu này sẽ giúp các tổ chức tài chính đánh giá được các khách hàng đủ điều kiện vay để từ đó đưa ra chính sách cho vay phù hợp với đối tượng mà tổ chức đang nhắm đến. Vì vậy tác giả đã lựa chọn đề tài “Phân tích các yếu tố tác động đến quyết định cho vay của tổ chức tài chính”.

3.2 Mục tiêu nghiên cứu

Đánh giá các yếu tố tác động đến quyết định cho vay của tổ chức tài chính. Từ đó giúp tổ chức đưa ra những chính sách phù hợp hơn với đối tượng khách hàng đang nhắm đến.

3.3 Đối tượng và phạm vi nghiên cứu nghiên cứu

Đối tượng nghiên cứu: Quyết định cho vay của tổ chức tài chính và các yếu tố tác động đến quyết định này.

Phạm vi nghiên cứu: 4269 khách hàng cần vay tiền tại một tổ chức tài chính.

3.4 Phương pháp nghiên cứu

Bài nghiên cứu sử dụng phương pháp hồi quy Logistic giải thích sự tác động của các yếu tố lên biến phụ thuộc trong hồi quy thông qua 3 mô hình Logit, Probit, Cloglog. Từ đó xây dựng mô hình hồi quy và đánh giá kết quả thu được với sự trợ giúp của phần mềm R & RStudio.

3.5 Kết cấu đề tài

Bài nghiên cứu gồm có 5 chương:

  • Chương 1: Phần mở đầu

  • Chương 2: Cơ sở lý thuyết

  • Chương 3: Phương pháp nghiên cứu

  • Chương 4: Kết quả nghiên cứu

  • Chương 5: Kết luận

4 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

4.1 Tổ chức tài chính

Trong kinh tế học tài chính, tổ chức tài chính hay định chế tài chính là tổ chức có chức năng cung cấp các dịch vụ tài chính cho các khách hàng hoặc các thành viên. Có lẽ dịch vụ tài chính quan trọng nhất mà các tổ chức tài chính cung cấp là hoạt động như các trung gian tài chính. Phần lớn các tổ chức tài chính được đặt dưới sự kiểm soát chặt chẽ của nhà nước.

Theo định nghĩa rộng, có ba loại hình tổ chức tài chính chủ yếu:

  • Các tổ chức tài chính chấp nhận tiền gửi và cho vay, bao gồm các ngân hàng, quỹ tín dụng, quỹ thế chấp, các công ty quản lý các tài sản ủy thác hay vốn đầu tư (trust company), quỹ nhà ở (building society).

  • Các công ty bảo hiểm và các quỹ hưu trí.

  • Các công ty môi giới chứng khoán, quỹ đầu tư ủy thác.

  • Công ty tài chính là loại hình tổ chức tín dụng phi ngân hàng, với chức năng sử dụng vốn tự có, vốn huy động và các nguồn vốn khác để cho vay, đầu tư; cung ứng các dịch vụ tư vấn về tài chính, tiền tệ và thực hiện một số dịch vụ khác theo quy định của pháp luật, nhưng không được làm dịch vụ thanh toán, không được nhận tiền gửi dưới 1 năm.

Trên thực tế, hầu hết mọi người hiện đang sống trong nền kinh tế thị trường vô cùng phát triển nên liên tục có những nhu cầu hoặc có nhu cầu định kỳ đối với những dịch vụ do tổ chức tài chính cung cấp.

Đầu tư là viễn cảnh có thể rất khó khăn đối với những người mới bắt đầu kinh doanh bởi vì những số tài sản sẽ thêm vào các danh mục đầu tư. Đồng thời tỷ lệ rủi ro của đầu tư được xác định dựa trên mức tương đối, tim mạch có thể được coi là khoản ổn định nhất, những khoản đầu tư khác là những khoản đầu tư được coi trọng nhất.

Tổ chức tài chính được hiểu là công ty phải doanh nghiệp thực hiện hoạt động lĩnh vực kinh doanh, xử lý những giao dịch tài chính và tiền tệ như cho vay vốn, đổi tiền tệ, tiền gửi thức đầu tư. Hiện nay, các tổ chức tài chính thực hiện cung cấp những dịch vụ tài chính có thể kể tới như công ty bảo hiểm, ngân hàng, công ty tài chính, đầu tư, công ty môi giới… và những tổ chức tài chính khác tùy theo phạm vi, quy mô và địa lý của doanh nghiệp, công ty đó.

4.2 Các loại tổ chức tài chính

Ngân hàng thương mại: Ngân hàng thương mại là một loại hình tổ chức tài chính chấp nhận tiền gửi, cung cấp dịch vụ tài khoản séc, cho vay kinh doanh, cá nhân và thế chấp, và cung cấp các sản phẩm tài chính cơ bản như chứng chỉ tiền gửi (CD) và tài khoản tiết kiệm cho các cá nhân và doanh nghiệp nhỏ. Ngân hàng thương mại là nơi hầu hết mọi người thực hiện công việc ngân hàng của họ, trái ngược với ngân hàng đầu tư.

Ngân hàng đầu tư: Các ngân hàng đầu tư chuyên cung cấp các dịch vụ được thiết kế để tạo điều kiện thuận lợi cho hoạt động kinh doanh, chẳng hạn như tài trợ chi tiêu vốn và chào bán cổ phần, bao gồm cả phát hành cổ phiếu lần đầu ra công chúng (IPO). Họ cũng thường cung cấp các dịch vụ môi giới cho các nhà đầu tư, đóng vai trò là nhà tạo lập thị trường cho các sàn giao dịch và quản lý các hoạt động sáp nhập, mua lại và tái cấu trúc doanh nghiệp khác.

Các công ty bảo hiểm: Trong số các tổ chức tài chính phi ngân hàng quen thuộc nhất là các công ty bảo hiểm. Cung cấp bảo hiểm, cho dù cho cá nhân hay tập đoàn, là một trong những dịch vụ tài chính lâu đời nhất. Bảo vệ tài sản và bảo vệ trước rủi ro tài chính, được đảm bảo thông qua các sản phẩm bảo hiểm, là một dịch vụ thiết yếu tạo điều kiện cho các khoản đầu tư cá nhân và doanh nghiệp thúc đẩy tăng trưởng kinh tế.

Công ty môi giới: Các công ty đầu tư và công ty môi giới, chẳng hạn như nhà cung cấp quỹ tương hỗ và quỹ giao dịch hối đoái (ETF) Fidelity Investments, chuyên cung cấp các dịch vụ đầu tư bao gồm quản lý tài sản và dịch vụ tư vấn tài chính. Họ cũng cung cấp quyền truy cập vào các sản phẩm đầu tư có thể từ cổ phiếu và trái phiếu đến các khoản đầu tư thay thế ít được biết đến hơn, chẳng hạn như quỹ phòng hộ và đầu tư cổ phần tư nhân.

4.3 Tầm quan trọng của tổ chức tài chính

Các tổ chức tài chính phục vụ hầu hết mọi người theo một cách nào đó, vì hoạt động tài chính là một phần quan trọng của bất kỳ nền kinh tế nào, với các cá nhân và công ty dựa vào các tổ chức tài chính để giao dịch và đầu tư. Các chính phủ coi việc giám sát và điều tiết các ngân hàng và tổ chức tài chính là cấp thiết vì chúng đóng vai trò như một bộ phận cấu thành của nền kinh tế. Trong lịch sử, những vụ phá sản của các tổ chức tài chính có thể tạo ra sự hoảng loạn.

Tại Hoa Kỳ, Tổng công ty Bảo hiểm Tiền gửi Liên bang (FDIC) bảo hiểm các tài khoản tiền gửi thông thường để trấn an các cá nhân và doanh nghiệp về sự an toàn tài chính của họ với các tổ chức tài chính. Sự lành mạnh của hệ thống ngân hàng của một quốc gia là nền tảng của sự ổn định kinh tế. Mất niềm tin vào một tổ chức tài chính có thể dễ dàng dẫn đến tình trạng ngân hàng chạy đua.

Sự tháo chạy của ngân hàng xảy ra khi các nhóm lớn người gửi tiền đồng loạt rút tiền ra khỏi ngân hàng do lo ngại rằng tổ chức này sẽ mất khả năng thanh toán. Với việc nhiều người rút tiền hơn, các ngân hàng sẽ sử dụng hết lượng tiền dự trữ của họ và cuối cùng là vỡ nợ. Các đợt điều hành ngân hàng đã xảy ra trong suốt lịch sử, kể cả trong thời kỳ Đại suy thoái và cuộc khủng hoảng tài chính 2008- 2009. Tổng công ty Bảo hiểm Tiền gửi Liên bang được thành lập vào năm 1933 để đáp lại sự điều hành của một ngân hàng. Hoạt động ngân hàng im lặng xảy ra khi tiền được rút qua chuyển khoản điện tử thay vì trực tiếp.

4.4 Ưu điểm khi cho vay của tổ chức tài chính

Các tổ chức tài chính cung cấp tài chính dài hạn, không được cung cấp bởi các ngân hàng thương mại.

Các quỹ được cung cấp ngay cả trong thời kỳ trầm cảm, khi các nguồn tài chính khác không có sẵn.

Có được khoản vay từ các tổ chức tài chính làm tăng thiện chí của khoản vay trên thị trường vốn. Do đó, một công ty như vậy cũng có thể gây quỹ dễ dàng từ các nguồn khác.

Bên cạnh việc cung cấp vốn, nhiều trong số các tổ chức này cung cấp tư vấn và tư vấn tài chính, quản lý và kỹ thuật cho các công ty kinh doanh.

Vì việc trả nợ có thể được thực hiện thành nhiều đợt dễ dàng, điều đó không chứng tỏ là gánh nặng cho doanh nghiệp.

5 CHƯƠNG 3: PHƯƠNG PHÁP NGHIÊN CỨU

5.1 Các chỉ số phân tích bảng ngẫu nhiên

5.1.1 Bảng tần số - tần suất

Bảng tần số - Bảng tần suất còn được gọi là bảng ngẫu nhiên, để hiển thị dữ liệu bằng cách chia nó thành các nhóm và tính số lần mỗi nhóm xuất hiện. Khi lập bảng ngẫu nhiên cho 2 biến thì bảng đó được gọi là bảng ngẫu nhiên 2 chiều, nếu lập cho 3 biến thì gọi là bảng ngẫu nhiên 3 chiều và cứ thế tăng lên. Bảng tần số thường được sử dụng để mô tả dữ liệu định lượng, nhưng cũng có thể được sử dụng để mô tả dữ liệu định tính.

5.1.2 Rủi ro tương đối (Relative Risk)

Với biến đáp ứng nhị phân Y, chúng ta sử dụng thuật ngữ chung “thành công” cho một đáp ứng và “thất bại” đối với đáp ứng còn lại. Đối với các đối tượng trong hàng i, ký hiệu \(\pi_i\) là xác suất “thành công” thì \(1-\pi_i\) là xác suất của “thất bại”. Cặp xác suất \((\pi_i,1-\pi_i)\) là phân phối xác suất có điều kiện của Y trong hàng i.

Giả sử \(\pi_1\)\(\pi_2\) là xác suất thành công của hai biến. Khi đó rủi ro tương đối (relative risk) giữa hai biến này là tỷ lệ xác suất “thành công” của hai biến: \(\frac{\pi_1}{\pi_2}\).

Chú ý:

  • Rủi ro tương đối là số không âm.

  • Rủi ro tương đối bằng 1 khi và chỉ khi biến đáp ứng độc lập theo nhóm.

5.1.3 Tỷ lệ chênh (Odd Ratio)

Trong hàng i của bange phân phối đồng thời 2x2 của các biến quan sát X và Y, tỷ lệ cược (odds) của “thành công” được định nghĩa là tỷ số giữa xác suất “thành công” và xác suất “không thành công”, ký hiệu \(odds_i\):

\[odds_i=\frac{\pi_i}{1-\pi_i}\]

Tỷ lệ chênh (Odds ratio) của hai hàng 1 và 2, được ký hiệu là \(\theta\), đó là tỷ số giữa tỷ lệ cược của “thành công” ở hàng 1 và tỷ lệ cược của “thành công” ở hàng 2:

\[\theta=\frac{odds_1}{odds_2}=\frac{\pi_1(1-\pi_2)}{\pi_2(1-\pi_1)}\]

5.2 Mô hình nghiên cứu

5.2.1 Mô hình hồi quy với hàm logit

Mô hình logit (Logistic Regression) là một trong những phương pháp phân loại phổ biến trong thống kê. Dựa vào đặc trưng của các mẫu, mô hình logit được sử dụng để dự đoán xác suất xảy ra một sự kiện hoặc thuộc tính (biến phụ thuộc) nhị phân (có hai lớp, thường được ký hiệu là 0 và 1).

Mô hình hồi quy logistic là trường hợp đặc biệt của GLM. Thành phần ngẫu nhiên (thành công, thất bại) là nhị phân. Hàm liên kết logit của \(\pi\) là phép biên đổi \(log(\frac{\pi}{1-\pi})\), ký hiệu bởi \(logit(\pi)\). Các mô hình hồi quy logistic thường được gọi là mô hình logit. Logit là tham số tự nhiên của phân phối nhị thức. Trong đó \(\pi\) bị giới hạn trong phạm vi (0, 1), logit có thể là số thực bất kỳ. Tập số thực cũng là khoảng giá trị có thể có cho các dự báo tuyến tính \((\alpha+\beta x)\), do đó, mô hình này không có vấn đề cầu trúc mà mô hình xác suất tuyến tính mắc phải.

Đây là một hàm liên kết mà nó đồng biến với xác suất \(\pi\) và giá trị biến thiên của nó là tùy ý (từ \(-\infty\) đến \(+\infty\)). Hàm liên kết được đề xuất là \(log(\frac{\pi(x)}{1-\pi(x)})\), được gọi là hàm logit và ký hiệu là \(logit(\pi)\) và mô hình hồi quy tương ứng là:

\[log(\frac{\pi(x)}{1-\pi(x)})=\alpha+\beta x\]

Đây được gọi là mô hình logistic hay mô hình logit.

5.2.2 Mô hình hồi quy với hàm probit

Hồi quy Probit, đôi khi còn được gọi là mô hình Probit, được sử dụng để ước lượng mô hình có biến phụ thuộc dạng nhị phân. Trong hồi quy Probit, xem hàm xác suất \(\pi(x)\) hoặc \(1-\pi(x)\) là hàm phân phối xác suất của một biến ngẫu nhiên X có phân phối chuẩn, tức là xác suất “Thành công” có dạng”

\[\pi(x)=\Phi(\alpha+\beta x)\]

trong đó \(\Phi(x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x \mathrm{e}^{-\frac{1}{2}t^2}\mathrm{dt}\) là hàm phân phối chuẩn chính tắc.

Ký hiệu: \(Probit(\pi(x))=\Phi^{-1}(\pi(x))\) và mô hình Probit được viết dưới dạng:

\[Probit(\pi(x))=\alpha+\beta x\]

5.2.3 Mô hình hồi quy với hàm cloglog

Mô hình Complementary Log-Log (cloglog) là một phương pháp phân loại khác trong thống kê. Mô hình cloglog dùng để dự đoán xác suất xảy ra một sự kiện hoặc thuộc tính nhị phân (có hai lớp, thường được ký hiệu là 0 và 1), dựa vào đặc trưng (biến độc lập) của các mẫu.

Trong trường hợp tỷ lệ cược phụ thuộc vào các biến giải thích dưới dạng hàm lũy thừa \(Odds(x)=\frac{\pi(x)}{1-\pi(x)}\), ta nhận được mô hình logistic có các biến dự báo ở dạng log, gọi là mô hình logistic dạng log-log:

\[log(\frac{\pi(x)}{1-\pi(x)})=\beta_0+\beta_1.logx_1+\beta_2.logx_2+...+\beta_m.logx_m\]

5.3 Các tiêu chí đánh giá mô hình

5.3.1 Chỉ số \(Pseudo - R^2\)

Vì hệ số xác định \(R^2\) không còn ý nghĩa trong việc đánh giá mức độ phù hợp của mô hình logistic nói riêng và các mô hình sử dụng phương pháp ML nói chung. Để thay cho vai trò của hệ số xác định \(R^2\), người ta dựa vào một chỉ sô gọi là “giả \(R^2\)” (\(Pseudo - R^2\)) được xác định như sau:

\[Pseudo - R^2=1-\frac{log(L_1)}{log(L_0)}=\frac{log(L_0)-log(L_1)}{log(L_0)}\]

Chỉ số này được đề xuất bởi McFadden nên còn có tên là hay McFadden’s R-squared. Khi chạy hồi quy, các phần mềm ứng dụng đều cung cấp chỉ số này.

Có thể dùng \(Pseudo - R^2\) để đánh giá mức độ phủ hợp của mô hình logistic đối với dữ liệu thực tế: Pseudo – R càng lớn, mô hình càng phù hợp. \(Pseudo - R^2\) càng bé, mô hình càng ít phù hợp. Tuy nhiên với mô hình Logistic, chi tiêu \(Pseudo - R^2\) do MacFadden đưa ra rất khó sử dụng để diễn giải mức độ giải thích của mô hình logistic nói riêng và các mô hình phân tích định tính nói chung, do vậy người ta cần phải kết hợp với các chỉ số khác.

5.3.2 Chỉ sô AIC (Akaike Information Criterian)

AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. Trong phần mềm R, AIC được tính bằng công thức sau:

\[AIC=Deviance+2k\]

5.3.3 Chỉ số Deviance

Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quá, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.

5.3.4 Chỉ số Brier

\[B=\frac{1}{n}\sum_{i=1}^n(Y_i-\widehat{\pi_i})^2=\frac{Sum squared resid}{n}\]

Chỉ số Brier thực chất là trung bỉnh của tổng bình phương các độ lệch giữa giá trị của biến phụ thuộc Y và giá trị ước lượng của nó. Vì vậy chỉ số B càng bé thì mô hình cho ước lượng càng chính xác, tức là càng phù hợp với dữ liệu quan sát.

5.3.5 Ma trận nhầm lẫn

Ma trận \(\begin{bmatrix}TN&FP\\FN&TP\end{bmatrix}\) được gọi là ma trận nhầm lẫn (Confusion Matrix) của mô hình. Ký hiệu TN (True Negative) là số âm tính thực, FN (Fale Negative) là số âm tính giả, FP (Fale Positive) là số dương tính giả, TP (True Positive) là sô dương tính thực.

Trong ma trận nhầm lẫn người ta xét các chỉ số:

  • Độ chính xác toàn thể \(=\frac{TN+TP}{n}\) (tỷ lệ dự báo đúng trên toàn bộ mẫu).

  • Sai số toàn thể \(=\frac{FN+FP}{n}\) (tỷ lệ dự báo sai trên mẫu).

  • Độ nhạy (Sensitivity) \(=\frac{TP}{FN+TP}=\frac{Số dương tính thực}{Tổng số quan sát có Y=1}\) (Tỷ lệ dự báo đúng trên tổng số các thành công được quan sát). Độ nhạy càng lớn càng tốt.

  • Sai số âm tính giả (Fale negative error) = 1 - Độ nhạy \(=\frac{FN}{FN+TP}\) (tỷ lệ dự báo sai trên tổng số các “Thành công được quan sát”).

  • Độ đặc hiệu (Specificity) \(=\frac{TN}{TN+FP}=\frac{Số âm tính thực}{Tổng số quan sát có Y=0}\) (tỷ lệ dự báo đúng trên tổng số các “Thất bại” được quan sát): Độ đặc hiệu càng lớn càng tốt.

  • Sai số dương tính giả = 1 - Độ đặc hiệu $=.

Một mô hình tốt là một mô hình có độ nhạy lớn và độ đặc hiệu lớn.

5.4 Dữ liệu nghiên cứu

5.4.1 Dữ liệu

data <- read_excel("C:/HK2-2023/Phân tích dữ liệu định tính/TL.xlsx")
data
str(data)
## tibble [4,269 × 13] (S3: tbl_df/tbl/data.frame)
##  $ loan_id                 : num [1:4269] 1 2 3 4 5 6 7 8 9 10 ...
##  $ no_of_dependents        : num [1:4269] 2 0 3 3 5 0 5 2 0 5 ...
##  $ education               : chr [1:4269] "Graduate" "Not Graduate" "Graduate" "Graduate" ...
##  $ self_employed           : chr [1:4269] "No" "Yes" "No" "No" ...
##  $ income_annum            : num [1:4269] 9600000 4100000 9100000 8200000 9800000 4800000 8700000 5700000 800000 1100000 ...
##  $ loan_amount             : num [1:4269] 29900000 12200000 29700000 30700000 24200000 13500000 33000000 15000000 2200000 4300000 ...
##  $ loan_term               : num [1:4269] 12 8 20 8 20 10 4 20 20 10 ...
##  $ cibil_score             : num [1:4269] 778 417 506 467 382 319 678 382 782 388 ...
##  $ residential_assets_value: num [1:4269] 2400000 2700000 7100000 18200000 12400000 6800000 22500000 13200000 1300000 3200000 ...
##  $ commercial_assets_value : num [1:4269] 17600000 2200000 4500000 3300000 8200000 8300000 14800000 5700000 800000 1400000 ...
##  $ luxury_assets_value     : num [1:4269] 22700000 8800000 33300000 23300000 29400000 13700000 29200000 11800000 2800000 3300000 ...
##  $ bank_asset_value        : num [1:4269] 8000000 3300000 12800000 7900000 5000000 5100000 4300000 6000000 600000 1600000 ...
##  $ loan_status             : chr [1:4269] "Approved" "Rejected" "Rejected" "Rejected" ...

5.4.2 Mô tả dữ liệu

Bộ dữ liệu bao gồm 4269 quan sát, có tất cả là 13 biến trong đó gồm 3 biến định tính và 10 biến định lượng.

Biến định tính

  • education: Tình trạng học vấn của khách hàng (Graduate: Đã tốt nghiệp, Not Graduate: Chưa tốt nghiệp)

  • self_employed: Khả năng tự làm chủ của khách hàng (No: Không, Yes: Có)

  • loan_status: Quyết định cho vay của tổ chức tài chính (Approved: Chấp nhận, Rejected: Từ chối)

Biến định lượng

  • loan_id: Số thứ tự của khách hàng

  • no_of_dependents: Số lượng người phụ thuộc của khách hàng

  • income_annum: Thu nhập hàng năm của khách hàng

  • loan_amount: Số tiền khách hàng muốn vay

  • loan_term: Kỳ hạn vay

  • cibil_score: Điểm dân sự của khách hàng

  • residential_assets_value: Giá trị tài sản nhà ở của khách hàng

  • commercial_assets_value: Giá trị tài sản thương mại của khách hàng

  • luxury_assets_value: Giá trị tài sản xa xỉ của khách hàng

  • bank_asset_value: Giá trị tài sản ngân hàng của khách hàng

5.4.3 Xác định biến phụ thuộc

Biến định tính

  • Phân tích tác động của các yếu tố đến quyết định cho vay của tổ chức tài chính (loan_status).

  • Quyết định cho vay có thể bị ảnh hưởng bởi nhiều yếu tố như: tình trạng học vấn của khách hàng (education), khả năng tự làm chủ của khách hàng (self_employed), thu nhập hàng năm của khách hàng (income_annum),… Do đó, tác giả chọn phân tích biến loan_status để phần nào giúp cho tổ chức tài chính phân loại những yếu tố tích cực và tiêu cực, từ đó có thể giảm thiểu những kết quả không mong muốn.

Biến định lượng

  • Phân tích tác động của các yếu tố đến số tiền khách hàng muốn vay (loan_amount).

  • Số tiền khách hàng muốn vay có thể bị ảnh hưởng bởi các yếu tố như: số lượng người phụ thuộc của khách hàng (no_of_dependents), thu nhập hàng năm của khách hàng (income_annum), khả năng tự làm chủ của khách hàng (self_employed),… Do đó, tác giả chọn phân tích biến loan_amount để giúp tổ chức tài chính đưa ra những chính sách ưu đãi vay phù hợp với từng đối tượng khách hàng.

6 CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU

6.1 Thống kê mô tả cho các biến

6.1.1 Biến định tính

6.1.1.1 Biến education

table(data$education)
## 
##     Graduate Not Graduate 
##         2144         2125
table(data$education)/sum(table(data$education))
## 
##     Graduate Not Graduate 
##    0.5022253    0.4977747
ggplot(data,aes(education))+geom_bar(color = "red",fill = "pink")+ geom_text(aes(label = scales::percent(after_stat(count/sum(count)), accuracy = 0.01)), stat = 'count', vjust = - .5)+xlab("Tình trạng học vấn của khách hàng")+ylab("Số lượng khách hàng")+theme_classic()

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • 2144 người đã tốt nghiệp, chiếm 50,22%.

  • 2125 người chưa tốt nghiệp, chiếm 49,78%.

Từ biểu đồ có thể thấy được tỷ lệ giữa các khách hàng đã tốt nghiệp và chưa tốt nghiệp không có sự chênh lệch lớn.

6.1.1.2 Biến self_employed

table(data$self_employed)
## 
##   No  Yes 
## 2119 2150
table(data$self_employed)/sum(table(data$self_employed))
## 
##        No       Yes 
## 0.4963692 0.5036308
ggplot(data,aes(self_employed))+geom_bar(color = "red",fill = "pink")+ geom_text(aes(label = scales::percent(after_stat(count/sum(count)), accuracy = 0.01)), stat = 'count', vjust = - .5)+xlab("Khả năng tự làm chủ của khách hàng")+ylab("Số lượng khách hàng")+theme_classic()

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • 2119 người không có khả năng tự làm chủ, chiếm 49,64%.

  • 2150 người có khả năng tự làm chủ, chiếm 50,36%.

Từ biểu đồ có thể thấy được tỷ lệ giữa các khách hàng có và không có khả năng tự làm chủ không có sự chênh lệch lớn.

6.1.1.3 Biến loan_status

table(data$loan_status)
## 
## Approved Rejected 
##     2656     1613
table(data$loan_status)/sum(table(data$loan_status))
## 
##  Approved  Rejected 
## 0.6221598 0.3778402
ggplot(data,aes(loan_status))+geom_bar(color = "red",fill = "pink")+ geom_text(aes(label = scales::percent(after_stat(count/sum(count)), accuracy = 0.01)), stat = 'count', vjust = - .5)+xlab("Quyết định cho vay của tổ chức tài chính")+ylab("Số lượng khách hàng")+theme_classic()

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • 2656 người được chấp nhận hồ sơ, chiếm 62,22%.

  • 2613 người bị từ chối hồ sơ, chiếm 37,78%.

Từ biểu đồ có thể thấy được tỷ lệ khách hàng được chấp nhận cao hơn khoảng 25% so với khách hàng bị từ chối.

6.1.2 Biến định lượng

6.1.2.1 Biến no_of_dependents

summary(data$no_of_dependents)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.000   3.000   2.499   4.000   5.000

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Số lượng người phụ thuộc ít nhất là 0 người.

  • Số lượng người phụ thuộc nhiều nhất là 5 người.

  • Có 25% số người có dưới 1 người phụ thuộc.

  • Có 50% số người có dưới 3 người phụ thuộc.

  • Có 75% số người có dưới 4 người phụ thuộc.

sd(data$no_of_dependents)
## [1] 1.69591

Độ lệch chuẩn của số lượng người phụ thuộc là 1,69591. Cho biết mức độ phân tán về số lượng người phụ thuộc của từng người trong 4269 người so với giá trị trung bình là 1,69591.

hist(data$no_of_dependents, col = "pink", main = "Biểu đồ số lượng người phụ thuộc", xlab = "Số lượng người phụ thuộc của khách hàng", ylab = "Số lượng khách hàng")

Từ biểu đồ thấy được số lượng người phụ thuộc giữa các khách hàng không có sự chênh lệch lớn.

6.1.2.2 Biến income_annum

summary(data$income_annum)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  200000 2700000 5100000 5059124 7500000 9900000

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Thu nhập hàng năm trung bình là 5059124.

  • Thu nhập hàng năm thấp nhất là 200000.

  • Thu nhập hàng năm cao nhất là 9900000.

  • Có 25% số người có thu nhập hàng năm dưới 2700000.

  • Có 50% số người có thu nhập hàng năm dưới 5100000.

  • Có 75% số người có thu nhập hàng năm dưới 7500000.

sd(data$income_annum)
## [1] 2806840

Độ lệch chuẩn của thu nhập hàng năm là 2806840. Cho biết mức độ phân tán về thu nhập hàng năm của từng người trong 4269 người so với giá trị trung bình là 2806840.

hist(data$income_annum, col = "pink", main = "Biểu đồ thu nhập hàng năm", xlab = "Thu nhập hàng năm của khách hàng", ylab = "Số lượng khách hàng")

Từ biểu đồ thấy được thu nhập hàng năm giữa các khách hàng khá đều, không có ai có thu nhập quá thấp.

6.1.2.3 Biến loan_amount

summary(data$loan_amount)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   300000  7700000 14500000 15133450 21500000 39500000

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Số tiền khách hàng muốn vay trung bình là 15133450.

  • Số tiền khách hàng muốn vay thấp nhất là 300000.

  • Số tiền khách hàng muốn vay cao nhất là 39500000.

  • Có 25% khách hàng muốn vay dưới 7700000.

  • Có 50% khách hàng muốn vay dưới 14500000.

  • Có 75% khách hàng muốn vay dưới 21500000.

sd(data$loan_amount)
## [1] 9043363

Độ lệch chuẩn của số tiền khách hàng muốn vay là 9043363. Cho biết mức độ phân tán về số tiền khách hàng muốn vay của từng người trong 4269 người so với giá trị trung bình là 9043363.

hist(data$loan_amount, col = "pink", main = "Biểu đồ số tiền khách hàng muốn vay", xlab = "Số tiền khách hàng muốn vay", ylab = "Số lượng khách hàng")

6.1.2.4 Biến loan_term

summary(data$loan_term)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     2.0     6.0    10.0    10.9    16.0    20.0

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Kỳ hạn vay trung bình là 10,9.

  • Kỳ hạn vay thấp nhất là 2.

  • Kỳ hạn vay cao nhất là 20.

  • Có 25% khách hàng có kỳ hạn vay dưới 6.

  • Có 50% khách hàng có kỳ hạn vay dưới 10.

  • Có 75% khách hàng có kỳ hạn vay dưới 16.

sd(data$loan_term)
## [1] 5.709187

Độ lệch chuẩn của kỳ hạn vay là 5,709187. Cho biết mức độ phân tán về kỳ hạn vay của từng người trong 4269 người so với giá trị trung bình là 5,709187.

hist(data$loan_term, col = "pink", main = "Biểu đồ kỳ hạn vay", xlab = "Kỳ hạn vay", ylab = "Số lượng khách hàng")

6.1.2.5 Biến cibil_score

summary(data$cibil_score)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   300.0   453.0   600.0   599.9   748.0   900.0

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Điểm dân sự trung bình là 599,9.

  • Điểm dân sự thấp nhất là 300.

  • Điểm dân sự cao nhất là 900.

  • Có 25% khách hàng có điểm dân sự dưới 453.

  • Có 50% khách hàng có điểm dân sự dưới 600.

  • Có 75% khách hàng có điểm dân sự dưới 748.

sd(data$cibil_score)
## [1] 172.4304

Độ lệch chuẩn của điểm dân sự là 172,4304. Cho biết mức độ phân tán về điểm dân sự của từng người trong 4269 người so với giá trị trung bình là 172,4304.

hist(data$cibil_score, col = "pink", main = "Biểu đồ điểm dân sự của khách hàng", xlab = "Điểm dân sự của khách hàng", ylab = "Số lượng khách hàng")

6.1.2.6 Biến residential_assets_value

summary(data$residential_assets_value)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##  -100000  2200000  5600000  7472617 11300000 29100000

Trong 4269 khách hàng gửi hồ sơ vay đến tổ chức tài chính, có:

  • Giá trị tài sản nhà ở trung bình là 7472617.

  • Giá trị tài sản nhà ở thấp nhất là -100000.

  • Giá trị tài sản nhà ở cao nhất là 29100000.

  • Giá trị tài sản nhà ở dưới 2200000 chiếm 25%.

  • Giá trị tài sản nhà ở dưới 5600000 chiếm 50%.

  • Giá trị tài sản nhà ở dưới 11300000 chiếm 75%.

sd(data$residential_assets_value)
## [1] 6503637

Độ lệch chuẩn của giá trị tài sản nhà ở là 6503637. Cho biết mức độ phân tán về giá trị tài sản nhà ở của từng người trong 4269 người so với giá trị trung bình là 6503637.

hist(data$residential_assets_value, col = "pink", main = "Biểu đồ giá trị tài sản nhà ở của khách hàng", xlab = "Giá trị tài sản nhà ở của khách hàng", ylab = "Số lượng khách hàng")

6.2 Thống kê mô tả cho các cặp biến

6.2.1 Biến loan_status và education

Hocvan <- data$education
Quyetdinh <- data$loan_status
table(Hocvan,Quyetdinh)
##               Quyetdinh
## Hocvan         Approved Rejected
##   Graduate         1339      805
##   Not Graduate     1317      808
prop.table(table(Hocvan,Quyetdinh))
##               Quyetdinh
## Hocvan          Approved  Rejected
##   Graduate     0.3136566 0.1885688
##   Not Graduate 0.3085032 0.1892715
addmargins(table(Hocvan,Quyetdinh))
##               Quyetdinh
## Hocvan         Approved Rejected  Sum
##   Graduate         1339      805 2144
##   Not Graduate     1317      808 2125
##   Sum              2656     1613 4269
ggplot(data, aes(Quyetdinh, fill = Hocvan)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Quyết định cho vay của tổ chức tài chính")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2656 người được chấp nhận hồ sơ có 1339 người đã tốt nghiệp (chiếm 31,37%) và 1317 người chưa tốt nghiệp (chiếm 30,85%).

  • Trong số 1613 người bị từ chối hồ sơ có 805 người đã tốt nghiệp (chiếm 18,86%) và 808 người chưa tốt nghiệp (chiếm 18,93%).

Như vậy giữa những người đã tốt nghiệp hay chưa tốt nghiệp thì được chấp nhận hồ sơ cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Hocvan,Quyetdinh),method = 'riskratio', rev = 'c')
## $tab
##               Quyetdinh
## Hocvan         Rejected        p0 Approved        p1 riskratio     lower
##   Graduate          805 0.3754664     1339 0.6245336 1.0000000        NA
##   Not Graduate      808 0.3802353     1317 0.6197647 0.9923641 0.9470318
##               Quyetdinh
## Hocvan            upper  p.value
##   Graduate           NA       NA
##   Not Graduate 1.039866 0.752337
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người chưa tốt nghiệp được chấp nhận hồ sơ so với tỷ lệ giữa những người đã tốt nghiệp được chấp nhận hồ sơ là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người chưa tốt nghiệp và đã tốt nghiệp được chấp nhận hồ sơ.

Tỉ lệ chênh

epitab(table(Hocvan,Quyetdinh), method = 'oddsratio', rev = 'c')
## $tab
##               Quyetdinh
## Hocvan         Rejected        p0 Approved        p1 oddsratio     lower
##   Graduate          805 0.4990701     1339 0.5041416  1.000000        NA
##   Not Graduate      808 0.5009299     1317 0.4958584  0.979918 0.8658634
##               Quyetdinh
## Hocvan            upper  p.value
##   Graduate           NA       NA
##   Not Graduate 1.108996 0.752337
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ chấp nhận so với từ chối hồ sơ của những người đã tốt nghiệp bằng 97,99% tỷ lệ chấp nhận so với từ chối hồ sơ của những người chưa tốt nghiệp.

6.2.2 Biến loan_status và no_of_dependents

Với dữ liệu gốc, biến số lượng người phụ thuộc (no_of_dependents) là biến định lượng có 6 loại giá trị là 0, 1, 2, 3, 4, 5, nên tác giả đã đặt quy ước về việc chuyển biến no_of_dependents như sau: Ít (0 - 2) và Nhiều (3 - 5).

f <- data.frame(data)
Phuthuoc <- f %>% mutate(pt = case_when(data$no_of_dependents == "0" ~ 1, data$no_of_dependents == "1" ~ 1, data$no_of_dependents == "2" ~ 1, data$no_of_dependents == "3" ~ 3, data$no_of_dependents == "4" ~ 3, data$no_of_dependents == "5" ~ 3))
Phuthuoc <- cut(Phuthuoc$pt, breaks = c(0,2,4), labels=c("Ít", "Nhiều"))
table(Phuthuoc,Quyetdinh)
##         Quyetdinh
## Phuthuoc Approved Rejected
##    Ít        1328      789
##    Nhiều     1328      824
prop.table(table(Phuthuoc,Quyetdinh))
##         Quyetdinh
## Phuthuoc  Approved  Rejected
##    Ít    0.3110799 0.1848208
##    Nhiều 0.3110799 0.1930194
addmargins(table(Phuthuoc,Quyetdinh))
##         Quyetdinh
## Phuthuoc Approved Rejected  Sum
##    Ít        1328      789 2117
##    Nhiều     1328      824 2152
##    Sum       2656     1613 4269
ggplot(data, aes(Quyetdinh, fill = Phuthuoc)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Quyết định cho vay của tổ chức tài chính")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2656 người được chấp nhận hồ sơ có 1328 người có số lượng người phụ thuộc ít (chiếm 31,11%) và 1328 người có số lượng người phụ thuộc nhiều (chiếm 31,11%).

  • Trong số 1613 người bị từ chối hồ sơ có 789 người có số lượng người phụ thuộc ít (chiếm 18,48%) và 824 người có số lượng người phụ thuộc nhiều (chiếm 19,3%).

Như vậy giữa những người có số lượng người phụ thuộc ít hay nhiều thì được chấp nhận hồ sơ cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Phuthuoc,Quyetdinh),method = 'riskratio', rev = 'c')
## $tab
##         Quyetdinh
## Phuthuoc Rejected        p0 Approved        p1 riskratio     lower    upper
##    Ít         789 0.3726972     1328 0.6273028 1.0000000        NA       NA
##    Nhiều      824 0.3828996     1328 0.6171004 0.9837361 0.9388036 1.030819
##         Quyetdinh
## Phuthuoc   p.value
##    Ít           NA
##    Nhiều 0.5073939
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có nhiều người phụ thuộc được chấp nhận hồ sơ so với tỷ lệ giữa những người có ít người phụ thuộc ít được chấp nhận hồ sơ là 0,98.

Vậy rủi ro tương đối mẫu là 0,98 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người có ít hay nhiều người phụ thuộc được chấp nhận hồ sơ.

Tỉ lệ chênh

epitab(table(Phuthuoc,Quyetdinh), method = 'oddsratio', rev = 'c')
## $tab
##         Quyetdinh
## Phuthuoc Rejected        p0 Approved  p1 oddsratio     lower   upper   p.value
##    Ít         789 0.4891507     1328 0.5 1.0000000        NA      NA        NA
##    Nhiều      824 0.5108493     1328 0.5 0.9575243 0.8460623 1.08367 0.5073939
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ chấp nhận so với từ chối hồ sơ của những người có ít người phụ thuộc bằng 95,75% tỷ lệ chấp nhận so với từ chối hồ sơ của những người có nhiều người phụ thuộc.

6.2.3 Biến loan_status và income_annum

Với dữ liệu gốc, biến thu nhập hàng năm của khách hàng (income_annum) là biến định lượng có giá trị trong khoảng 200000 - 9900000, nên tác giả đã đặt quy ước về việc chuyển biến income_annum như sau: Thấp (0 - 5000000) và Cao (5000000 - 10000000).

Thunhap <- cut(data$income_annum, breaks = c(0,5000000,10000000), labels = c("Thấp", "Cao"))
table(Thunhap,Quyetdinh)
##        Quyetdinh
## Thunhap Approved Rejected
##    Thấp     1331      793
##    Cao      1325      820
prop.table(table(Thunhap,Quyetdinh))
##        Quyetdinh
## Thunhap  Approved  Rejected
##    Thấp 0.3117826 0.1857578
##    Cao  0.3103771 0.1920825
addmargins(table(Thunhap,Quyetdinh))
##        Quyetdinh
## Thunhap Approved Rejected  Sum
##    Thấp     1331      793 2124
##    Cao      1325      820 2145
##    Sum      2656     1613 4269
ggplot(data, aes(Quyetdinh, fill = Thunhap)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Quyết định cho vay của tổ chức tài chính")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2656 người được chấp nhận hồ sơ có 1331 người có thu nhập thấp (chiếm 31,18%) và 1325 người có thu nhập cao (chiếm 31,04%).

  • Trong số 1613 người bị từ chối hồ sơ có 793 người có thu nhập thấp (chiếm 18,58%) và 820 người có thu nhập cao (chiếm 19,21%).

Như vậy giữa những người có thu nhập thấp hay cao thì được chấp nhận hồ sơ cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Thunhap,Quyetdinh),method = 'riskratio', rev = 'c')
## $tab
##        Quyetdinh
## Thunhap Rejected        p0 Approved        p1 riskratio     lower    upper
##    Thấp      793 0.3733522     1331 0.6266478  1.000000        NA       NA
##    Cao       820 0.3822844     1325 0.6177156  0.985746 0.9407199 1.032927
##        Quyetdinh
## Thunhap   p.value
##    Thấp        NA
##    Cao  0.5488346
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có thu nhập cao được chấp nhận hồ sơ so với tỷ lệ giữa những có thu nhập thấp được chấp nhận hồ sơ là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần bằng 1 cho thấy không có sự chênh lệch giữa những người có thu nhập cao hay thấp được chấp nhận hồ sơ.

Tỉ lệ chênh

epitab(table(Thunhap,Quyetdinh), method = 'oddsratio', rev = 'c')
## $tab
##        Quyetdinh
## Thunhap Rejected        p0 Approved        p1 oddsratio     lower    upper
##    Thấp      793 0.4916305     1331 0.5011295 1.0000000        NA       NA
##    Cao       820 0.5083695     1325 0.4988705 0.9627137 0.8506538 1.089536
##        Quyetdinh
## Thunhap   p.value
##    Thấp        NA
##    Cao  0.5488346
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ chấp nhận so với từ chối hồ sơ của những người có thu nhập thấp bằng 96,27% tỷ lệ chấp nhận so với từ chối hồ sơ của những người có thu nhập cao.

6.2.4 Biến loan_status và loan_term

Với dữ liệu gốc, biến kỳ hạn vay (loan_term) là biến định lượng có giá trị trong khoảng 2 - 20, nên tác giả đã đặt quy ước về việc chuyển biến loan_term như sau: Ngắn (0 - 10) và Dài (10 - 20).

Kyhan <- cut(data$loan_term, breaks = c(0,10,21), labels = c("Ngắn", "Dài"))
table(Kyhan,Quyetdinh)
##       Quyetdinh
## Kyhan  Approved Rejected
##   Ngắn     1412      751
##   Dài      1244      862
prop.table(table(Kyhan,Quyetdinh))
##       Quyetdinh
## Kyhan   Approved  Rejected
##   Ngắn 0.3307566 0.1759194
##   Dài  0.2914031 0.2019208
addmargins(table(Kyhan,Quyetdinh))
##       Quyetdinh
## Kyhan  Approved Rejected  Sum
##   Ngắn     1412      751 2163
##   Dài      1244      862 2106
##   Sum      2656     1613 4269
ggplot(data, aes(Quyetdinh, fill = Kyhan)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Quyết định cho vay của tổ chức tài chính")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2656 người được chấp nhận hồ sơ có 1412 người vay kỳ hạn ngắn (chiếm 33,08%) và 1244 người vay kỳ hạn dài (chiếm 29,14%).

  • Trong số 1613 người bị từ chối hồ sơ có 751 người vay kỳ hạn ngắn (chiếm 17,59%) và 862 người vay kỳ hạn dài (chiếm 20,19%).

Như vậy giữa những người vay kỳ hạn ngắn hay dài thì được chấp nhận hồ sơ cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Kyhan,Quyetdinh),method = 'riskratio', rev = 'c')
## $tab
##       Quyetdinh
## Kyhan  Rejected        p0 Approved        p1 riskratio     lower     upper
##   Ngắn      751 0.3472030     1412 0.6527970 1.0000000        NA        NA
##   Dài       862 0.4093067     1244 0.5906933 0.9048651 0.8633247 0.9484043
##       Quyetdinh
## Kyhan       p.value
##   Ngắn           NA
##   Dài  3.067475e-05
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người vay kỳ hạn dài được chấp nhận hồ sơ so với tỷ lệ giữa những vay kỳ hạn ngắn được chấp nhận hồ sơ là 0,9.

Vậy rủi ro tương đối mẫu là 0,9 cho thấy tỷ lệ được chấp nhận hồ sơ đối với những người vay kỳ hạn dài thấp hơn 10% so với những người vay kỳ hạn ngắn.

Với độ tin cậy 95%, thì tỷ lệ những người được chấp nhận hồ sơ vay kỳ hạn dài ít hơn 5% đến 14% những người vay kỳ hạn ngắn.

Tỉ lệ chênh

epitab(table(Kyhan,Quyetdinh), method = 'oddsratio', rev = 'c')
## $tab
##       Quyetdinh
## Kyhan  Rejected        p0 Approved        p1 oddsratio     lower     upper
##   Ngắn      751 0.4655921     1412 0.5316265 1.0000000        NA        NA
##   Dài       862 0.5344079     1244 0.4683735 0.7675706 0.6780451 0.8689167
##       Quyetdinh
## Kyhan       p.value
##   Ngắn           NA
##   Dài  3.067475e-05
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ chấp nhận so với từ chối hồ sơ của những người vay kỳ hạn ngắn bằng 76,76% tỷ lệ chấp nhận so với từ chối hồ sơ của những người vay kỳ hạn dài.

6.2.5 Biến loan_status và cibil_score

Với dữ liệu gốc, biến điểm dân sự của khách hàng (cibil_score) là biến định lượng có giá trị trong khoảng 300 - 900, nên tác giả đã đặt quy ước về việc chuyển biến cibil_score như sau: Kém (100 - 600) và Tốt (600 - 1000).

Diem <- cut(data$cibil_score, breaks = c(100,600,1000), labels = c("Kém", "Tốt"))
table(Diem,Quyetdinh)
##      Quyetdinh
## Diem  Approved Rejected
##   Kém      542     1602
##   Tốt     2114       11
prop.table(table(Diem,Quyetdinh))
##      Quyetdinh
## Diem     Approved    Rejected
##   Kém 0.126961818 0.375263528
##   Tốt 0.495197939 0.002576716
addmargins(table(Diem,Quyetdinh))
##      Quyetdinh
## Diem  Approved Rejected  Sum
##   Kém      542     1602 2144
##   Tốt     2114       11 2125
##   Sum     2656     1613 4269
ggplot(data, aes(Quyetdinh, fill = Diem)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Quyết định cho vay của tổ chức tài chính")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2656 người được chấp nhận hồ sơ có 542 người có điểm dân sự kém (chiếm 12,7%) và 2114 người có điểm dân sự tốt (chiếm 49,52%).

  • Trong số 1613 người bị từ chối hồ sơ có 1602 người có điểm dân sự kém (chiếm 37,53%) và 11 người có điểm dân sự tốt (chiếm 0,26%).

Như vậy tỷ lệ được chấp nhận hồ sơ của những người có điểm dân sự tốt cao hơn so với những người có điểm dân sự kém và ngược lại.

Rủi ro tương đối

epitab(table(Diem,Quyetdinh),method = 'riskratio', rev = 'c')
## $tab
##      Quyetdinh
## Diem  Rejected          p0 Approved        p1 riskratio    lower    upper
##   Kém     1602 0.747201493      542 0.2527985  1.000000       NA       NA
##   Tốt       11 0.005176471     2114 0.9948235  3.935243 3.658801 4.232571
##      Quyetdinh
## Diem  p.value
##   Kém      NA
##   Tốt       0
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có điểm dân sự tốt được chấp nhận hồ sơ so với tỷ lệ giữa những người có điểm dân sự kém được chấp nhận hồ sơ là 3,94.

Vậy rủi ro tương đối mẫu là 3,94 cho thấy tỷ lệ giữa những người được chấp nhận trong những người có điểm dân sự tốt cao hơn 3,94 lần so với tỷ lệ những người có điểm dân sự kém.

Với độ tin cậy 95% thì giá trị này cho biết tỷ lệ những người được chấp nhận trong những người có điểm dân sự tốt cao hơn trong khoảng 3,66 lần đến 4,23 lần so với tỷ lệ những người có điểm dân sự kém.

Tỉ lệ chênh

epitab(table(Diem,Quyetdinh), method = 'oddsratio', rev = 'c')
## $tab
##      Quyetdinh
## Diem  Rejected          p0 Approved        p1 oddsratio    lower    upper
##   Kém     1602 0.993180409      542 0.2040663    1.0000       NA       NA
##   Tốt       11 0.006819591     2114 0.7959337  568.0356 311.6079 1035.482
##      Quyetdinh
## Diem  p.value
##   Kém      NA
##   Tốt       0
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ chấp nhận so với từ chối hồ sơ của những người có điểm dân sự kém gấp 568,04 lần tỷ lệ chấp nhận so với từ chối hồ sơ của những người có điểm dân sự tốt.

6.2.6 Biến loan_amount và education

Với dữ liệu gốc, biến Số tiền khách hàng muốn vay (loan_amount) là biến định lượng có giá trị trong khoảng 300000 - 39500000, nên tác giả đã đặt quy ước về việc chuyển biến loan_amount như sau: I (0 - 20000000) và N (20000000 - 40000000).

Vay <- cut(data$loan_amount, breaks = c(0,20000000,40000000), labels = c("I", "N"))
table(Hocvan,Vay)
##               Vay
## Hocvan            I    N
##   Graduate     1507  637
##   Not Graduate 1482  643
prop.table(table(Hocvan,Vay))
##               Vay
## Hocvan                 I         N
##   Graduate     0.3530101 0.1492153
##   Not Graduate 0.3471539 0.1506208
addmargins(table(Hocvan,Vay))
##               Vay
## Hocvan            I    N  Sum
##   Graduate     1507  637 2144
##   Not Graduate 1482  643 2125
##   Sum          2989 1280 4269
ggplot(data, aes(Vay, fill = Hocvan)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Số tiền khách hàng muốn vay")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2989 người được muốn vay ít có 1507 người đã tốt nghiệp (chiếm 35,3%) và 1482 người chưa tốt nghiệp (chiếm 34,72%).

  • Trong số 1280 người bị từ chối hồ sơ có 637 người đã tốt nghiệp (chiếm 14,92%) và 643 người chưa tốt nghiệp (chiếm 15,06%).

Như vậy giữa những người đã tốt nghiệp hay chưa tốt nghiệp thì khách hàng muốn vay ít chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Hocvan,Vay),method = 'riskratio', rev = 'c')
## $tab
##               Vay
## Hocvan           N        p0    I        p1 riskratio     lower    upper
##   Graduate     637 0.2971082 1507 0.7028918 1.0000000        NA       NA
##   Not Graduate 643 0.3025882 1482 0.6974118 0.9922036 0.9540004 1.031937
##               Vay
## Hocvan           p.value
##   Graduate            NA
##   Not Graduate 0.7133093
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người chưa tốt nghiệp muốn vay ít so với tỷ lệ giữa những người đã tốt nghiệp muốn vay ít là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người chưa tốt nghiệp và đã tốt nghiệp muốn vay ít.

Tỉ lệ chênh

epitab(table(Hocvan,Vay), method = 'oddsratio', rev = 'c')
## $tab
##               Vay
## Hocvan           N        p0    I       p1 oddsratio     lower    upper
##   Graduate     637 0.4976563 1507 0.504182 1.0000000        NA       NA
##   Not Graduate 643 0.5023437 1482 0.495818 0.9742343 0.8546647 1.110532
##               Vay
## Hocvan           p.value
##   Graduate            NA
##   Not Graduate 0.7133093
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ vay ít so với vay nhiều của những người đã tốt nghiệp bằng 97,42% tỷ lệ giữa vay ít so với vay nhiều của những người chưa tốt nghiệp.

6.2.7 Biến loan_amount và no_of_dependents

table(Phuthuoc,Vay)
##         Vay
## Phuthuoc    I    N
##    Ít    1487  630
##    Nhiều 1502  650
prop.table(table(Phuthuoc,Vay))
##         Vay
## Phuthuoc         I         N
##    Ít    0.3483251 0.1475755
##    Nhiều 0.3518388 0.1522605
addmargins(table(Phuthuoc,Vay))
##         Vay
## Phuthuoc    I    N  Sum
##    Ít    1487  630 2117
##    Nhiều 1502  650 2152
##    Sum   2989 1280 4269
ggplot(data, aes(Vay, fill = Phuthuoc)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Số tiền khách hàng muốn vay")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2989 người muốn vay ít có 1487 người có số lượng người phụ thuộc ít (chiếm 34,83%) và 1502 người có số lượng người phụ thuộc nhiều (chiếm 35,18%).

  • Trong số 1280 người muốn vay nhiều có 630 người có số lượng người phụ thuộc ít (chiếm 14,76%) và 650 người có số lượng người phụ thuộc nhiều (chiếm 15,23%).

Như vậy giữa những người có số lượng người phụ thuộc ít hay nhiều thì khách hàng muốn vay ít cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Phuthuoc,Vay),method = 'riskratio', rev = 'c')
## $tab
##         Vay
## Phuthuoc   N        p0    I        p1 riskratio    lower    upper  p.value
##    Ít    630 0.2975909 1487 0.7024091 1.0000000       NA       NA       NA
##    Nhiều 650 0.3020446 1502 0.6979554 0.9936594 0.955405 1.033446 0.763725
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có nhiều người phụ thuộc muốn vay ít so với tỷ lệ giữa những có ít người phụ thuộc muốn vay ít là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người có ít hay nhiều người phụ thuộc muốn vay ít.

Tỉ lệ chênh

epitab(table(Phuthuoc,Vay), method = 'oddsratio', rev = 'c')
## $tab
##         Vay
## Phuthuoc   N        p0    I        p1 oddsratio     lower    upper  p.value
##    Ít    630 0.4921875 1487 0.4974908 1.0000000        NA       NA       NA
##    Nhiều 650 0.5078125 1502 0.5025092 0.9790078 0.8588443 1.115984 0.763725
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ vay ít so với vay nhiều của những người có ít người phụ thuộc bằng 97,9% tỷ lệ vay ít so với vay nhiều của những người có nhiều người phụ thuộc.

6.2.8 Biến loan_amount và income_annum

table(Thunhap,Vay)
##        Vay
## Thunhap    I    N
##    Thấp 2124    0
##    Cao   865 1280
prop.table(table(Thunhap,Vay))
##        Vay
## Thunhap         I         N
##    Thấp 0.4975404 0.0000000
##    Cao  0.2026236 0.2998360
addmargins(table(Thunhap,Vay))
##        Vay
## Thunhap    I    N  Sum
##    Thấp 2124    0 2124
##    Cao   865 1280 2145
##    Sum  2989 1280 4269
ggplot(data, aes(Vay, fill = Thunhap)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Số tiền khách hàng muốn vay")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2989 người muốn vay ít có 2124 người có thu nhập thấp (chiếm 49,75%) và 865 người có thu nhập cao (chiếm 20,26%).

  • Trong số 1280 người muốn vay nhiều có 0 người có thu nhập thấp và 1280 người có thu nhập cao (chiếm 29,98%).

Như vậy đối với những người muốn vay ít thì tỷ lệ người có thu nhập thấp cao hơn khoảng 30% so với những người có thu nhập cao. Tuy nhiên chỉ những người có thu nhập cao mới muốn vay nhiều và hoàn toàn không có người có thu nhập thấp.

Rủi ro tương đối

epitab(table(Thunhap,Vay),method = 'riskratio', rev = 'c')
## $tab
##        Vay
## Thunhap    N        p0    I        p1 riskratio    lower     upper p.value
##    Thấp    0 0.0000000 2124 1.0000000 1.0000000       NA        NA      NA
##    Cao  1280 0.5967366  865 0.4032634 0.4032634 0.383029 0.4245667       0
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có thu nhập cao muốn vay ít so với tỷ lệ giữa những có thu nhập thấp muốn vay ít là 0,4.

Vậy rủi ro tương đối mẫu là 0,4 cho thấy tỷ lệ muốn vay ít đối với những người có thu nhập cao thấp hơn 60% so với những người có thu nhập thấp.

Với độ tin cậy 95%, thì tỷ lệ những người muốn vay ít có thu nhập cao ít hơn 57,54% đến 61,7% những người có thu nhập thấp.

Tỉ lệ chênh

epitab(table(Thunhap,Vay), method = 'oddsratio', rev = 'c')
## $tab
##        Vay
## Thunhap    N p0    I        p1 oddsratio lower upper p.value
##    Thấp    0  0 2124 0.7106056         1    NA    NA      NA
##    Cao  1280  1  865 0.2893944         0     0   NaN       0
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ vay ít so với vay nhiều của những người có thu nhập thấp so với tỷ lệ vay ít so với vay nhiều của những người có thu nhập cao là 0. Vì không có khách hàng nào có thu nhập thấp muốn vay nhiều.

6.2.9 Biến loan_amount và loan_term

table(Kyhan,Vay)
##       Vay
## Kyhan     I    N
##   Ngắn 1525  638
##   Dài  1464  642
prop.table(table(Kyhan,Vay))
##       Vay
## Kyhan          I         N
##   Ngắn 0.3572265 0.1494495
##   Dài  0.3429375 0.1503865
addmargins(table(Kyhan,Vay))
##       Vay
## Kyhan     I    N  Sum
##   Ngắn 1525  638 2163
##   Dài  1464  642 2106
##   Sum  2989 1280 4269
ggplot(data, aes(Vay, fill = Kyhan)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Số tiền khách hàng muốn vay")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2989 người muốn vay ít có 1525 người vay kỳ hạn ngắn (chiếm 35,72%) và 1464 người vay kỳ hạn dài (chiếm 34,29%).

  • Trong số 1280 người muốn vay nhiều có 638 người vay kỳ hạn ngắn (chiếm 14,94%) và 642 người vay kỳ hạn dài (chiếm 15,04%).

Như vậy giữa những người vay kỳ hạn ngắn hay dài thì số khách hàng muốn vay ít cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Kyhan,Vay),method = 'riskratio', rev = 'c')
## $tab
##       Vay
## Kyhan    N        p0    I        p1 riskratio     lower    upper   p.value
##   Ngắn 638 0.2949607 1525 0.7050393 1.0000000        NA       NA        NA
##   Dài  642 0.3048433 1464 0.6951567 0.9859829 0.9480046 1.025483 0.4831729
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người vay kỳ hạn dài muốn vay ít so với tỷ lệ giữa những người vay kỳ hạn ngắn muốn vay ít là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người vay kỳ hạn ngắn hay dài muốn vay ít.

Tỉ lệ chênh

epitab(table(Kyhan,Vay), method = 'oddsratio', rev = 'c')
## $tab
##       Vay
## Kyhan    N        p0    I        p1 oddsratio     lower    upper   p.value
##   Ngắn 638 0.4984375 1525 0.5102041 1.0000000        NA       NA        NA
##   Dài  642 0.5015625 1464 0.4897959 0.9540187 0.8369249 1.087495 0.4831729
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ vay ít so với vay nhiều của những người vay kỳ hạn ngắn bằng 95,4% tỷ lệ vay ít so với vay nhiều của những người vay kỳ hạn dài.

6.2.10 Biến loan_amount và cibil_score

table(Diem,Vay)
##      Vay
## Diem     I    N
##   Kém 1504  640
##   Tốt 1485  640
prop.table(table(Diem,Vay))
##      Vay
## Diem          I         N
##   Kém 0.3523073 0.1499180
##   Tốt 0.3478566 0.1499180
addmargins(table(Diem,Vay))
##      Vay
## Diem     I    N  Sum
##   Kém 1504  640 2144
##   Tốt 1485  640 2125
##   Sum 2989 1280 4269
ggplot(data, aes(Vay, fill = Diem)) +  geom_bar(position = 'dodge')+ylab("Số lượng khách hàng")+xlab("Số tiền khách hàng muốn vay")

Từ bảng tần số và đồ thị, ta thấy:

  • Trong số 2989 người muốn vay ít có 1504 người có điểm dân sự kém (chiếm 35,23%) và 1485 người có điểm dân sự tốt (chiếm 34,79%).

  • Trong số 1280 người muốn vay nhiều có 640 người có điểm dân sự kém (chiếm 14,99%) và 640 người có điểm dân sự tốt (chiếm 14,99%).

Như vậy giữa những người có điểm dân sự tốt hay kém thì số khách hàng muốn vay ít cũng chiếm tỷ lệ cao nhất.

Rủi ro tương đối

epitab(table(Diem,Vay),method = 'riskratio', rev = 'c')
## $tab
##      Vay
## Diem    N        p0    I        p1 riskratio     lower    upper   p.value
##   Kém 640 0.2985075 1504 0.7014925 1.0000000        NA       NA        NA
##   Tốt 640 0.3011765 1485 0.6988235 0.9961952 0.9578402 1.036086 0.8673651
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ giữa những người có điểm dân sự tốt muốn vay ít so với tỷ lệ giữa những có điểm dân sự kém muốn vay ít là 0,99.

Vậy rủi ro tương đối mẫu là 0,99 gần với 1 cho thấy không có sự chênh lệch nhiều giữa những người có điểm dân sự kém và tốt muốn vay ít.

Tỉ lệ chênh

epitab(table(Diem,Vay), method = 'oddsratio', rev = 'c')
## $tab
##      Vay
## Diem    N  p0    I        p1 oddsratio    lower  upper   p.value
##   Kém 640 0.5 1504 0.5031783  1.000000       NA     NA        NA
##   Tốt 640 0.5 1485 0.4968217  0.987367 0.866187 1.1255 0.8673651
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Tỷ lệ vay ít so với vay nhiều của những người có điểm dân sự kém bằng 98,74% tỷ lệ vay ít so với vay nhiều của những người có điểm dân sự tốt.

6.3 Thống kê suy diễn cho các biến định tính

6.3.1 Kiểm định tính độc lập giữa hai biến định tính

6.3.1.1 Biến loan_status và Hocvan

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến loan_status và biến Hocvan độc lập

  • \(H_1\): Biến loan_status và biến Hocvan không độc lập

Xét thống kê:

chisq.test(table(data$loan_status,Hocvan))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(data$loan_status, Hocvan)
## X-squared = 0.083958, df = 1, p-value = 0.772

Ta có p-value = 0,772 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến loan_status và biến Hocvan độc lập với nhau.

6.3.1.2 Biến loan_status và Phuthuoc

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến loan_status và biến Phuthuoc độc lập

  • \(H_1\): Biến loan_status và biến Phuthuoc không độc lập

Xét thống kê:

chisq.test(table(data$loan_status,Phuthuoc))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(data$loan_status, Phuthuoc)
## X-squared = 0.43013, df = 1, p-value = 0.5119

Ta có p-value = 0,5119 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến loan_status và biến Phuthuoc độc lập với nhau.

6.3.1.3 Biến loan_status và Thunhap

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến loan_status và biến Thunhap độc lập

  • \(H_1\): Biến loan_status và biến Thunhap không độc lập

Xét thống kê:

chisq.test(table(data$loan_status,Thunhap))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(data$loan_status, Thunhap)
## X-squared = 0.32521, df = 1, p-value = 0.5685

Ta có p-value = 0,5685 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến loan_status và biến Thunhap độc lập với nhau.

6.3.1.4 Biến loan_status và Kyhan

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến loan_status và biến Kyhan độc lập

  • \(H_1\): Biến loan_status và biến Kyhan không độc lập

Xét thống kê:

chisq.test(table(data$loan_status,Kyhan))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(data$loan_status, Kyhan)
## X-squared = 17.244, df = 1, p-value = 3.287e-05

Ta có p-value = 3,287e-05 < 0,05 nên bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến loan_status và biến Kyhan không độc lập với nhau.

6.3.1.5 Biến loan_status và Diem

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến loan_status và biến Diem độc lập

  • \(H_1\): Biến loan_status và biến Diem không độc lập

Xét thống kê:

chisq.test(table(data$loan_status,Diem))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(data$loan_status, Diem)
## X-squared = 2496.5, df = 1, p-value < 2.2e-16

Ta có p-value = 2,2e-16 < 0,05 nên bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến loan_status và biến Diem không độc lập với nhau.

6.3.1.6 Biến Vay và Hocvan

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến Vay và biến Hocvan độc lập

  • \(H_1\): Biến Vay và biến Hocvan không độc lập

Xét thống kê:

chisq.test(table(Vay,Hocvan))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(Vay, Hocvan)
## X-squared = 0.12768, df = 1, p-value = 0.7209

Ta có p-value = 0,7209 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến Vay và biến Hocvan độc lập với nhau.

6.3.1.7 Biến Vay và Phuthuoc

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến Vay và biến Phuthuoc độc lập

  • \(H_1\): Biến Vay và biến Phuthuoc không độc lập

Xét thống kê:

chisq.test(table(Vay,Phuthuoc))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(Vay, Phuthuoc)
## X-squared = 0.080732, df = 1, p-value = 0.7763

Ta có p-value = 0,7763 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến Vay và biến Phuthuoc độc lập với nhau.

6.3.1.8 Biến Vay và Thunhap

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến Vay và biến Thunhap độc lập

  • \(H_1\): Biến Vay và biến Thunhap không độc lập

Xét thống kê:

chisq.test(table(Vay,Thunhap))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(Vay, Thunhap)
## X-squared = 1807.4, df = 1, p-value < 2.2e-16

Ta có p-value = 2,2e-16 < 0,05 nên bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến Vay và biến Thunhap không độc lập với nhau.

6.3.1.9 Biến Vay và Kyhan

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến Vay và biến Kyhan độc lập

  • \(H_1\): Biến Vay và biến Kyhan không độc lập

Xét thống kê:

chisq.test(table(Vay,Kyhan))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(Vay, Kyhan)
## X-squared = 0.45046, df = 1, p-value = 0.5021

Ta có p-value = 0,5021 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến Vay và biến Kyhan độc lập với nhau.

6.3.1.10 Biến Vay và Diem

Giả thuyết/Đối thuyết:

  • \(H_0\): Biến Vay và biến Diem độc lập

  • \(H_1\): Biến Vay và biến Diem không độc lập

Xét thống kê:

chisq.test(table(Vay,Diem))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(Vay, Diem)
## X-squared = 0.024616, df = 1, p-value = 0.8753

Ta có p-value = 0,8753 > 0,05 nên chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\).

Vậy với mức ý nghĩa 5%, biến Vay và biến Diem độc lập với nhau.

6.3.2 Khoảng ước lượng tỷ lệ

6.3.2.1 Ước lượng tỷ lệ khách hàng được chấp nhận hồ sơ

a <- data[data$loan_status == "Approved",]
prop.test(length(a$loan_status == "Approved"), length(data$loan_status))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(a$loan_status == "Approved") out of length(data$loan_status), null probability 0.5
## X-squared = 254.34, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6073939 0.6367041
## sample estimates:
##         p 
## 0.6221598

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng được chấp nhận hồ sơ nằm trong khoảng từ 60,74% đến 63,67%.

6.3.2.2 Ước lượng tỷ lệ khách hàng đã tốt nghiệp

b <- data[data$education == "Graduate",]
prop.test(length(b$education == "Graduate"), length(data$education))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(b$education == "Graduate") out of length(data$education), null probability 0.5
## X-squared = 0.075896, df = 1, p-value = 0.7829
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4871145 0.5173322
## sample estimates:
##         p 
## 0.5022253

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng đã tốt nghiệp nằm trong khoảng từ 48,71% đến 51,73%.

6.3.2.3 Ước lượng tỷ lệ khách hàng có thu nhập cao

c <- data[data$income_annum == 5000000 | data$income_annum > 5000000,]
prop.test(length(c$income_annum == 5000000 | c$income_annum > 5000000), length(data$income_annum))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(c$income_annum == 5e+06 | c$income_annum > 5e+06) out of length(data$income_annum), null probability 0.5
## X-squared = 2.4371, df = 1, p-value = 0.1185
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4969481 0.5271574
## sample estimates:
##         p 
## 0.5120637

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng có thu nhập cao nằm trong khoảng từ 49,69% đến 52,72%.

6.3.2.4 Ước lượng tỷ lệ khách hàng vay kỳ hạn ngắn

c <- data[data$loan_term == 10 | data$loan_term < 10,]
prop.test(length(c$loan_term == 10 | c$loan_term < 10), length(data$loan_term))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(c$loan_term == 10 | c$loan_term < 10) out of length(data$loan_term), null probability 0.5
## X-squared = 0.7346, df = 1, p-value = 0.3914
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4915623 0.5217777
## sample estimates:
##        p 
## 0.506676

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng vay kỳ hạn ngắn nằm trong khoảng từ 49,16% đến 52,18%.

6.3.2.5 Ước lượng tỷ lệ khách hàng có điểm dân sự tốt

e <- data[data$cibil_score == 600 | data$cibil_score > 600,]
prop.test(length(e$cibil_score == 600 | e$cibil_score > 600), length(data$cibil_score))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(e$cibil_score == 600 | e$cibil_score > 600) out of length(data$cibil_score), null probability 0.5
## X-squared = 0.00093699, df = 1, p-value = 0.9756
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4852420 0.5154601
## sample estimates:
##         p 
## 0.5003514

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng có điểm dân sự tốt nằm trong khoảng từ 48,52% đến 51,55%.

6.3.2.6 Ước lượng tỷ lệ khách hàng muốn vay ít

i <- data[data$loan_amount == 20000000 | data$loan_amount < 20000000,]
prop.test(length(i$loan_amount == 20000000 | i$loan_amount < 20000000), length(data$loan_amount))
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(i$loan_amount == 2e+07 | i$loan_amount < 2e+07) out of length(data$loan_amount), null probability 0.5
## X-squared = 683.36, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6861260 0.7138389
## sample estimates:
##        p 
## 0.700164

Với độ tin cậy 95%, ước lượng tỷ lệ khách hàng muốn vay ít nằm trong khoảng từ 68,61% đến 71,38%.

6.4 Ước lượng mô hình hồi quy

6.4.1 Ma trận hệ số tương quan

continuous_vars <- data[, sapply(data, is.numeric)]
cor_matrix <- cor(continuous_vars)
cor_matrix
##                               loan_id no_of_dependents income_annum
## loan_id                   1.000000000      0.005325859  0.012592140
## no_of_dependents          0.005325859      1.000000000  0.007266337
## income_annum              0.012592140      0.007266337  1.000000000
## loan_amount               0.008170193     -0.003365804  0.927469911
## loan_term                 0.009808718     -0.020110568  0.011488299
## cibil_score               0.016323386     -0.009998470 -0.023034422
## residential_assets_value  0.020935692      0.007375567  0.636841466
## commercial_assets_value   0.018595237     -0.001531343  0.640327698
## luxury_assets_value      -0.000862305      0.002816552  0.929145421
## bank_asset_value          0.010764767      0.011163372  0.851093128
##                           loan_amount    loan_term  cibil_score
## loan_id                   0.008170193  0.009808718  0.016323386
## no_of_dependents         -0.003365804 -0.020110568 -0.009998470
## income_annum              0.927469911  0.011488299 -0.023034422
## loan_amount               1.000000000  0.008437257 -0.017034787
## loan_term                 0.008437257  1.000000000  0.007809878
## cibil_score              -0.017034787  0.007809878  1.000000000
## residential_assets_value  0.594595710  0.008015643 -0.019946757
## commercial_assets_value   0.603188088 -0.005477660 -0.003769346
## luxury_assets_value       0.860914033  0.012490136 -0.028617628
## bank_asset_value          0.788121707  0.017177422 -0.015478271
##                          residential_assets_value commercial_assets_value
## loan_id                               0.020935692             0.018595237
## no_of_dependents                      0.007375567            -0.001531343
## income_annum                          0.636841466             0.640327698
## loan_amount                           0.594595710             0.603188088
## loan_term                             0.008015643            -0.005477660
## cibil_score                          -0.019946757            -0.003769346
## residential_assets_value              1.000000000             0.414786027
## commercial_assets_value               0.414786027             1.000000000
## luxury_assets_value                   0.590932425             0.591127500
## bank_asset_value                      0.527417555             0.548575593
##                          luxury_assets_value bank_asset_value
## loan_id                         -0.000862305       0.01076477
## no_of_dependents                 0.002816552       0.01116337
## income_annum                     0.929145421       0.85109313
## loan_amount                      0.860914033       0.78812171
## loan_term                        0.012490136       0.01717742
## cibil_score                     -0.028617628      -0.01547827
## residential_assets_value         0.590932425       0.52741756
## commercial_assets_value          0.591127500       0.54857559
## luxury_assets_value              1.000000000       0.78851691
## bank_asset_value                 0.788516910       1.00000000

Qua ma trận hệ số tương quan giữa các biến ta thấy có mối tương quan mạnh giữa các cặp biến income_annum và loan_amount, income_annum và luxury_assets_value, income_annum và bank_asset_value, loan_amount và income_annum, loan_amount và luxury_assets_value.

6.4.2 Mô hình hồi quy logit

6.4.2.1 Mô hình 1

MH1 <- glm(factor(data$loan_status)~data$no_of_dependents+data$education+data$self_employed+data$income_annum+data$loan_amount+data$loan_term+data$cibil_score+data$residential_assets_value+data$commercial_assets_value+data$luxury_assets_value+data$bank_asset_value, family = binomial(link = "logit"), data = data)
summary(MH1)
## 
## Call:
## glm(formula = factor(data$loan_status) ~ data$no_of_dependents + 
##     data$education + data$self_employed + data$income_annum + 
##     data$loan_amount + data$loan_term + data$cibil_score + data$residential_assets_value + 
##     data$commercial_assets_value + data$luxury_assets_value + 
##     data$bank_asset_value, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##                                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    1.131e+01  4.377e-01  25.833  < 2e-16 ***
## data$no_of_dependents          1.780e-02  3.487e-02   0.510   0.6097    
## data$educationNot Graduate     1.153e-01  1.183e-01   0.975   0.3298    
## data$self_employedYes         -6.739e-02  1.181e-01  -0.570   0.5684    
## data$income_annum              6.137e-07  9.081e-08   6.758  1.4e-11 ***
## data$loan_amount              -1.447e-07  1.812e-08  -7.986  1.4e-15 ***
## data$loan_term                 1.516e-01  1.144e-02  13.253  < 2e-16 ***
## data$cibil_score              -2.483e-02  8.385e-04 -29.612  < 2e-16 ***
## data$residential_assets_value -2.923e-09  1.187e-08  -0.246   0.8055    
## data$commercial_assets_value  -1.903e-08  1.729e-08  -1.101   0.2711    
## data$luxury_assets_value      -3.130e-08  1.749e-08  -1.789   0.0735 .  
## data$bank_asset_value         -5.076e-08  3.342e-08  -1.519   0.1287    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5660.7  on 4268  degrees of freedom
## Residual deviance: 1877.7  on 4257  degrees of freedom
## AIC: 1901.7
## 
## Number of Fisher Scoring iterations: 7

Kiểm định sự phù hợp của mô hình

Giả thuyết/Đối thuyết:

  • \(H_0\): Mô hình không phù hợp

  • \(H_1\): Mô hình phù hợp

lr_test <- anova(MH1, test = "Chisq")
p_value <- lr_test$Pr[2]
p_value
## [1] 0.236553

Ta có p-value = 0,236553 > 0,05 nên chưa đủ cơ sở bác bỏ giả thuyết \(H_0\). Vì vậy mô hình không phù hợp với dữ liệu.

6.4.2.2 Mô hình 2

Chạy mô hình với 2 biến loan_term và cibil_score vì đã được kiểm định là có liên quan đến biến loan_status.

MH2 <- glm(factor(data$loan_status)~data$loan_term+data$cibil_score, family = binomial(link = "logit"), data = data)
summary(MH2)
## 
## Call:
## glm(formula = factor(data$loan_status) ~ data$loan_term + data$cibil_score, 
##     family = binomial(link = "logit"), data = data)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      11.0169224  0.3894184   28.29   <2e-16 ***
## data$loan_term    0.1452517  0.0110963   13.09   <2e-16 ***
## data$cibil_score -0.0239075  0.0007946  -30.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5660.7  on 4268  degrees of freedom
## Residual deviance: 1953.4  on 4266  degrees of freedom
## AIC: 1959.4
## 
## Number of Fisher Scoring iterations: 7

Kiểm định sự phù hợp của mô hình

Giả thuyết/Đối thuyết:

  • \(H_0\): Mô hình không phù hợp

  • \(H_1\): Mô hình phù hợp

lr_test <- anova(MH2, test = "Chisq")
p_value <- lr_test$Pr[2]
p_value
## [1] 1.380095e-13

Ta có p-value = 1,380095e-13 < 0,05 nên bác bỏ giả thuyết \(H_0\). Vì vậy mô hình phù hợp với dữ liệu.

BrierScore

BrierScore(MH2)
## [1] 0.06493161

Ma trận nhầm lẫn

h <- predict(MH2, type = "response")
j <- ifelse(h > 0.5, "1", "0")
k <- factor(j, levels = c("0","1"))
l <- factor(data$loan_status, labels = c("0","1"))
confusionMatrix(table(k,l))
## Confusion Matrix and Statistics
## 
##    l
## k      0    1
##   0 2480  183
##   1  176 1430
##                                           
##                Accuracy : 0.9159          
##                  95% CI : (0.9072, 0.9241)
##     No Information Rate : 0.6222          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.821           
##                                           
##  Mcnemar's Test P-Value : 0.7515          
##                                           
##             Sensitivity : 0.9337          
##             Specificity : 0.8865          
##          Pos Pred Value : 0.9313          
##          Neg Pred Value : 0.8904          
##              Prevalence : 0.6222          
##          Detection Rate : 0.5809          
##    Detection Prevalence : 0.6238          
##       Balanced Accuracy : 0.9101          
##                                           
##        'Positive' Class : 0               
## 

MH2 có độ chính xác toàn thể là 91,59%, độ nhạy là 93,37% và độ hiệu quả là 88,65%.

6.4.3 Mô hình hồi quy probit

MH3 <- glm(factor(data$loan_status)~data$loan_term+data$cibil_score, family = binomial(link = "probit"), data = data)
summary(MH3)
## 
## Call:
## glm(formula = factor(data$loan_status) ~ data$loan_term + data$cibil_score, 
##     family = binomial(link = "probit"), data = data)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       5.5684228  0.1765641   31.54   <2e-16 ***
## data$loan_term    0.0834927  0.0058907   14.17   <2e-16 ***
## data$cibil_score -0.0123337  0.0003576  -34.49   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5660.7  on 4268  degrees of freedom
## Residual deviance: 2015.2  on 4266  degrees of freedom
## AIC: 2021.2
## 
## Number of Fisher Scoring iterations: 7

Kiểm định sự phù hợp của mô hình

Giả thuyết/Đối thuyết:

  • \(H_0\): Mô hình không phù hợp

  • \(H_1\): Mô hình phù hợp

lr_test <- anova(MH3, test = "Chisq")
p_value <- lr_test$Pr[2]
p_value
## [1] 1.018094e-13

Ta có p-value = 1,018094e-13 < 0,05 nên bác bỏ giả thuyết \(H_0\). Vì vậy mô hình phù hợp với dữ liệu.

BrierScore

BrierScore(MH3)
## [1] 0.06733641

Ma trận nhầm lẫn

h <- predict(MH3, type = "response")
j <- ifelse(h > 0.5, "1", "0")
k <- factor(j, levels = c("0","1"))
l <- factor(data$loan_status, labels = c("0","1"))
confusionMatrix(table(k,l))
## Confusion Matrix and Statistics
## 
##    l
## k      0    1
##   0 2479  197
##   1  177 1416
##                                           
##                Accuracy : 0.9124          
##                  95% CI : (0.9035, 0.9207)
##     No Information Rate : 0.6222          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.8132          
##                                           
##  Mcnemar's Test P-Value : 0.3259          
##                                           
##             Sensitivity : 0.9334          
##             Specificity : 0.8779          
##          Pos Pred Value : 0.9264          
##          Neg Pred Value : 0.8889          
##              Prevalence : 0.6222          
##          Detection Rate : 0.5807          
##    Detection Prevalence : 0.6268          
##       Balanced Accuracy : 0.9056          
##                                           
##        'Positive' Class : 0               
## 

MH3 có độ chính xác toàn thể là 91,24%, độ nhạy là 93,34% và độ hiệu quả là 87,79%.

6.4.4 Mô hình hồi quy cloglog

MH4 <- glm(factor(data$loan_status)~data$loan_term+data$cibil_score, family = binomial(link = "cloglog"), data = data)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(MH4)
## 
## Call:
## glm(formula = factor(data$loan_status) ~ data$loan_term + data$cibil_score, 
##     family = binomial(link = "cloglog"), data = data)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       5.3010028  0.1769546   29.96   <2e-16 ***
## data$loan_term    0.1323920  0.0071039   18.64   <2e-16 ***
## data$cibil_score -0.0139589  0.0004067  -34.33   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5660.7  on 4268  degrees of freedom
## Residual deviance: 2129.0  on 4266  degrees of freedom
## AIC: 2135
## 
## Number of Fisher Scoring iterations: 15

Kiểm định sự phù hợp của mô hình

Giả thuyết/Đối thuyết:

  • \(H_0\): Mô hình không phù hợp

  • \(H_1\): Mô hình phù hợp

lr_test <- anova(MH4, test = "Chisq")
p_value <- lr_test$Pr[2]
p_value
## [1] 3.397575e-13

Ta có p-value = 3,397575e-13 < 0,05 nên bác bỏ giả thuyết \(H_0\). Vì vậy mô hình phù hợp với dữ liệu.

BrierScore

BrierScore(MH4)
## [1] 0.07436701

Ma trận nhầm lẫn

h <- predict(MH4, type = "response")
j <- ifelse(h > 0.5, "1", "0")
k <- factor(j, levels = c("0","1"))
l <- factor(data$loan_status, labels = c("0","1"))
confusionMatrix(table(k,l))
## Confusion Matrix and Statistics
## 
##    l
## k      0    1
##   0 2505  292
##   1  151 1321
##                                           
##                Accuracy : 0.8962          
##                  95% CI : (0.8867, 0.9052)
##     No Information Rate : 0.6222          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.7754          
##                                           
##  Mcnemar's Test P-Value : 2.899e-11       
##                                           
##             Sensitivity : 0.9431          
##             Specificity : 0.8190          
##          Pos Pred Value : 0.8956          
##          Neg Pred Value : 0.8974          
##              Prevalence : 0.6222          
##          Detection Rate : 0.5868          
##    Detection Prevalence : 0.6552          
##       Balanced Accuracy : 0.8811          
##                                           
##        'Positive' Class : 0               
## 

MH4 có độ chính xác toàn thể là 89,62%, độ nhạy là 94,31% và độ hiệu quả là 81,9%.

6.4.5 Lựa chọn mô hình phù hợp

Môhình <- c("Logit","Probit","Cloglog","Lựa chọn")
AIC <- c(1959.4,2021.2,2135,"Logit")
Deviance <- c(1953.4,2015.2,2129.0,"Logit")
BrierScore <- c(0.06493161,0.06733641,0.07436701,"Logit")
ConfusionMatrix <- c(0.9159,0.9124,0.8962,"Logit")
bang <- data.frame(Môhình,AIC,Deviance,BrierScore,ConfusionMatrix)
bang

Dựa vào bảng kết quả của 3 mô hình, thông qua các chỉ số AIC, Deviance, BrierScore và ConfusionMatrix đều chỉ ra mô hình logit là tốt nhất. Do đó, mô hình logit được lựa chọn để phân tích các yếu tố tác động đến quyết đinh cho vay của tổ chức tài chính.

6.5 Kết quả của mô hình logit

summary(MH2)
## 
## Call:
## glm(formula = factor(data$loan_status) ~ data$loan_term + data$cibil_score, 
##     family = binomial(link = "logit"), data = data)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      11.0169224  0.3894184   28.29   <2e-16 ***
## data$loan_term    0.1452517  0.0110963   13.09   <2e-16 ***
## data$cibil_score -0.0239075  0.0007946  -30.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5660.7  on 4268  degrees of freedom
## Residual deviance: 1953.4  on 4266  degrees of freedom
## AIC: 1959.4
## 
## Number of Fisher Scoring iterations: 7

6.5.1 Giải thích kết quả

Kết quả phân tích hồi quy Logit cho thấy chỉ có 2 biến độc lập có ý nghĩa thống kê bao gồm:

  • loan_term: Kỳ hạn vay của khách hàng.

  • cibil_score: Điểm dân sự của khách hàng.

Với giả thuyết các yếu tố khác không đổi, tác động của từng biến được diễn giải như sau:

  • Ở mức ý nghĩa 1%, kỳ hạn vay của khách hàng có tác động tích cực đến quyết định cho vay của tổ chức tài chính.

  • Ở mức ý nghĩa 1%, điểm dân sự của khách hàng có tác động tiêu cực đến quyết định cho vay của tổ chức tài chính.

6.5.2 Khoảng ước lượng cho hệ số hồi quy

confint.default(MH2)
##                        2.5 %      97.5 %
## (Intercept)      10.25367643 11.78016834
## data$loan_term    0.12350337  0.16700000
## data$cibil_score -0.02546487 -0.02235003

6.5.3 Dự báo

pr <- predict(MH2,type = "response")
head(round(pr,4),10)
##      1      2      3      4      5      6      7      8      9     10 
## 0.0029 0.9011 0.8611 0.7338 0.9918 0.9922 0.0098 0.9918 0.0084 0.9606

7 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ

7.1 Kết luận

Với mục tiêu phân tích các yếu tố tác động đến quyết định cho vay của tổ chức tài chính, nghiên cứu sử dụng dữ liệu trong quá khứ được thu thập từ 4269 người gửi hồ sơ vay đến tổ chức tài chính. Sau khi thực hiện hồi quy và lựa chọn ra được mô hình phù hợp nhất là mô hình logit

Kết quả cho thấy có 2 yếu tố ảnh hưởng đến quyết định cho vay của tổ chức tài chính, gồm: kỳ hạn vay của khách hàng (loan_term), điểm dân sự của khách hàng (cibil_score). Trong đó, kỳ hạn vay có tác động tích cực và điểm dân sự có tác động tiêu cực đến quyết định cho vay của tổ chức tài chính.

Dựa vào kết quả thu được có thể giúp tổ chức tài chính đưa ra những điều kiện mới cho quyết định vay trong tương lai, tiếp tục phát huy các yếu tố tích cực và loại bỏ những yếu tố tiêu cực để giúp tổ chức nhận lại được kết quả như mong đợi.

7.2 Kiến nghị

Qua kết quả phân tích về các yếu tố tác động đến quyết định cho vay, tổ chức tài chính nên tập trung vào khách hàng lựa chọn kỳ được kỳ hạn vay hợp lý đối với mình, có đủ khả năng trả nợ để không bị nợ xấu gây ảnh hưởng đến lợi nhuận của tổ chức. Bên cạnh đó, tổ chức tài chính cũng nên quan tâm nhiều hơn về điểm dân sự của khách hàng vì nó sẽ có ảnh hưởng không tốt đến quyết định cho vay nếu bị bỏ qua.

8 TÀI LIỆU THAM KHẢO

[1] T.K.Thanh, T.M.Tường, V.A.L.Duy, “Bài giảng Phân tích dữ liệu định tính”, Trường đại học Tài chính - Marketing, Khoa Kinh tế - Luật.

[2] Roba, H. A., & Legass, H. A. (2023). Factors Determining Banks’ Loan and Advance: A Case Study on Commercial Banks in Ethiopia. Journal of Finance and Accounting, 11(3), 113.

LS0tDQp0aXRsZTogIlBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSB0w6FjIMSR4buZbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIg0KYXV0aG9yOiAiTmd1eeG7hW4gVHLGsMahbmcgQuG6o28gVHLDom4iDQpkYXRlOiAiMjAyMy0wOC0wMiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbjogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICB3b3JkX2RvY3VuZW50OiBkZWZhdWx0DQogIGVkaXRvcl9vcHRpb25zOg0KICAgIG1hcmtkb3duOg0KICAgICAgd3JhcDogNzINCi0tLQ0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShlcGl0b29scykNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeShjYXJldCkNCmBgYA0KDQojIMSQxrDhu51uZyBsaW5rDQoNCioqRmlsZSBk4buvIGxp4buHdSBFeGNlbCoqDQoNCmh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFra2ZHdW9PR19XNW1Ec25IY2hYZ2FoLW5tUmxSRTFfbUVGSHgzeTExSERFL2VkaXQjZ2lkPTANCg0KIyBM4bucSSBD4bqiTSDGoE4NCg0KVMO0aSB4aW4gZ+G7rWkgbOG7nWkgY+G6o20gxqFuIMSR4bq/biBraG9hIEtpbmggdOG6vyAtIEx14bqtdCB0csaw4budbmcgxJDhuqFpIGjhu41jIFTDoGkgY2jDrW5oIOKAkyBNYXJrZXRpbmcgxJHDoyDEkcawYSBtw7RuIGjhu41jIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmggdsOgbyBnaeG6o25nIGThuqF5LiDEkMOieSBsw6AgbeG7mXQgbcO0biBo4buNYyBy4bqldCBoYXkgdsOgIGN1bmcgY+G6pXAgbmhp4buBdSBraeG6v24gdGjhu6ljIGLhu5Ugw61jaC4gxJDhurdjIGJp4buHdCwgdMO0aSB4aW4gZ+G7rWkgbOG7nWkgY+G6o20gxqFuIHPDonUgc+G6r2MgbmjhuqV0IMSR4bq/biBnaeG6o25nIHZpw6puIGLhu5kgbcO0biDigJMgdGjhuqd5IFRy4bqnbiBN4bqhbmggVMaw4budbmcsIG5nxrDhu51pIMSRw6MgdHLhu7FjIHRp4bq/cCBoxrDhu5tuZyBk4bqrbiB0w7RpIGhvw6BuIHRow6BuaCBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeS4NCg0KVHJvbmcgcXXDoSB0csOsbmggbMOgbSBiw6BpLCBkbyBoaeG7g3UgYmnhur90IGPhu6dhIHTDtGkgduG7gSDEkeG7gSB0w6BpIGPDsm4gbmhp4buBdSBo4bqhbiBjaOG6vyBuw6puIGLDoGkgbMOgbSBraMOzIHRyw6FuaCBraOG7j2kgbmjhu69uZyB0aGnhur91IHPDs3QuIE1vbmcgdGjhuqd5IG5o4bqtbiB4w6l0IHbDoCBnw7NwIMO9IHRow6ptIMSR4buDIGLDoGkgbMOgbSBuZ8OgeSBjw6BuZyBob8OgbiB0aGnhu4duLiANCg0KVMO0aSB4aW4gY2jDom4gdGjDoG5oIGPhuqNtIMahbiENCg0KDQojIENIxq/GoE5HIDE6IFBI4bqmTiBN4bueIMSQ4bqmVQ0KDQojIyBMw70gZG8gY2jhu41uIMSR4buBIHTDoGkNCg0KQ8O5bmcgduG7m2kgc+G7sSBwaMOhdCB0cmnhu4NuIGPhu6dhIHRo4buLIHRyxrDhu51uZywgbmhp4buBdSB04buVIGNo4bupYyB0w6BpIGNow61uaCDEkcOjIHJhIMSR4budaSB2w6AgbmfDoHkgY8OgbmcgxJHhu6luZyB24buvbmcgaMahbiB0csOqbiBjb24gxJHGsOG7nW5nIGtpbmggZG9hbmggbOG7o2kgbmh14bqtbi4gVOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggbMOgIG3hu5l0IGPDtG5nIHR5IGhv4bqhdCDEkeG7mW5nIHRyb25nIGzEqW5oIHbhu7FjIGtpbmggZG9hbmggeOG7rSBsw70gY8OhYyBnaWFvIGThu4tjaCB0w6BpIGNow61uaCB2w6AgdGnhu4FuIHThu4cgbmjGsCB0aeG7gW4gZ+G7rWksIGNobyB2YXksIMSR4bqndSB0xrAgdsOgIHRyYW8gxJHhu5VpIHRp4buBbiB04buHLiBUcm9uZyBz4buRIMSRw7MsIGNobyB2YXkgbMOgIG3hu5l0IGjDrG5oIHRo4bupYyBraW5oIGRvYW5oIGNo4bunIHnhur91IGPhu6dhIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIGRvIMSRw7Mgdmnhu4djIHThuq1wIHRydW5nIGNo4bunIHnhur91IHbDoG8gY8OhYyBraMOhY2ggaMOgbmcgxJHhu4MgxJHGsGEgcmEgcXV54bq/dCDEkeG7i25oIHZheSBsw6AgdsO0IGPDuW5nIGPhuqduIHRoaeG6v3QuIEPDoWMga2jDoWNoIGjDoG5nIMSR4bq/biB24bubaSB04buVIGNo4bupYyDEkeG7gXUgY8OzIMO9IMSR4buLbmggbXXhu5FuIHZheSwgdHV5IG5oacOqbiBraMO0bmcgcGjhuqNpIGFpIGPFqW5nIMSR4bunIMSRaeG7gXUga2nhu4duIMSR4buDIMSRxrDhu6NjIHZheS4gQ8OhYyB04buVIGNo4bupYyB0w61uIGThu6VuZyDEkeG7gXUgbW9uZyBtdeG7kW4gY8OzIG5oaeG7gXUga2jDoWNoIGjDoG5nIG5oxrBuZyBjxaluZyBsdcO0biBwaOG6o2kgY+G6qW4gdHLhu41uZyB24buBIHLhu6dpIHJvIG7hu6MgeOG6pXUuIA0KDQpCw6BpIG5naGnDqm4gY+G7qXUgbsOgeSBz4bq9IGdpw7pwIGPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggxJHDoW5oIGdpw6EgxJHGsOG7o2MgY8OhYyBraMOhY2ggaMOgbmcgxJHhu6cgxJFp4buBdSBraeG7h24gdmF5IMSR4buDIHThu6sgxJHDsyDEkcawYSByYSBjaMOtbmggc8OhY2ggY2hvIHZheSBwaMO5IGjhu6NwIHbhu5tpIMSR4buRaSB0xrDhu6NuZyBtw6AgdOG7lSBjaOG7qWMgxJFhbmcgbmjhuq9tIMSR4bq/bi4gVsOsIHbhuq15IHTDoWMgZ2nhuqMgxJHDoyBs4buxYSBjaOG7jW4gxJHhu4EgdMOgaSAiKipQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIMSR4bq/biBxdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaCoqIi4NCg0KIyMgTeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdQ0KDQrEkMOhbmggZ2nDoSBjw6FjIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIMSR4bq/biBxdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaC4gVOG7qyDEkcOzIGdpw7pwIHThu5UgY2jhu6ljIMSRxrBhIHJhIG5o4buvbmcgY2jDrW5oIHPDoWNoIHBow7kgaOG7o3AgaMahbiB24bubaSDEkeG7kWkgdMaw4bujbmcga2jDoWNoIGjDoG5nIMSRYW5nIG5o4bqvbSDEkeG6v24uDQoNCiMjIMSQ4buRaSB0xrDhu6NuZyB2w6AgcGjhuqFtIHZpIG5naGnDqm4gY+G7qXUgbmdoacOqbiBj4bupdQ0KDQoqKsSQ4buRaSB0xrDhu6NuZyBuZ2hpw6puIGPhu6l1OioqIFF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIHbDoCBjw6FjIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIMSR4bq/biBxdXnhur90IMSR4buLbmggbsOgeS4NCg0KKipQaOG6oW0gdmkgbmdoacOqbiBj4bupdToqKiA0MjY5IGtow6FjaCBow6BuZyBj4bqnbiB2YXkgdGnhu4FuIHThuqFpIG3hu5l0IHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLg0KDQojIyBQaMawxqFuZyBwaMOhcCBuZ2hpw6puIGPhu6l1DQoNCkLDoGkgbmdoacOqbiBj4bupdSBz4butIGThu6VuZyBwaMawxqFuZyBwaMOhcCBo4buTaSBxdXkgTG9naXN0aWMgZ2nhuqNpIHRow61jaCBz4buxIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHnhur91IHThu5EgbMOqbiBiaeG6v24gcGjhu6UgdGh14buZYyB0cm9uZyBo4buTaSBxdXkgdGjDtG5nIHF1YSAzIG3DtCBow6xuaCBMb2dpdCwgUHJvYml0LCBDbG9nbG9nLiBU4burIMSRw7MgeMOieSBk4buxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSB2w6AgxJHDoW5oIGdpw6Ega+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIHbhu5tpIHPhu7EgdHLhu6MgZ2nDunAgY+G7p2EgcGjhuqduIG3hu4FtIFIgJiBSU3R1ZGlvLg0KDQojIyBL4bq/dCBj4bqldSDEkeG7gSB0w6BpDQoNCkLDoGkgbmdoacOqbiBj4bupdSBn4buTbSBjw7MgNSBjaMawxqFuZzoNCg0KLSBDaMawxqFuZyAxOiBQaOG6p24gbeG7nyDEkeG6p3UNCg0KLSBDaMawxqFuZyAyOiBDxqEgc+G7nyBsw70gdGh1eeG6v3QNCg0KLSBDaMawxqFuZyAzOiBQaMawxqFuZyBwaMOhcCBuZ2hpw6puIGPhu6l1DQoNCi0gQ2jGsMahbmcgNDogS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdQ0KDQotIENoxrDGoW5nIDU6IEvhur90IGx14bqtbg0KDQojIENIxq/GoE5HIDI6IEPGoCBT4bueIEzDnSBUSFVZ4bq+VA0KDQojIyBU4buVIGNo4bupYyB0w6BpIGNow61uaA0KDQpUcm9uZyBraW5oIHThur8gaOG7jWMgdMOgaSBjaMOtbmgsIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGhheSDEkeG7i25oIGNo4bq/IHTDoGkgY2jDrW5oIGzDoCB04buVIGNo4bupYyBjw7MgY2jhu6ljIG7Eg25nIGN1bmcgY+G6pXAgY8OhYyBk4buLY2ggduG7pSB0w6BpIGNow61uaCBjaG8gY8OhYyBraMOhY2ggaMOgbmcgaG/hurdjIGPDoWMgdGjDoG5oIHZpw6puLiBDw7MgbOG6vSBk4buLY2ggduG7pSB0w6BpIGNow61uaCBxdWFuIHRy4buNbmcgbmjhuqV0IG3DoCBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGN1bmcgY+G6pXAgbMOgIGhv4bqhdCDEkeG7mW5nIG5oxrAgY8OhYyB0cnVuZyBnaWFuIHTDoGkgY2jDrW5oLiBQaOG6p24gbOG7m24gY8OhYyB04buVIGNo4bupYyB0w6BpIGNow61uaCDEkcaw4bujYyDEkeG6t3QgZMaw4bubaSBz4buxIGtp4buDbSBzb8OhdCBjaOG6t3QgY2jhur0gY+G7p2EgbmjDoCBuxrDhu5tjLg0KDQpUaGVvIMSR4buLbmggbmdoxKlhIHLhu5luZywgY8OzIGJhIGxv4bqhaSBow6xuaCB04buVIGNo4bupYyB0w6BpIGNow61uaCBjaOG7pyB54bq/dToNCg0KLSBDw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGNo4bqlcCBuaOG6rW4gdGnhu4FuIGfhu61pIHbDoCBjaG8gdmF5LCBiYW8gZ+G7k20gY8OhYyBuZ8OibiBow6BuZywgcXXhu7kgdMOtbiBk4bulbmcsIHF14bu5IHRo4bq/IGNo4bqlcCwgY8OhYyBjw7RuZyB0eSBxdeG6o24gbMO9IGPDoWMgdMOgaSBz4bqjbiDhu6d5IHRow6FjIGhheSB24buRbiDEkeG6p3UgdMawICh0cnVzdCBjb21wYW55KSwgcXXhu7kgbmjDoCDhu58gKGJ1aWxkaW5nIHNvY2lldHkpLg0KDQotIEPDoWMgY8O0bmcgdHkgYuG6o28gaGnhu4NtIHbDoCBjw6FjIHF14bu5IGjGsHUgdHLDrS4NCg0KLSBDw6FjIGPDtG5nIHR5IG3DtGkgZ2nhu5tpIGNo4bupbmcga2hvw6FuLCBxdeG7uSDEkeG6p3UgdMawIOG7p3kgdGjDoWMuDQoNCi0gQ8O0bmcgdHkgdMOgaSBjaMOtbmggbMOgIGxv4bqhaSBow6xuaCB04buVIGNo4bupYyB0w61uIGThu6VuZyBwaGkgbmfDom4gaMOgbmcsIHbhu5tpIGNo4bupYyBuxINuZyBz4butIGThu6VuZyB24buRbiB04buxIGPDsywgduG7kW4gaHV5IMSR4buZbmcgdsOgIGPDoWMgbmd14buTbiB24buRbiBraMOhYyDEkeG7gyBjaG8gdmF5LCDEkeG6p3UgdMawOyBjdW5nIOG7qW5nIGPDoWMgZOG7i2NoIHbhu6UgdMawIHbhuqVuIHbhu4EgdMOgaSBjaMOtbmgsIHRp4buBbiB04buHIHbDoCB0aOG7sWMgaGnhu4duIG3hu5l0IHPhu5EgZOG7i2NoIHbhu6Uga2jDoWMgdGhlbyBxdXkgxJHhu4tuaCBj4bunYSBwaMOhcCBsdeG6rXQsIG5oxrBuZyBraMO0bmcgxJHGsOG7o2MgbMOgbSBk4buLY2ggduG7pSB0aGFuaCB0b8Ohbiwga2jDtG5nIMSRxrDhu6NjIG5o4bqtbiB0aeG7gW4gZ+G7rWkgZMaw4bubaSAxIG7Eg20uDQoNClRyw6puIHRo4buxYyB04bq/LCBo4bqndSBo4bq/dCBt4buNaSBuZ8aw4budaSBoaeG7h24gxJFhbmcgc+G7kW5nIHRyb25nIG7hu4FuIGtpbmggdOG6vyB0aOG7iyB0csaw4budbmcgdsO0IGPDuW5nIHBow6F0IHRyaeG7g24gbsOqbiBsacOqbiB04bulYyBjw7Mgbmjhu69uZyBuaHUgY+G6p3UgaG/hurdjIGPDsyBuaHUgY+G6p3UgxJHhu4tuaCBr4buzIMSR4buRaSB24bubaSBuaOG7r25nIGThu4tjaCB24bulIGRvIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGN1bmcgY+G6pXAuDQoNCsSQ4bqndSB0xrAgbMOgIHZp4buFbiBj4bqjbmggY8OzIHRo4buDIHLhuqV0IGtow7Mga2jEg24gxJHhu5FpIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgbeG7m2kgYuG6r3QgxJHhuqd1IGtpbmggZG9hbmggYuG7n2kgdsOsIG5o4buvbmcgc+G7kSB0w6BpIHPhuqNuIHPhur0gdGjDqm0gdsOgbyBjw6FjIGRhbmggbeG7pWMgxJHhuqd1IHTGsC4gxJDhu5NuZyB0aOG7nWkgdOG7tyBs4buHIHLhu6dpIHJvIGPhu6dhIMSR4bqndSB0xrAgxJHGsOG7o2MgeMOhYyDEkeG7i25oIGThu7FhIHRyw6puIG3hu6ljIHTGsMahbmcgxJHhu5FpLCB0aW0gbeG6oWNoIGPDsyB0aOG7gyDEkcaw4bujYyBjb2kgbMOgIGtob+G6o24g4buVbiDEkeG7i25oIG5o4bqldCwgbmjhu69uZyBraG/huqNuIMSR4bqndSB0xrAga2jDoWMgbMOgIG5o4buvbmcga2hv4bqjbiDEkeG6p3UgdMawIMSRxrDhu6NjIGNvaSB0cuG7jW5nIG5o4bqldC4NCg0KVOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggxJHGsOG7o2MgaGnhu4N1IGzDoCBjw7RuZyB0eSBwaOG6o2kgZG9hbmggbmdoaeG7h3AgdGjhu7FjIGhp4buHbiBob+G6oXQgxJHhu5luZyBsxKluaCB24buxYyBraW5oIGRvYW5oLCB44butIGzDvSBuaOG7r25nIGdpYW8gZOG7i2NoIHTDoGkgY2jDrW5oIHbDoCB0aeG7gW4gdOG7hyBuaMawIGNobyB2YXkgduG7kW4sIMSR4buVaSB0aeG7gW4gdOG7hywgdGnhu4FuIGfhu61pIHRo4bupYyDEkeG6p3UgdMawLiBIaeG7h24gbmF5LCBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIHRo4buxYyBoaeG7h24gY3VuZyBj4bqlcCBuaOG7r25nIGThu4tjaCB24bulIHTDoGkgY2jDrW5oIGPDsyB0aOG7gyBr4buDIHThu5tpIG5oxrAgY8O0bmcgdHkgYuG6o28gaGnhu4NtLCBuZ8OibiBow6BuZywgY8O0bmcgdHkgdMOgaSBjaMOtbmgsIMSR4bqndSB0xrAsIGPDtG5nIHR5IG3DtGkgZ2nhu5tpLi4uIHbDoCBuaOG7r25nIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGtow6FjIHTDuXkgdGhlbyBwaOG6oW0gdmksIHF1eSBtw7QgdsOgIMSR4buLYSBsw70gY+G7p2EgZG9hbmggbmdoaeG7h3AsIGPDtG5nIHR5IMSRw7MuDQoNCiMjIEPDoWMgbG/huqFpIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oDQoNCioqTmfDom4gaMOgbmcgdGjGsMahbmcgbeG6oWk6KiogTmfDom4gaMOgbmcgdGjGsMahbmcgbeG6oWkgbMOgIG3hu5l0IGxv4bqhaSBow6xuaCB04buVIGNo4bupYyB0w6BpIGNow61uaCBjaOG6pXAgbmjhuq1uIHRp4buBbiBn4butaSwgY3VuZyBj4bqlcCBk4buLY2ggduG7pSB0w6BpIGtob+G6o24gc8OpYywgY2hvIHZheSBraW5oIGRvYW5oLCBjw6EgbmjDom4gdsOgIHRo4bq/IGNo4bqlcCwgdsOgIGN1bmcgY+G6pXAgY8OhYyBz4bqjbiBwaOG6qW0gdMOgaSBjaMOtbmggY8ahIGLhuqNuIG5oxrAgY2jhu6luZyBjaOG7iSB0aeG7gW4gZ+G7rWkgKENEKSB2w6AgdMOgaSBraG/huqNuIHRp4bq/dCBraeG7h20gY2hvIGPDoWMgY8OhIG5ow6JuIHbDoCBkb2FuaCBuZ2hp4buHcCBuaOG7jy4gTmfDom4gaMOgbmcgdGjGsMahbmcgbeG6oWkgbMOgIG7GoWkgaOG6p3UgaOG6v3QgbeG7jWkgbmfGsOG7nWkgdGjhu7FjIGhp4buHbiBjw7RuZyB2aeG7h2MgbmfDom4gaMOgbmcgY+G7p2EgaOG7jSwgdHLDoWkgbmfGsOG7o2MgduG7m2kgbmfDom4gaMOgbmcgxJHhuqd1IHTGsC4NCg0KKipOZ8OibiBow6BuZyDEkeG6p3UgdMawOioqIEPDoWMgbmfDom4gaMOgbmcgxJHhuqd1IHTGsCBjaHV5w6puIGN1bmcgY+G6pXAgY8OhYyBk4buLY2ggduG7pSDEkcaw4bujYyB0aGnhur90IGvhur8gxJHhu4MgdOG6oW8gxJFp4buBdSBraeG7h24gdGh14bqtbiBs4bujaSBjaG8gaG/huqF0IMSR4buZbmcga2luaCBkb2FuaCwgY2jhurNuZyBo4bqhbiBuaMawIHTDoGkgdHLhu6MgY2hpIHRpw6p1IHbhu5FuIHbDoCBjaMOgbyBiw6FuIGPhu5UgcGjhuqduLCBiYW8gZ+G7k20gY+G6oyBwaMOhdCBow6BuaCBj4buVIHBoaeG6v3UgbOG6p24gxJHhuqd1IHJhIGPDtG5nIGNow7puZyAoSVBPKS4gSOG7jSBjxaluZyB0aMaw4budbmcgY3VuZyBj4bqlcCBjw6FjIGThu4tjaCB24bulIG3DtGkgZ2nhu5tpIGNobyBjw6FjIG5ow6AgxJHhuqd1IHTGsCwgxJHDs25nIHZhaSB0csOyIGzDoCBuaMOgIHThuqFvIGzhuq1wIHRo4buLIHRyxrDhu51uZyBjaG8gY8OhYyBzw6BuIGdpYW8gZOG7i2NoIHbDoCBxdeG6o24gbMO9IGPDoWMgaG/huqF0IMSR4buZbmcgc8OhcCBuaOG6rXAsIG11YSBs4bqhaSB2w6AgdMOhaSBj4bqldSB0csO6YyBkb2FuaCBuZ2hp4buHcCBraMOhYy4NCg0KKipDw6FjIGPDtG5nIHR5IGLhuqNvIGhp4buDbToqKiBUcm9uZyBz4buRIGPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggcGhpIG5nw6JuIGjDoG5nIHF1ZW4gdGh14buZYyBuaOG6pXQgbMOgIGPDoWMgY8O0bmcgdHkgYuG6o28gaGnhu4NtLiBDdW5nIGPhuqVwIGLhuqNvIGhp4buDbSwgY2hvIGTDuSBjaG8gY8OhIG5ow6JuIGhheSB04bqtcCDEkW/DoG4sIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIGThu4tjaCB24bulIHTDoGkgY2jDrW5oIGzDonUgxJHhu51pIG5o4bqldC4gQuG6o28gduG7hyB0w6BpIHPhuqNuIHbDoCBi4bqjbyB24buHIHRyxrDhu5tjIHLhu6dpIHJvIHTDoGkgY2jDrW5oLCDEkcaw4bujYyDEkeG6o20gYuG6o28gdGjDtG5nIHF1YSBjw6FjIHPhuqNuIHBo4bqpbSBi4bqjbyBoaeG7g20sIGzDoCBt4buZdCBk4buLY2ggduG7pSB0aGnhur90IHnhur91IHThuqFvIMSRaeG7gXUga2nhu4duIGNobyBjw6FjIGtob+G6o24gxJHhuqd1IHTGsCBjw6EgbmjDom4gdsOgIGRvYW5oIG5naGnhu4dwIHRow7pjIMSR4bqpeSB0xINuZyB0csaw4bufbmcga2luaCB04bq/Lg0KDQoqKkPDtG5nIHR5IG3DtGkgZ2nhu5tpOioqIEPDoWMgY8O0bmcgdHkgxJHhuqd1IHTGsCB2w6AgY8O0bmcgdHkgbcO0aSBnaeG7m2ksIGNo4bqzbmcgaOG6oW4gbmjGsCBuaMOgIGN1bmcgY+G6pXAgcXXhu7kgdMawxqFuZyBo4buXIHbDoCBxdeG7uSBnaWFvIGThu4tjaCBo4buRaSDEkW/DoWkgKEVURikgRmlkZWxpdHkgSW52ZXN0bWVudHMsIGNodXnDqm4gY3VuZyBj4bqlcCBjw6FjIGThu4tjaCB24bulIMSR4bqndSB0xrAgYmFvIGfhu5NtIHF14bqjbiBsw70gdMOgaSBz4bqjbiB2w6AgZOG7i2NoIHbhu6UgdMawIHbhuqVuIHTDoGkgY2jDrW5oLiBI4buNIGPFqW5nIGN1bmcgY+G6pXAgcXV54buBbiB0cnV5IGPhuq1wIHbDoG8gY8OhYyBz4bqjbiBwaOG6qW0gxJHhuqd1IHTGsCBjw7MgdGjhu4MgdOG7qyBj4buVIHBoaeG6v3UgdsOgIHRyw6FpIHBoaeG6v3UgxJHhur9uIGPDoWMga2hv4bqjbiDEkeG6p3UgdMawIHRoYXkgdGjhur8gw610IMSRxrDhu6NjIGJp4bq/dCDEkeG6v24gaMahbiwgY2jhurNuZyBo4bqhbiBuaMawIHF14bu5IHBow7JuZyBo4buZIHbDoCDEkeG6p3UgdMawIGPhu5UgcGjhuqduIHTGsCBuaMOibi4NCg0KIyMgVOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oDQoNCkPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggcGjhu6VjIHbhu6UgaOG6p3UgaOG6v3QgbeG7jWkgbmfGsOG7nWkgdGhlbyBt4buZdCBjw6FjaCBuw6BvIMSRw7MsIHbDrCBob+G6oXQgxJHhu5luZyB0w6BpIGNow61uaCBsw6AgbeG7mXQgcGjhuqduIHF1YW4gdHLhu41uZyBj4bunYSBi4bqldCBr4buzIG7hu4FuIGtpbmggdOG6vyBuw6BvLCB24bubaSBjw6FjIGPDoSBuaMOibiB2w6AgY8O0bmcgdHkgZOG7sWEgdsOgbyBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIMSR4buDIGdpYW8gZOG7i2NoIHbDoCDEkeG6p3UgdMawLiBDw6FjIGNow61uaCBwaOG7pyBjb2kgdmnhu4djIGdpw6FtIHPDoXQgdsOgIMSRaeG7gXUgdGnhur90IGPDoWMgbmfDom4gaMOgbmcgdsOgIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGzDoCBj4bqlcCB0aGnhur90IHbDrCBjaMO6bmcgxJHDs25nIHZhaSB0csOyIG5oxrAgbeG7mXQgYuG7mSBwaOG6rW4gY+G6pXUgdGjDoG5oIGPhu6dhIG7hu4FuIGtpbmggdOG6vy4gVHJvbmcgbOG7i2NoIHPhu60sIG5o4buvbmcgduG7pSBwaMOhIHPhuqNuIGPhu6dhIGPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggY8OzIHRo4buDIHThuqFvIHJhIHPhu7EgaG/huqNuZyBsb+G6oW4uDQoNClThuqFpIEhvYSBL4buzLCBU4buVbmcgY8O0bmcgdHkgQuG6o28gaGnhu4NtIFRp4buBbiBn4butaSBMacOqbiBiYW5nIChGRElDKSBi4bqjbyBoaeG7g20gY8OhYyB0w6BpIGtob+G6o24gdGnhu4FuIGfhu61pIHRow7RuZyB0aMaw4budbmcgxJHhu4MgdHLhuqVuIGFuIGPDoWMgY8OhIG5ow6JuIHbDoCBkb2FuaCBuZ2hp4buHcCB24buBIHPhu7EgYW4gdG/DoG4gdMOgaSBjaMOtbmggY+G7p2EgaOG7jSB24bubaSBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLiBT4buxIGzDoG5oIG3huqFuaCBj4bunYSBo4buHIHRo4buRbmcgbmfDom4gaMOgbmcgY+G7p2EgbeG7mXQgcXXhu5FjIGdpYSBsw6AgbuG7gW4gdOG6o25nIGPhu6dhIHPhu7Eg4buVbiDEkeG7i25oIGtpbmggdOG6vy4gTeG6pXQgbmnhu4FtIHRpbiB2w6BvIG3hu5l0IHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGPDsyB0aOG7gyBk4buFIGTDoG5nIGThuqtuIMSR4bq/biB0w6xuaCB0cuG6oW5nIG5nw6JuIGjDoG5nIGNo4bqheSDEkXVhLg0KDQpT4buxIHRow6FvIGNo4bqheSBj4bunYSBuZ8OibiBow6BuZyB44bqjeSByYSBraGkgY8OhYyBuaMOzbSBs4bubbiBuZ8aw4budaSBn4butaSB0aeG7gW4gxJHhu5NuZyBsb+G6oXQgcsO6dCB0aeG7gW4gcmEga2jhu49pIG5nw6JuIGjDoG5nIGRvIGxvIG5n4bqhaSBy4bqxbmcgdOG7lSBjaOG7qWMgbsOgeSBz4bq9IG3huqV0IGto4bqjIG7Eg25nIHRoYW5oIHRvw6FuLiBW4bubaSB2aeG7h2Mgbmhp4buBdSBuZ8aw4budaSByw7p0IHRp4buBbiBoxqFuLCBjw6FjIG5nw6JuIGjDoG5nIHPhur0gc+G7rSBk4bulbmcgaOG6v3QgbMaw4bujbmcgdGnhu4FuIGThu7EgdHLhu68gY+G7p2EgaOG7jSB2w6AgY3Xhu5FpIGPDuW5nIGzDoCB24buhIG7hu6MuIEPDoWMgxJHhu6N0IMSRaeG7gXUgaMOgbmggbmfDom4gaMOgbmcgxJHDoyB44bqjeSByYSB0cm9uZyBzdeG7kXQgbOG7i2NoIHPhu60sIGvhu4MgY+G6oyB0cm9uZyB0aOG7nWkga+G7syDEkOG6oWkgc3V5IHRob8OhaSB2w6AgY3Xhu5ljIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaCAyMDA4LSAyMDA5LiBU4buVbmcgY8O0bmcgdHkgQuG6o28gaGnhu4NtIFRp4buBbiBn4butaSBMacOqbiBiYW5nIMSRxrDhu6NjIHRow6BuaCBs4bqtcCB2w6BvIG7Eg20gMTkzMyDEkeG7gyDEkcOhcCBs4bqhaSBz4buxIMSRaeG7gXUgaMOgbmggY+G7p2EgbeG7mXQgbmfDom4gaMOgbmcuIEhv4bqhdCDEkeG7mW5nIG5nw6JuIGjDoG5nIGltIGzhurduZyB44bqjeSByYSBraGkgdGnhu4FuIMSRxrDhu6NjIHLDunQgcXVhIGNodXnhu4NuIGtob+G6o24gxJFp4buHbiB04butIHRoYXkgdsOsIHRy4buxYyB0aeG6v3AuDQoNCiMjIMavdSDEkWnhu4NtIGtoaSBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oDQoNCkPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggY3VuZyBj4bqlcCB0w6BpIGNow61uaCBkw6BpIGjhuqFuLCBraMO0bmcgxJHGsOG7o2MgY3VuZyBj4bqlcCBi4bufaSBjw6FjIG5nw6JuIGjDoG5nIHRoxrDGoW5nIG3huqFpLg0KDQpDw6FjIHF14bu5IMSRxrDhu6NjIGN1bmcgY+G6pXAgbmdheSBj4bqjIHRyb25nIHRo4budaSBr4buzIHRy4bqnbSBj4bqjbSwga2hpIGPDoWMgbmd14buTbiB0w6BpIGNow61uaCBraMOhYyBraMO0bmcgY8OzIHPhurVuLg0KDQpDw7MgxJHGsOG7o2Mga2hv4bqjbiB2YXkgdOG7qyBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGzDoG0gdMSDbmcgdGhp4buHbiBjaMOtIGPhu6dhIGtob+G6o24gdmF5IHRyw6puIHRo4buLIHRyxrDhu51uZyB24buRbi4gRG8gxJHDsywgbeG7mXQgY8O0bmcgdHkgbmjGsCB24bqteSBjxaluZyBjw7MgdGjhu4MgZ8OieSBxdeG7uSBk4buFIGTDoG5nIHThu6sgY8OhYyBuZ3Xhu5NuIGtow6FjLg0KDQpCw6puIGPhuqFuaCB2aeG7h2MgY3VuZyBj4bqlcCB24buRbiwgbmhp4buBdSB0cm9uZyBz4buRIGPDoWMgdOG7lSBjaOG7qWMgbsOgeSBjdW5nIGPhuqVwIHTGsCB24bqlbiB2w6AgdMawIHbhuqVuIHTDoGkgY2jDrW5oLCBxdeG6o24gbMO9IHbDoCBr4bu5IHRodeG6rXQgY2hvIGPDoWMgY8O0bmcgdHkga2luaCBkb2FuaC4NCg0KVsOsIHZp4buHYyB0cuG6oyBu4bujIGPDsyB0aOG7gyDEkcaw4bujYyB0aOG7sWMgaGnhu4duIHRow6BuaCBuaGnhu4F1IMSR4bujdCBk4buFIGTDoG5nLCDEkWnhu4F1IMSRw7Mga2jDtG5nIGNo4bupbmcgdOG7jyBsw6AgZ8OhbmggbuG6t25nIGNobyBkb2FuaCBuZ2hp4buHcC4NCg0KIyBDSMavxqBORyAzOiBQSMavxqBORyBQSMOBUCBOR0hJw4pOIEPhu6hVDQoNCiMjIEPDoWMgY2jhu4kgc+G7kSBwaMOibiB0w61jaCBi4bqjbmcgbmfhuqt1IG5oacOqbg0KDQojIyMgQuG6o25nIHThuqduIHPhu5EgLSB04bqnbiBzdeG6pXQNCg0KQuG6o25nIHThuqduIHPhu5EgLSBC4bqjbmcgdOG6p24gc3XhuqV0IGPDsm4gxJHGsOG7o2MgZ+G7jWkgbMOgIGLhuqNuZyBuZ+G6q3Ugbmhpw6puLCDEkeG7gyBoaeG7g24gdGjhu4sgZOG7ryBsaeG7h3UgYuG6sW5nIGPDoWNoIGNoaWEgbsOzIHRow6BuaCBjw6FjIG5ow7NtIHbDoCB0w61uaCBz4buRIGzhuqduIG3hu5dpIG5ow7NtIHh14bqldCBoaeG7h24uIEtoaSBs4bqtcCBi4bqjbmcgbmfhuqt1IG5oacOqbiBjaG8gMiBiaeG6v24gdGjDrCBi4bqjbmcgxJHDsyDEkcaw4bujYyBn4buNaSBsw6AgYuG6o25nIG5n4bqrdSBuaGnDqm4gMiBjaGnhu4F1LCBu4bq/dSBs4bqtcCBjaG8gMyBiaeG6v24gdGjDrCBn4buNaSBsw6AgYuG6o25nIG5n4bqrdSBuaGnDqm4gMyBjaGnhu4F1IHbDoCBj4bupIHRo4bq/IHTEg25nIGzDqm4uIELhuqNuZyB04bqnbiBz4buRIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgdOG6oyBk4buvIGxp4buHdSDEkeG7i25oIGzGsOG7o25nLCBuaMawbmcgY8WpbmcgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIG3DtCB04bqjIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmguDQoNCiMjIyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmVsYXRpdmUgUmlzaykNCg0KVuG7m2kgYmnhur9uIMSRw6FwIOG7qW5nIG5o4buLIHBow6JuIFksIGNow7puZyB0YSBz4butIGThu6VuZyB0aHXhuq10IG5n4buvIGNodW5nIOKAnHRow6BuaCBjw7RuZ+KAnSBjaG8gbeG7mXQgxJHDoXAg4bupbmcgdsOgIOKAnHRo4bqldCBi4bqhaeKAnSDEkeG7kWkgduG7m2kgxJHDoXAg4bupbmcgY8OybiBs4bqhaS4gxJDhu5FpIHbhu5tpIGPDoWMgxJHhu5FpIHTGsOG7o25nIHRyb25nIGjDoG5nIGksIGvDvSBoaeG7h3UgJFxwaV9pJCBsw6AgeMOhYyBzdeG6pXQg4oCcdGjDoG5oIGPDtG5n4oCdIHRow6wgJDEtXHBpX2kkIGzDoCB4w6FjIHN14bqldCBj4bunYSDigJx0aOG6pXQgYuG6oWnigJ0uIEPhurdwIHjDoWMgc3XhuqV0ICQoXHBpX2ksMS1ccGlfaSkkIGzDoCBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY8OzIMSRaeG7gXUga2nhu4duIGPhu6dhIFkgdHJvbmcgaMOgbmcgaS4NCg0KR2nhuqMgc+G7rSAkXHBpXzEkIHbDoCAkXHBpXzIkIGzDoCB4w6FjIHN14bqldCB0aMOgbmggY8O0bmcgY+G7p2EgaGFpIGJp4bq/bi4gS2hpIMSRw7MgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJlbGF0aXZlIHJpc2spIGdp4buvYSBoYWkgYmnhur9uIG7DoHkgbMOgIHThu7cgbOG7hyB4w6FjIHN14bqldCAidGjDoG5oIGPDtG5nIiBj4bunYSBoYWkgYmnhur9uOiAkXGZyYWN7XHBpXzF9e1xwaV8yfSQuDQoNCkNow7ogw706DQoNCi0gUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgbMOgIHPhu5Ega2jDtG5nIMOibS4NCg0KLSBS4bunaSBybyB0xrDGoW5nIMSR4buRaSBi4bqxbmcgMSBraGkgdsOgIGNo4buJIGtoaSBiaeG6v24gxJHDoXAg4bupbmcgxJHhu5ljIGzhuq1wIHRoZW8gbmjDs20uDQoNCiMjIyBU4bu3IGzhu4cgY2jDqm5oIChPZGQgUmF0aW8pDQoNClRyb25nIGjDoG5nIGkgY+G7p2EgYmFuZ2UgcGjDom4gcGjhu5FpIMSR4buTbmcgdGjhu51pIDJ4MiBj4bunYSBjw6FjIGJp4bq/biBxdWFuIHPDoXQgWCB2w6AgWSwgdOG7tyBs4buHIGPGsOG7o2MgKG9kZHMpIGPhu6dhICJ0aMOgbmggY8O0bmciIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIGzDoCB04bu3IHPhu5EgZ2nhu69hIHjDoWMgc3XhuqV0ICJ0aMOgbmggY8O0bmciIHbDoCB4w6FjIHN14bqldCAia2jDtG5nIHRow6BuaCBjw7RuZyIsIGvDvSBoaeG7h3UgJG9kZHNfaSQ6DQoNCiQkb2Rkc19pPVxmcmFje1xwaV9pfXsxLVxwaV9pfSQkDQoNClThu7cgbOG7hyBjaMOqbmggKE9kZHMgcmF0aW8pIGPhu6dhIGhhaSBow6BuZyAxIHbDoCAyLCDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkXHRoZXRhJCwgxJHDsyBsw6AgdOG7tyBz4buRIGdp4buvYSB04bu3IGzhu4cgY8aw4bujYyBj4bunYSAidGjDoG5oIGPDtG5nIiDhu58gaMOgbmcgMSB2w6AgdOG7tyBs4buHIGPGsOG7o2MgY+G7p2EgInRow6BuaCBjw7RuZyIg4bufIGjDoG5nIDI6DQoNCiQkXHRoZXRhPVxmcmFje29kZHNfMX17b2Rkc18yfT1cZnJhY3tccGlfMSgxLVxwaV8yKX17XHBpXzIoMS1ccGlfMSl9JCQNCg0KIyMgTcO0IGjDrG5oIG5naGnDqm4gY+G7qXUNCg0KIyMjIE3DtCBow6xuaCBo4buTaSBxdXkgduG7m2kgaMOgbSBsb2dpdA0KDQpNw7QgaMOsbmggbG9naXQgKExvZ2lzdGljIFJlZ3Jlc3Npb24pIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIHBoxrDGoW5nIHBow6FwIHBow6JuIGxv4bqhaSBwaOG7lSBiaeG6v24gdHJvbmcgdGjhu5FuZyBrw6ouIEThu7FhIHbDoG8gxJHhurdjIHRyxrBuZyBj4bunYSBjw6FjIG3huqt1LCBtw7QgaMOsbmggbG9naXQgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgZOG7sSDEkW/DoW4geMOhYyBzdeG6pXQgeOG6o3kgcmEgbeG7mXQgc+G7sSBraeG7h24gaG/hurdjIHRodeG7mWMgdMOtbmggKGJp4bq/biBwaOG7pSB0aHXhu5ljKSBuaOG7iyBwaMOibiAoY8OzIGhhaSBs4bubcCwgdGjGsOG7nW5nIMSRxrDhu6NjIGvDvSBoaeG7h3UgbMOgIDAgdsOgIDEpLg0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIGzDoCB0csaw4budbmcgaOG7o3AgxJHhurdjIGJp4buHdCBj4bunYSBHTE0uIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAodGjDoG5oIGPDtG5nLCB0aOG6pXQgYuG6oWkpIGzDoCBuaOG7iyBwaMOibi4gSMOgbSBsacOqbiBr4bq/dCBsb2dpdCBj4bunYSAkXHBpJCBsw6AgcGjDqXAgYmnDqm4gxJHhu5VpICRsb2coXGZyYWN7XHBpfXsxLVxwaX0pJCwga8O9IGhp4buHdSBi4bufaSAkbG9naXQoXHBpKSQuIEPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB0aMaw4budbmcgxJHGsOG7o2MgZ+G7jWkgbMOgIG3DtCBow6xuaCBsb2dpdC4gTG9naXQgbMOgIHRoYW0gc+G7kSB04buxIG5oacOqbiBj4bunYSBwaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljLiBUcm9uZyDEkcOzICRccGkkIGLhu4sgZ2nhu5tpIGjhuqFuIHRyb25nIHBo4bqhbSB2aSAoMCwgMSksIGxvZ2l0IGPDsyB0aOG7gyBsw6Agc+G7kSB0aOG7sWMgYuG6pXQga+G7sy4gVOG6rXAgc+G7kSB0aOG7sWMgY8WpbmcgbMOgIGtob+G6o25nIGdpw6EgdHLhu4sgY8OzIHRo4buDIGPDsyBjaG8gY8OhYyBk4buxIGLDoW8gdHV54bq/biB0w61uaCAkKFxhbHBoYStcYmV0YSB4KSQsIGRvIMSRw7MsIG3DtCBow6xuaCBuw6B5IGtow7RuZyBjw7MgduG6pW4gxJHhu4EgY+G6p3UgdHLDumMgbcOgIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIG3huq9jIHBo4bqjaS4NCg0KxJDDonkgbMOgIG3hu5l0IGjDoG0gbGnDqm4ga+G6v3QgbcOgIG7DsyDEkeG7k25nIGJp4bq/biB24bubaSB4w6FjIHN14bqldCAkXHBpJCB2w6AgZ2nDoSB0cuG7iyBiaeG6v24gdGhpw6puIGPhu6dhIG7DsyBsw6AgdMO5eSDDvSAodOG7qyAkLVxpbmZ0eSQgxJHhur9uICQrXGluZnR5JCkuIEjDoG0gbGnDqm4ga+G6v3QgxJHGsOG7o2MgxJHhu4EgeHXhuqV0IGzDoCAkbG9nKFxmcmFje1xwaSh4KX17MS1ccGkoeCl9KSQsIMSRxrDhu6NjIGfhu41pIGzDoCBow6BtIGxvZ2l0IHbDoCBrw70gaGnhu4d1IGzDoCAkbG9naXQoXHBpKSQgdsOgIG3DtCBow6xuaCBo4buTaSBxdXkgdMawxqFuZyDhu6luZyBsw6A6DQoNCiQkbG9nKFxmcmFje1xwaSh4KX17MS1ccGkoeCl9KT1cYWxwaGErXGJldGEgeCQkDQoNCsSQw6J5IMSRxrDhu6NjIGfhu41pIGzDoCBtw7QgaMOsbmggbG9naXN0aWMgaGF5IG3DtCBow6xuaCBsb2dpdC4NCg0KIyMjIE3DtCBow6xuaCBo4buTaSBxdXkgduG7m2kgaMOgbSBwcm9iaXQNCg0KSOG7k2kgcXV5IFByb2JpdCwgxJHDtGkga2hpIGPDsm4gxJHGsOG7o2MgZ+G7jWkgbMOgIG3DtCBow6xuaCBQcm9iaXQsIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggY8OzIGJp4bq/biBwaOG7pSB0aHXhu5ljIGThuqFuZyBuaOG7iyBwaMOibi4gVHJvbmcgaOG7k2kgcXV5IFByb2JpdCwgeGVtIGjDoG0geMOhYyBzdeG6pXQgJFxwaSh4KSQgaG/hurdjICQxLVxwaSh4KSQgbMOgIGjDoG0gcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPhu6dhIG3hu5l0IGJp4bq/biBuZ+G6q3Ugbmhpw6puIFggY8OzIHBow6JuIHBo4buRaSBjaHXhuqluLCB04bupYyBsw6AgeMOhYyBzdeG6pXQg4oCcVGjDoG5oIGPDtG5n4oCdIGPDsyBk4bqhbmciDQoNCiQkXHBpKHgpPVxQaGkoXGFscGhhK1xiZXRhIHgpJCQNCg0KdHJvbmcgxJHDsyAkXFBoaSh4KT1cZnJhY3sxfXtcc3FydHsyXHBpfX1caW50X3stXGluZnR5fV54IFxtYXRocm17ZX1eey1cZnJhY3sxfXsyfXReMn1cbWF0aHJte2R0fSQgbMOgIGjDoG0gcGjDom4gcGjhu5FpIGNodeG6qW4gY2jDrW5oIHThuq9jLg0KDQpLw70gaGnhu4d1OiAkUHJvYml0KFxwaSh4KSk9XFBoaV57LTF9KFxwaSh4KSkkIHbDoCBtw7QgaMOsbmggUHJvYml0IMSRxrDhu6NjIHZp4bq/dCBkxrDhu5tpIGThuqFuZzoNCg0KJCRQcm9iaXQoXHBpKHgpKT1cYWxwaGErXGJldGEgeCQkDQoNCiMjIyBNw7QgaMOsbmggaOG7k2kgcXV5IHbhu5tpIGjDoG0gY2xvZ2xvZw0KDQpNw7QgaMOsbmggQ29tcGxlbWVudGFyeSBMb2ctTG9nIChjbG9nbG9nKSBsw6AgbeG7mXQgcGjGsMahbmcgcGjDoXAgcGjDom4gbG/huqFpIGtow6FjIHRyb25nIHRo4buRbmcga8OqLiBNw7QgaMOsbmggY2xvZ2xvZyBkw7luZyDEkeG7gyBk4buxIMSRb8OhbiB4w6FjIHN14bqldCB44bqjeSByYSBt4buZdCBz4buxIGtp4buHbiBob+G6t2MgdGh14buZYyB0w61uaCBuaOG7iyBwaMOibiAoY8OzIGhhaSBs4bubcCwgdGjGsOG7nW5nIMSRxrDhu6NjIGvDvSBoaeG7h3UgbMOgIDAgdsOgIDEpLCBk4buxYSB2w6BvIMSR4bq3YyB0csawbmcgKGJp4bq/biDEkeG7mWMgbOG6rXApIGPhu6dhIGPDoWMgbeG6q3UuDQoNClRyb25nIHRyxrDhu51uZyBo4bujcCB04bu3IGzhu4cgY8aw4bujYyBwaOG7pSB0aHXhu5ljIHbDoG8gY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCBkxrDhu5tpIGThuqFuZyBow6BtIGzFqXkgdGjhu6thICRPZGRzKHgpPVxmcmFje1xwaSh4KX17MS1ccGkoeCl9JCwgdGEgbmjhuq1uIMSRxrDhu6NjIG3DtCBow6xuaCBsb2dpc3RpYyBjw7MgY8OhYyBiaeG6v24gZOG7sSBiw6FvIOG7nyBk4bqhbmcgbG9nLCBn4buNaSBsw6AgbcO0IGjDrG5oIGxvZ2lzdGljIGThuqFuZyBsb2ctbG9nOg0KDQokJGxvZyhcZnJhY3tccGkoeCl9ezEtXHBpKHgpfSk9XGJldGFfMCtcYmV0YV8xLmxvZ3hfMStcYmV0YV8yLmxvZ3hfMisuLi4rXGJldGFfbS5sb2d4X20kJA0KDQojIyBDw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oDQoNCiMjIyBDaOG7iSBz4buRICRQc2V1ZG8gLSBSXjIkDQoNClbDrCBo4buHIHPhu5EgeMOhYyDEkeG7i25oICRSXjIkIGtow7RuZyBjw7JuIMO9IG5naMSpYSB0cm9uZyB2aeG7h2MgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggbG9naXN0aWMgbsOzaSByacOqbmcgdsOgIGPDoWMgbcO0IGjDrG5oIHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIE1MIG7Ds2kgY2h1bmcuIMSQ4buDIHRoYXkgY2hvIHZhaSB0csOyIGPhu6dhIGjhu4cgc+G7kSB4w6FjIMSR4buLbmggJFJeMiQsIG5nxrDhu51pIHRhIGThu7FhIHbDoG8gbeG7mXQgY2jhu4kgc8O0IGfhu41pIGzDoCAiZ2nhuqMgJFJeMiQiICgkUHNldWRvIC0gUl4yJCkgxJHGsOG7o2MgeMOhYyDEkeG7i25oIG5oxrAgc2F1Og0KDQokJFBzZXVkbyAtIFJeMj0xLVxmcmFje2xvZyhMXzEpfXtsb2coTF8wKX09XGZyYWN7bG9nKExfMCktbG9nKExfMSl9e2xvZyhMXzApfSQkDQoNCkNo4buJIHPhu5EgbsOgeSDEkcaw4bujYyDEkeG7gSB4deG6pXQgYuG7n2kgTWNGYWRkZW4gbsOqbiBjw7JuIGPDsyB0w6puIGzDoCBoYXkgTWNGYWRkZW7igJlzIFItc3F1YXJlZC4gS2hpIGNo4bqheSBo4buTaSBxdXksIGPDoWMgcGjhuqduIG3hu4FtIOG7qW5nIGThu6VuZyDEkeG7gXUgY3VuZyBj4bqlcCBjaOG7iSBz4buRIG7DoHkuDQoNCkPDsyB0aOG7gyBkw7luZyAkUHNldWRvIC0gUl4yJCDEkeG7gyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBwaOG7pyBo4bujcCBj4bunYSBtw7QgaMOsbmggbG9naXN0aWMgxJHhu5FpIHbhu5tpIGThu68gbGnhu4d1IHRo4buxYyB04bq/OiBQc2V1ZG8g4oCTIFIgY8OgbmcgbOG7m24sIG3DtCBow6xuaCBjw6BuZyBwaMO5IGjhu6NwLiAkUHNldWRvIC0gUl4yJCBjw6BuZyBiw6ksIG3DtCBow6xuaCBjw6BuZyDDrXQgcGjDuSBo4bujcC4gVHV5IG5oacOqbiB24bubaSBtw7QgaMOsbmggTG9naXN0aWMsIGNoaSB0acOqdSAkUHNldWRvIC0gUl4yJCBkbyBNYWNGYWRkZW4gxJHGsGEgcmEgcuG6pXQga2jDsyBz4butIGThu6VuZyDEkeG7gyBkaeG7hW4gZ2nhuqNpIG3hu6ljIMSR4buZIGdp4bqjaSB0aMOtY2ggY+G7p2EgbcO0IGjDrG5oIGxvZ2lzdGljIG7Ds2kgcmnDqm5nIHbDoCBjw6FjIG3DtCBow6xuaCBwaMOibiB0w61jaCDEkeG7i25oIHTDrW5oIG7Ds2kgY2h1bmcsIGRvIHbhuq15IG5nxrDhu51pIHRhIGPhuqduIHBo4bqjaSBr4bq/dCBo4bujcCB24bubaSBjw6FjIGNo4buJIHPhu5Ega2jDoWMuDQoNCiMjIyBDaOG7iSBzw7QgQUlDIChBa2Fpa2UgSW5mb3JtYXRpb24gQ3JpdGVyaWFuKQ0KDQpBSUMgxJHGsOG7o2MgxJHhu4EgeHXhuqV0IGLhu59pIEFrYWlrZSBIaXJvdHVndSwgbeG7mXQgbmjDoCB0aOG7kW5nIGvDqiBo4buNYyBuZ8aw4budaSBOaOG6rXQuIEFJQyBsw6AgbeG7mXQgdGnDqnUgY2jDrSDEkcaw4bujYyBz4butIGThu6VuZyBt4buZdCBjw6FjaCBwaOG7lSBiaeG6v24gxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgTWF4aW11bSBMaWtla2lob29kIChNTCkuIE3hu5l0IGPDoWNoIGNodW5nIGNodW5nIGdpw6EgdHLhu4sgY+G7p2EgQUlDIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0LiBUcm9uZyBwaOG6p24gbeG7gW0gUiwgQUlDIMSRxrDhu6NjIHTDrW5oIGLhurFuZyBjw7RuZyB0aOG7qWMgc2F1Og0KDQokJEFJQz1EZXZpYW5jZSsyayQkDQoNCiMjIyBDaOG7iSBz4buRIERldmlhbmNlDQoNCkRldmlhbmNlIGPFqW5nIGzDoCBt4buZdCB0acOqdSBjaMOtIHLhuqV0IHBo4buVIGJp4bq/biDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDEkcOhbmggZ2nDoSBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bufaSBwaMawxqFuZyBwaMOhcCBI4bujcCBsw70gY+G7sWMgxJHhuqFpIChNTCkuIE3hu5l0IGPDoWNoIHThu5VuZyBxdcOhLCBjxaluZyBnaeG7kW5nIG5oxrAgY2jhu4kgdGnDqnUgQUlDLCBnacOhIHRy4buLIGPhu6dhIERldmlhbmNlIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0Lg0KDQojIyMgQ2jhu4kgc+G7kSBCcmllcg0KDQokJEI9XGZyYWN7MX17bn1cc3VtX3tpPTF9Xm4oWV9pLVx3aWRlaGF0e1xwaV9pfSleMj1cZnJhY3tTdW0gc3F1YXJlZCByZXNpZH17bn0kJA0KDQpDaOG7iSBz4buRIEJyaWVyIHRo4buxYyBjaOG6pXQgbMOgIHRydW5nIGLhu4luaCBj4bunYSB04buVbmcgYsOsbmggcGjGsMahbmcgY8OhYyDEkeG7mSBs4buHY2ggZ2nhu69hIGdpw6EgdHLhu4sgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgWSB2w6AgZ2nDoSB0cuG7iyDGsOG7m2MgbMaw4bujbmcgY+G7p2EgbsOzLiBWw6wgduG6rXkgY2jhu4kgc+G7kSBCIGPDoG5nIGLDqSB0aMOsIG3DtCBow6xuaCBjaG8gxrDhu5tjIGzGsOG7o25nIGPDoG5nIGNow61uaCB4w6FjLCB04bupYyBsw6AgY8OgbmcgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSBxdWFuIHPDoXQuDQoNCiMjIyBNYSB0cuG6rW4gbmjhuqdtIGzhuqtuDQoNCk1hIHRy4bqtbiAkXGJlZ2lue2JtYXRyaXh9VE4mRlBcXEZOJlRQXGVuZHtibWF0cml4fSQgxJHGsOG7o2MgZ+G7jWkgbMOgIG1hIHRy4bqtbiBuaOG6p20gbOG6q24gKENvbmZ1c2lvbiBNYXRyaXgpIGPhu6dhIG3DtCBow6xuaC4gS8O9IGhp4buHdSBUTiAoVHJ1ZSBOZWdhdGl2ZSkgbMOgIHPhu5Egw6JtIHTDrW5oIHRo4buxYywgRk4gKEZhbGUgTmVnYXRpdmUpIGzDoCBz4buRIMOibSB0w61uaCBnaeG6oywgRlAgKEZhbGUgUG9zaXRpdmUpIGzDoCBz4buRIGTGsMahbmcgdMOtbmggZ2nhuqMsIFRQIChUcnVlIFBvc2l0aXZlKSBsw6Agc8O0IGTGsMahbmcgdMOtbmggdGjhu7FjLg0KDQpUcm9uZyBtYSB0cuG6rW4gbmjhuqdtIGzhuqtuIG5nxrDhu51pIHRhIHjDqXQgY8OhYyBjaOG7iSBz4buROg0KDQotIMSQ4buZIGNow61uaCB4w6FjIHRvw6BuIHRo4buDICQ9XGZyYWN7VE4rVFB9e259JCAodOG7tyBs4buHIGThu7EgYsOhbyDEkcO6bmcgdHLDqm4gdG/DoG4gYuG7mSBt4bqrdSkuDQoNCi0gU2FpIHPhu5EgdG/DoG4gdGjhu4MgJD1cZnJhY3tGTitGUH17bn0kICh04bu3IGzhu4cgZOG7sSBiw6FvIHNhaSB0csOqbiBt4bqrdSkuDQoNCi0gxJDhu5kgbmjhuqF5IChTZW5zaXRpdml0eSkgJD1cZnJhY3tUUH17Rk4rVFB9PVxmcmFje1Phu5EgZMawxqFuZyB0w61uaCB0aOG7sWN9e1Thu5VuZyBz4buRIHF1YW4gc8OhdCBjw7MgWT0xfSQgKFThu7cgbOG7hyBk4buxIGLDoW8gxJHDum5nIHRyw6puIHThu5VuZyBz4buRIGPDoWMgdGjDoG5oIGPDtG5nIMSRxrDhu6NjIHF1YW4gc8OhdCkuIMSQ4buZIG5o4bqheSBjw6BuZyBs4bubbiBjw6BuZyB04buRdC4NCg0KLSBTYWkgc+G7kSDDom0gdMOtbmggZ2nhuqMgKEZhbGUgbmVnYXRpdmUgZXJyb3IpID0gMSAtIMSQ4buZIG5o4bqheSAkPVxmcmFje0ZOfXtGTitUUH0kICh04bu3IGzhu4cgZOG7sSBiw6FvIHNhaSB0csOqbiB04buVbmcgc+G7kSBjw6FjICJUaMOgbmggY8O0bmcgxJHGsOG7o2MgcXVhbiBzw6F0IikuDQoNCi0gxJDhu5kgxJHhurdjIGhp4buHdSAoU3BlY2lmaWNpdHkpICQ9XGZyYWN7VE59e1ROK0ZQfT1cZnJhY3tT4buRIMOibSB0w61uaCB0aOG7sWN9e1Thu5VuZyBz4buRIHF1YW4gc8OhdCBjw7MgWT0wfSQgKHThu7cgbOG7hyBk4buxIGLDoW8gxJHDum5nIHRyw6puIHThu5VuZyBz4buRIGPDoWMgIlRo4bqldCBi4bqhaSIgxJHGsOG7o2MgcXVhbiBzw6F0KTogxJDhu5kgxJHhurdjIGhp4buHdSBjw6BuZyBs4bubbiBjw6BuZyB04buRdC4NCg0KLSBTYWkgc+G7kSBkxrDGoW5nIHTDrW5oIGdp4bqjID0gMSAtIMSQ4buZIMSR4bq3YyBoaeG7h3UgJD1cZnJhY3tGUH17VE4rRlB9Lg0KDQpN4buZdCBtw7QgaMOsbmggdOG7kXQgbMOgIG3hu5l0IG3DtCBow6xuaCBjw7MgxJHhu5kgbmjhuqF5IGzhu5tuIHbDoCDEkeG7mSDEkeG6t2MgaGnhu4d1IGzhu5tuLg0KDQojIyBE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1DQoNCiMjIyBE4buvIGxp4buHdQ0KDQpgYGB7cn0NCmRhdGEgPC0gcmVhZF9leGNlbCgiQzovSEsyLTIwMjMvUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgxJHhu4tuaCB0w61uaC9UTC54bHN4IikNCmRhdGENCnN0cihkYXRhKQ0KYGBgDQoNCiMjIyBNw7QgdOG6oyBk4buvIGxp4buHdQ0KDQpC4buZIGThu68gbGnhu4d1IGJhbyBn4buTbSA0MjY5IHF1YW4gc8OhdCwgY8OzIHThuqV0IGPhuqMgbMOgIDEzIGJp4bq/biB0cm9uZyDEkcOzIGfhu5NtIDMgYmnhur9uIMSR4buLbmggdMOtbmggdsOgIDEwIGJp4bq/biDEkeG7i25oIGzGsOG7o25nLg0KDQoqKkJp4bq/biDEkeG7i25oIHTDrW5oKioNCg0KLSAqKmVkdWNhdGlvbjoqKiBUw6xuaCB0cuG6oW5nIGjhu41jIHbhuqVuIGPhu6dhIGtow6FjaCBow6BuZyAoR3JhZHVhdGU6IMSQw6MgdOG7kXQgbmdoaeG7h3AsIE5vdCBHcmFkdWF0ZTogQ2jGsGEgdOG7kXQgbmdoaeG7h3ApDQoNCi0gKipzZWxmX2VtcGxveWVkOioqIEto4bqjIG7Eg25nIHThu7EgbMOgbSBjaOG7pyBj4bunYSBraMOhY2ggaMOgbmcgKE5vOiBLaMO0bmcsIFllczogQ8OzKQ0KDQotICoqbG9hbl9zdGF0dXM6KiogUXV54bq/dCDEkeG7i25oIGNobyB2YXkgY+G7p2EgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggKEFwcHJvdmVkOiBDaOG6pXAgbmjhuq1uLCBSZWplY3RlZDogVOG7qyBjaOG7kWkpDQoNCioqQmnhur9uIMSR4buLbmggbMaw4bujbmcqKg0KDQotICoqbG9hbl9pZDoqKiBT4buRIHRo4bupIHThu7EgY+G7p2Ega2jDoWNoIGjDoG5nDQoNCi0gKipub19vZl9kZXBlbmRlbnRzOioqIFPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBj4bunYSBraMOhY2ggaMOgbmcNCg0KLSAqKmluY29tZV9hbm51bToqKiBUaHUgbmjhuq1wIGjDoG5nIG7Eg20gY+G7p2Ega2jDoWNoIGjDoG5nDQoNCi0gKipsb2FuX2Ftb3VudDoqKiBT4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheQ0KDQotICoqbG9hbl90ZXJtOioqIEvhu7MgaOG6oW4gdmF5DQoNCi0gKipjaWJpbF9zY29yZToqKiDEkGnhu4NtIGTDom4gc+G7sSBj4bunYSBraMOhY2ggaMOgbmcNCg0KLSAqKnJlc2lkZW50aWFsX2Fzc2V0c192YWx1ZToqKiBHacOhIHRy4buLIHTDoGkgc+G6o24gbmjDoCDhu58gY+G7p2Ega2jDoWNoIGjDoG5nDQoNCi0gKipjb21tZXJjaWFsX2Fzc2V0c192YWx1ZToqKiBHacOhIHRy4buLIHTDoGkgc+G6o24gdGjGsMahbmcgbeG6oWkgY+G7p2Ega2jDoWNoIGjDoG5nDQoNCi0gKipsdXh1cnlfYXNzZXRzX3ZhbHVlOioqIEdpw6EgdHLhu4sgdMOgaSBz4bqjbiB4YSB44buJIGPhu6dhIGtow6FjaCBow6BuZw0KDQotICoqYmFua19hc3NldF92YWx1ZToqKiBHacOhIHRy4buLIHTDoGkgc+G6o24gbmfDom4gaMOgbmcgY+G7p2Ega2jDoWNoIGjDoG5nDQoNCiMjIyBYw6FjIMSR4buLbmggYmnhur9uIHBo4bulIHRodeG7mWMNCg0KKipCaeG6v24gxJHhu4tuaCB0w61uaCoqDQoNCi0gUGjDom4gdMOtY2ggdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSDEkeG6v24gcXV54bq/dCDEkeG7i25oIGNobyB2YXkgY+G7p2EgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggKGxvYW5fc3RhdHVzKS4NCg0KLSBRdXnhur90IMSR4buLbmggY2hvIHZheSBjw7MgdGjhu4MgYuG7iyDhuqNuaCBoxrDhu59uZyBi4bufaSBuaGnhu4F1IHnhur91IHThu5EgbmjGsDogdMOsbmggdHLhuqFuZyBo4buNYyB24bqlbiBj4bunYSBraMOhY2ggaMOgbmcgKGVkdWNhdGlvbiksIGto4bqjIG7Eg25nIHThu7EgbMOgbSBjaOG7pyBj4bunYSBraMOhY2ggaMOgbmcgKHNlbGZfZW1wbG95ZWQpLCB0aHUgbmjhuq1wIGjDoG5nIG7Eg20gY+G7p2Ega2jDoWNoIGjDoG5nIChpbmNvbWVfYW5udW0pLC4uLiBEbyDEkcOzLCB0w6FjIGdp4bqjIGNo4buNbiBwaMOibiB0w61jaCBiaeG6v24gbG9hbl9zdGF0dXMgxJHhu4MgcGjhuqduIG7DoG8gZ2nDunAgY2hvIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIHBow6JuIGxv4bqhaSBuaOG7r25nIHnhur91IHThu5EgdMOtY2ggY+G7sWMgdsOgIHRpw6p1IGPhu7FjLCB04burIMSRw7MgY8OzIHRo4buDIGdp4bqjbSB0aGnhu4N1IG5o4buvbmcga+G6v3QgcXXhuqMga2jDtG5nIG1vbmcgbXXhu5FuLg0KDQoqKkJp4bq/biDEkeG7i25oIGzGsOG7o25nKioNCg0KLSBQaMOibiB0w61jaCB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIMSR4bq/biBz4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSAobG9hbl9hbW91bnQpLg0KDQotIFPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IGPDsyB0aOG7gyBi4buLIOG6o25oIGjGsOG7n25nIGLhu59pIGPDoWMgeeG6v3UgdOG7kSBuaMawOiBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMgY+G7p2Ega2jDoWNoIGjDoG5nIChub19vZl9kZXBlbmRlbnRzKSwgdGh1IG5o4bqtcCBow6BuZyBuxINtIGPhu6dhIGtow6FjaCBow6BuZyAoaW5jb21lX2FubnVtKSwga2jhuqMgbsSDbmcgdOG7sSBsw6BtIGNo4bunIGPhu6dhIGtow6FjaCBow6BuZyAoc2VsZl9lbXBsb3llZCksLi4uIERvIMSRw7MsIHTDoWMgZ2nhuqMgY2jhu41uIHBow6JuIHTDrWNoIGJp4bq/biBsb2FuX2Ftb3VudCDEkeG7gyBnacO6cCB04buVIGNo4bupYyB0w6BpIGNow61uaCDEkcawYSByYSBuaOG7r25nIGNow61uaCBzw6FjaCDGsHUgxJHDo2kgdmF5IHBow7kgaOG7o3AgduG7m2kgdOG7q25nIMSR4buRaSB0xrDhu6NuZyBraMOhY2ggaMOgbmcuDQoNCiMgQ0jGr8agTkcgNDogS+G6vlQgUVXhuqIgTkdIScOKTiBD4buoVQ0KDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaG8gY8OhYyBiaeG6v24NCg0KIyMjIEJp4bq/biDEkeG7i25oIHTDrW5oDQoNCiMjIyMgQmnhur9uIGVkdWNhdGlvbg0KDQpgYGB7cn0NCnRhYmxlKGRhdGEkZWR1Y2F0aW9uKQ0KdGFibGUoZGF0YSRlZHVjYXRpb24pL3N1bSh0YWJsZShkYXRhJGVkdWNhdGlvbikpDQpnZ3Bsb3QoZGF0YSxhZXMoZWR1Y2F0aW9uKSkrZ2VvbV9iYXIoY29sb3IgPSAicmVkIixmaWxsID0gInBpbmsiKSsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpLCBhY2N1cmFjeSA9IDAuMDEpKSwgc3RhdCA9ICdjb3VudCcsIHZqdXN0ID0gLSAuNSkreGxhYigiVMOsbmggdHLhuqFuZyBo4buNYyB24bqlbiBj4bunYSBraMOhY2ggaMOgbmciKSt5bGFiKCJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpK3RoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNClRyb25nIDQyNjkga2jDoWNoIGjDoG5nIGfhu61pIGjhu5Mgc8ahIHZheSDEkeG6v24gdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmgsIGPDszoNCg0KLSAyMTQ0IG5nxrDhu51pIMSRw6MgdOG7kXQgbmdoaeG7h3AsIGNoaeG6v20gNTAsMjIlLg0KDQotIDIxMjUgbmfGsOG7nWkgY2jGsGEgdOG7kXQgbmdoaeG7h3AsIGNoaeG6v20gNDksNzglLg0KDQpU4burIGJp4buDdSDEkeG7kyBjw7MgdGjhu4MgdGjhuqV5IMSRxrDhu6NjIHThu7cgbOG7hyBnaeG7r2EgY8OhYyBraMOhY2ggaMOgbmcgxJHDoyB04buRdCBuZ2hp4buHcCB2w6AgY2jGsGEgdOG7kXQgbmdoaeG7h3Aga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbOG7m24uDQoNCiMjIyMgQmnhur9uIHNlbGZfZW1wbG95ZWQNCg0KYGBge3J9DQp0YWJsZShkYXRhJHNlbGZfZW1wbG95ZWQpDQp0YWJsZShkYXRhJHNlbGZfZW1wbG95ZWQpL3N1bSh0YWJsZShkYXRhJHNlbGZfZW1wbG95ZWQpKQ0KZ2dwbG90KGRhdGEsYWVzKHNlbGZfZW1wbG95ZWQpKStnZW9tX2Jhcihjb2xvciA9ICJyZWQiLGZpbGwgPSAicGluayIpKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSksIGFjY3VyYWN5ID0gMC4wMSkpLCBzdGF0ID0gJ2NvdW50Jywgdmp1c3QgPSAtIC41KSt4bGFiKCJLaOG6oyBuxINuZyB04buxIGzDoG0gY2jhu6cgY+G7p2Ega2jDoWNoIGjDoG5nIikreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQpUcm9uZyA0MjY5IGtow6FjaCBow6BuZyBn4butaSBo4buTIHPGoSB2YXkgxJHhur9uIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLCBjw7M6DQoNCi0gMjExOSBuZ8aw4budaSBraMO0bmcgY8OzIGto4bqjIG7Eg25nIHThu7EgbMOgbSBjaOG7pywgY2hp4bq/bSA0OSw2NCUuDQoNCi0gMjE1MCBuZ8aw4budaSBjw7Mga2jhuqMgbsSDbmcgdOG7sSBsw6BtIGNo4bunLCBjaGnhur9tIDUwLDM2JS4NCg0KVOG7qyBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkcaw4bujYyB04bu3IGzhu4cgZ2nhu69hIGPDoWMga2jDoWNoIGjDoG5nIGPDsyB2w6Aga2jDtG5nIGPDsyBraOG6oyBuxINuZyB04buxIGzDoG0gY2jhu6cga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbOG7m24uDQoNCiMjIyMgQmnhur9uIGxvYW5fc3RhdHVzDQoNCmBgYHtyfQ0KdGFibGUoZGF0YSRsb2FuX3N0YXR1cykNCnRhYmxlKGRhdGEkbG9hbl9zdGF0dXMpL3N1bSh0YWJsZShkYXRhJGxvYW5fc3RhdHVzKSkNCmdncGxvdChkYXRhLGFlcyhsb2FuX3N0YXR1cykpK2dlb21fYmFyKGNvbG9yID0gInJlZCIsZmlsbCA9ICJwaW5rIikrIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSwgYWNjdXJhY3kgPSAwLjAxKSksIHN0YXQgPSAnY291bnQnLCB2anVzdCA9IC0gLjUpK3hsYWIoIlF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIikreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQpUcm9uZyA0MjY5IGtow6FjaCBow6BuZyBn4butaSBo4buTIHPGoSB2YXkgxJHhur9uIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLCBjw7M6DQoNCi0gMjY1NiBuZ8aw4budaSDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahLCBjaGnhur9tIDYyLDIyJS4NCg0KLSAyNjEzIG5nxrDhu51pIGLhu4sgdOG7qyBjaOG7kWkgaOG7kyBzxqEsIGNoaeG6v20gMzcsNzglLg0KDQpU4burIGJp4buDdSDEkeG7kyBjw7MgdGjhu4MgdGjhuqV5IMSRxrDhu6NjIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBjYW8gaMahbiBraG/huqNuZyAyNSUgc28gduG7m2kga2jDoWNoIGjDoG5nIGLhu4sgdOG7qyBjaOG7kWkuDQoNCiMjIyBCaeG6v24gxJHhu4tuaCBsxrDhu6NuZw0KDQojIyMjIEJp4bq/biBub19vZl9kZXBlbmRlbnRzDQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJG5vX29mX2RlcGVuZGVudHMpDQpgYGANCg0KVHJvbmcgNDI2OSBraMOhY2ggaMOgbmcgZ+G7rWkgaOG7kyBzxqEgdmF5IMSR4bq/biB04buVIGNo4bupYyB0w6BpIGNow61uaCwgY8OzOg0KDQotIFPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyDDrXQgbmjhuqV0IGzDoCAwIG5nxrDhu51pLg0KDQotIFPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBuaGnhu4F1IG5o4bqldCBsw6AgNSBuZ8aw4budaS4NCg0KLSBDw7MgMjUlIHPhu5EgbmfGsOG7nWkgY8OzIGTGsOG7m2kgMSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljLg0KDQotIEPDsyA1MCUgc+G7kSBuZ8aw4budaSBjw7MgZMaw4bubaSAzIG5nxrDhu51pIHBo4bulIHRodeG7mWMuDQoNCi0gQ8OzIDc1JSBz4buRIG5nxrDhu51pIGPDsyBkxrDhu5tpIDQgbmfGsOG7nWkgcGjhu6UgdGh14buZYy4NCg0KYGBge3J9DQpzZChkYXRhJG5vX29mX2RlcGVuZGVudHMpDQpgYGANCg0KxJDhu5kgbOG7h2NoIGNodeG6qW4gY+G7p2Egc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGzDoCAxLDY5NTkxLiBDaG8gYmnhur90IG3hu6ljIMSR4buZIHBow6JuIHTDoW4gduG7gSBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMgY+G7p2EgdOG7q25nIG5nxrDhu51pIHRyb25nIDQyNjkgbmfGsOG7nWkgc28gduG7m2kgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgMSw2OTU5MS4NCg0KYGBge3J9DQpoaXN0KGRhdGEkbm9fb2ZfZGVwZW5kZW50cywgY29sID0gInBpbmsiLCBtYWluID0gIkJp4buDdSDEkeG7kyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMiLCB4bGFiID0gIlPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBj4bunYSBraMOhY2ggaMOgbmciLCB5bGFiID0gIlPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIikNCmBgYA0KDQpU4burIGJp4buDdSDEkeG7kyB0aOG6pXkgxJHGsOG7o2Mgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGtow6FjaCBow6BuZyBraMO0bmcgY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBs4bubbi4NCg0KIyMjIyBCaeG6v24gaW5jb21lX2FubnVtDQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJGluY29tZV9hbm51bSkNCmBgYA0KDQpUcm9uZyA0MjY5IGtow6FjaCBow6BuZyBn4butaSBo4buTIHPGoSB2YXkgxJHhur9uIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLCBjw7M6DQoNCi0gVGh1IG5o4bqtcCBow6BuZyBuxINtIHRydW5nIGLDrG5oIGzDoCA1MDU5MTI0Lg0KDQotIFRodSBuaOG6rXAgaMOgbmcgbsSDbSB0aOG6pXAgbmjhuqV0IGzDoCAyMDAwMDAuDQoNCi0gVGh1IG5o4bqtcCBow6BuZyBuxINtIGNhbyBuaOG6pXQgbMOgIDk5MDAwMDAuDQoNCi0gQ8OzIDI1JSBz4buRIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIGjDoG5nIG7Eg20gZMaw4bubaSAyNzAwMDAwLg0KDQotIEPDsyA1MCUgc+G7kSBuZ8aw4budaSBjw7MgdGh1IG5o4bqtcCBow6BuZyBuxINtIGTGsOG7m2kgNTEwMDAwMC4NCg0KLSBDw7MgNzUlIHPhu5EgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgaMOgbmcgbsSDbSBkxrDhu5tpIDc1MDAwMDAuDQoNCmBgYHtyfQ0Kc2QoZGF0YSRpbmNvbWVfYW5udW0pDQpgYGANCg0KxJDhu5kgbOG7h2NoIGNodeG6qW4gY+G7p2EgdGh1IG5o4bqtcCBow6BuZyBuxINtIGzDoCAyODA2ODQwLiBDaG8gYmnhur90IG3hu6ljIMSR4buZIHBow6JuIHTDoW4gduG7gSB0aHUgbmjhuq1wIGjDoG5nIG7Eg20gY+G7p2EgdOG7q25nIG5nxrDhu51pIHRyb25nIDQyNjkgbmfGsOG7nWkgc28gduG7m2kgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgMjgwNjg0MC4NCg0KYGBge3J9DQpoaXN0KGRhdGEkaW5jb21lX2FubnVtLCBjb2wgPSAicGluayIsIG1haW4gPSAiQmnhu4N1IMSR4buTIHRodSBuaOG6rXAgaMOgbmcgbsSDbSIsIHhsYWIgPSAiVGh1IG5o4bqtcCBow6BuZyBuxINtIGPhu6dhIGtow6FjaCBow6BuZyIsIHlsYWIgPSAiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKQ0KYGBgDQoNClThu6sgYmnhu4N1IMSR4buTIHRo4bqleSDEkcaw4bujYyB0aHUgbmjhuq1wIGjDoG5nIG7Eg20gZ2nhu69hIGPDoWMga2jDoWNoIGjDoG5nIGtow6EgxJHhu4F1LCBraMO0bmcgY8OzIGFpIGPDsyB0aHUgbmjhuq1wIHF1w6EgdGjhuqVwLg0KDQojIyMjIEJp4bq/biBsb2FuX2Ftb3VudA0KDQpgYGB7cn0NCnN1bW1hcnkoZGF0YSRsb2FuX2Ftb3VudCkNCmBgYA0KDQpUcm9uZyA0MjY5IGtow6FjaCBow6BuZyBn4butaSBo4buTIHPGoSB2YXkgxJHhur9uIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLCBjw7M6DQoNCi0gU+G7kSB0aeG7gW4ga2jDoWNoIGjDoG5nIG114buRbiB2YXkgdHJ1bmcgYsOsbmggbMOgIDE1MTMzNDUwLg0KDQotIFPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IHRo4bqlcCBuaOG6pXQgbMOgIDMwMDAwMC4NCg0KLSBT4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSBjYW8gbmjhuqV0IGzDoCAzOTUwMDAwMC4NCg0KLSBDw7MgMjUlIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IGTGsOG7m2kgNzcwMDAwMC4NCg0KLSBDw7MgNTAlIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IGTGsOG7m2kgMTQ1MDAwMDAuDQoNCi0gQ8OzIDc1JSBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSBkxrDhu5tpIDIxNTAwMDAwLg0KDQpgYGB7cn0NCnNkKGRhdGEkbG9hbl9hbW91bnQpDQpgYGANCg0KxJDhu5kgbOG7h2NoIGNodeG6qW4gY+G7p2Egc+G7kSB0aeG7gW4ga2jDoWNoIGjDoG5nIG114buRbiB2YXkgbMOgIDkwNDMzNjMuIENobyBiaeG6v3QgbeG7qWMgxJHhu5kgcGjDom4gdMOhbiB24buBIHPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IGPhu6dhIHThu6tuZyBuZ8aw4budaSB0cm9uZyA0MjY5IG5nxrDhu51pIHNvIHbhu5tpIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggbMOgIDkwNDMzNjMuDQoNCmBgYHtyfQ0KaGlzdChkYXRhJGxvYW5fYW1vdW50LCBjb2wgPSAicGluayIsIG1haW4gPSAiQmnhu4N1IMSR4buTIHPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IiwgeGxhYiA9ICJT4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSIsIHlsYWIgPSAiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKQ0KYGBgDQoNCiMjIyMgQmnhur9uIGxvYW5fdGVybQ0KDQpgYGB7cn0NCnN1bW1hcnkoZGF0YSRsb2FuX3Rlcm0pDQpgYGANCg0KVHJvbmcgNDI2OSBraMOhY2ggaMOgbmcgZ+G7rWkgaOG7kyBzxqEgdmF5IMSR4bq/biB04buVIGNo4bupYyB0w6BpIGNow61uaCwgY8OzOg0KDQotIEvhu7MgaOG6oW4gdmF5IHRydW5nIGLDrG5oIGzDoCAxMCw5Lg0KDQotIEvhu7MgaOG6oW4gdmF5IHRo4bqlcCBuaOG6pXQgbMOgIDIuDQoNCi0gS+G7syBo4bqhbiB2YXkgY2FvIG5o4bqldCBsw6AgMjAuDQoNCi0gQ8OzIDI1JSBraMOhY2ggaMOgbmcgY8OzIGvhu7MgaOG6oW4gdmF5IGTGsOG7m2kgNi4NCg0KLSBDw7MgNTAlIGtow6FjaCBow6BuZyBjw7Mga+G7syBo4bqhbiB2YXkgZMaw4bubaSAxMC4NCg0KLSBDw7MgNzUlIGtow6FjaCBow6BuZyBjw7Mga+G7syBo4bqhbiB2YXkgZMaw4bubaSAxNi4NCg0KYGBge3J9DQpzZChkYXRhJGxvYW5fdGVybSkNCmBgYA0KDQrEkOG7mSBs4buHY2ggY2h14bqpbiBj4bunYSBr4buzIGjhuqFuIHZheSBsw6AgNSw3MDkxODcuIENobyBiaeG6v3QgbeG7qWMgxJHhu5kgcGjDom4gdMOhbiB24buBIGvhu7MgaOG6oW4gdmF5IGPhu6dhIHThu6tuZyBuZ8aw4budaSB0cm9uZyA0MjY5IG5nxrDhu51pIHNvIHbhu5tpIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggbMOgIDUsNzA5MTg3Lg0KDQpgYGB7cn0NCmhpc3QoZGF0YSRsb2FuX3Rlcm0sIGNvbCA9ICJwaW5rIiwgbWFpbiA9ICJCaeG7g3UgxJHhu5Mga+G7syBo4bqhbiB2YXkiLCB4bGFiID0gIkvhu7MgaOG6oW4gdmF5IiwgeWxhYiA9ICJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpDQpgYGANCg0KIyMjIyBCaeG6v24gY2liaWxfc2NvcmUNCg0KYGBge3J9DQpzdW1tYXJ5KGRhdGEkY2liaWxfc2NvcmUpDQpgYGANCg0KVHJvbmcgNDI2OSBraMOhY2ggaMOgbmcgZ+G7rWkgaOG7kyBzxqEgdmF5IMSR4bq/biB04buVIGNo4bupYyB0w6BpIGNow61uaCwgY8OzOg0KDQotIMSQaeG7g20gZMOibiBz4buxIHRydW5nIGLDrG5oIGzDoCA1OTksOS4NCg0KLSDEkGnhu4NtIGTDom4gc+G7sSB0aOG6pXAgbmjhuqV0IGzDoCAzMDAuDQoNCi0gxJBp4buDbSBkw6JuIHPhu7EgY2FvIG5o4bqldCBsw6AgOTAwLg0KDQotIEPDsyAyNSUga2jDoWNoIGjDoG5nIGPDsyDEkWnhu4NtIGTDom4gc+G7sSBkxrDhu5tpIDQ1My4NCg0KLSBDw7MgNTAlIGtow6FjaCBow6BuZyBjw7MgxJFp4buDbSBkw6JuIHPhu7EgZMaw4bubaSA2MDAuDQoNCi0gQ8OzIDc1JSBraMOhY2ggaMOgbmcgY8OzIMSRaeG7g20gZMOibiBz4buxIGTGsOG7m2kgNzQ4Lg0KDQpgYGB7cn0NCnNkKGRhdGEkY2liaWxfc2NvcmUpDQpgYGANCg0KxJDhu5kgbOG7h2NoIGNodeG6qW4gY+G7p2EgxJFp4buDbSBkw6JuIHPhu7EgbMOgIDE3Miw0MzA0LiBDaG8gYmnhur90IG3hu6ljIMSR4buZIHBow6JuIHTDoW4gduG7gSDEkWnhu4NtIGTDom4gc+G7sSBj4bunYSB04burbmcgbmfGsOG7nWkgdHJvbmcgNDI2OSBuZ8aw4budaSBzbyB24bubaSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGzDoCAxNzIsNDMwNC4NCg0KYGBge3J9DQpoaXN0KGRhdGEkY2liaWxfc2NvcmUsIGNvbCA9ICJwaW5rIiwgbWFpbiA9ICJCaeG7g3UgxJHhu5MgxJFp4buDbSBkw6JuIHPhu7EgY+G7p2Ega2jDoWNoIGjDoG5nIiwgeGxhYiA9ICLEkGnhu4NtIGTDom4gc+G7sSBj4bunYSBraMOhY2ggaMOgbmciLCB5bGFiID0gIlPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIikNCmBgYA0KDQojIyMjIEJp4bq/biByZXNpZGVudGlhbF9hc3NldHNfdmFsdWUNCg0KYGBge3J9DQpzdW1tYXJ5KGRhdGEkcmVzaWRlbnRpYWxfYXNzZXRzX3ZhbHVlKQ0KYGBgDQoNClRyb25nIDQyNjkga2jDoWNoIGjDoG5nIGfhu61pIGjhu5Mgc8ahIHZheSDEkeG6v24gdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmgsIGPDszoNCg0KLSBHacOhIHRy4buLIHTDoGkgc+G6o24gbmjDoCDhu58gdHJ1bmcgYsOsbmggbMOgIDc0NzI2MTcuDQoNCi0gR2nDoSB0cuG7iyB0w6BpIHPhuqNuIG5ow6Ag4bufIHRo4bqlcCBuaOG6pXQgbMOgIC0xMDAwMDAuDQoNCi0gR2nDoSB0cuG7iyB0w6BpIHPhuqNuIG5ow6Ag4bufIGNhbyBuaOG6pXQgbMOgIDI5MTAwMDAwLg0KDQotIEdpw6EgdHLhu4sgdMOgaSBz4bqjbiBuaMOgIOG7nyBkxrDhu5tpIDIyMDAwMDAgY2hp4bq/bSAyNSUuDQoNCi0gR2nDoSB0cuG7iyB0w6BpIHPhuqNuIG5ow6Ag4bufIGTGsOG7m2kgNTYwMDAwMCBjaGnhur9tIDUwJS4NCg0KLSBHacOhIHRy4buLIHTDoGkgc+G6o24gbmjDoCDhu58gZMaw4bubaSAxMTMwMDAwMCBjaGnhur9tIDc1JS4NCg0KYGBge3J9DQpzZChkYXRhJHJlc2lkZW50aWFsX2Fzc2V0c192YWx1ZSkNCmBgYA0KDQrEkOG7mSBs4buHY2ggY2h14bqpbiBj4bunYSBnacOhIHRy4buLIHTDoGkgc+G6o24gbmjDoCDhu58gbMOgIDY1MDM2MzcuIENobyBiaeG6v3QgbeG7qWMgxJHhu5kgcGjDom4gdMOhbiB24buBIGdpw6EgdHLhu4sgdMOgaSBz4bqjbiBuaMOgIOG7nyBj4bunYSB04burbmcgbmfGsOG7nWkgdHJvbmcgNDI2OSBuZ8aw4budaSBzbyB24bubaSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGzDoCA2NTAzNjM3Lg0KDQpgYGB7cn0NCmhpc3QoZGF0YSRyZXNpZGVudGlhbF9hc3NldHNfdmFsdWUsIGNvbCA9ICJwaW5rIiwgbWFpbiA9ICJCaeG7g3UgxJHhu5MgZ2nDoSB0cuG7iyB0w6BpIHPhuqNuIG5ow6Ag4bufIGPhu6dhIGtow6FjaCBow6BuZyIsIHhsYWIgPSAiR2nDoSB0cuG7iyB0w6BpIHPhuqNuIG5ow6Ag4bufIGPhu6dhIGtow6FjaCBow6BuZyIsIHlsYWIgPSAiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKQ0KYGBgDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGNobyBjw6FjIGPhurdwIGJp4bq/bg0KDQojIyMgQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBlZHVjYXRpb24NCg0KYGBge3J9DQpIb2N2YW4gPC0gZGF0YSRlZHVjYXRpb24NClF1eWV0ZGluaCA8LSBkYXRhJGxvYW5fc3RhdHVzDQp0YWJsZShIb2N2YW4sUXV5ZXRkaW5oKQ0KcHJvcC50YWJsZSh0YWJsZShIb2N2YW4sUXV5ZXRkaW5oKSkNCmFkZG1hcmdpbnModGFibGUoSG9jdmFuLFF1eWV0ZGluaCkpDQpnZ3Bsb3QoZGF0YSwgYWVzKFF1eWV0ZGluaCwgZmlsbCA9IEhvY3ZhbikpICsgIGdlb21fYmFyKHBvc2l0aW9uID0gJ2RvZGdlJykreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt4bGFiKCJRdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaCIpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgxJHhu5MgdGjhu4ssIHRhIHRo4bqleTogDQoNCi0gVHJvbmcgc+G7kSAyNjU2IG5nxrDhu51pIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgY8OzIDEzMzkgbmfGsOG7nWkgxJHDoyB04buRdCBuZ2hp4buHcCAoY2hp4bq/bSAzMSwzNyUpIHbDoCAxMzE3IG5nxrDhu51pIGNoxrBhIHThu5F0IG5naGnhu4dwIChjaGnhur9tIDMwLDg1JSkuDQoNCi0gVHJvbmcgc+G7kSAxNjEzIG5nxrDhu51pIGLhu4sgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY8OzIDgwNSBuZ8aw4budaSDEkcOjIHThu5F0IG5naGnhu4dwIChjaGnhur9tIDE4LDg2JSkgdsOgIDgwOCBuZ8aw4budaSBjaMawYSB04buRdCBuZ2hp4buHcCAoY2hp4bq/bSAxOCw5MyUpLg0KDQpOaMawIHbhuq15IGdp4buvYSBuaOG7r25nIG5nxrDhu51pIMSRw6MgdOG7kXQgbmdoaeG7h3AgaGF5IGNoxrBhIHThu5F0IG5naGnhu4dwIHRow6wgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBjxaluZyBjaGnhur9tIHThu7cgbOG7hyBjYW8gbmjhuqV0Lg0KDQoqKlLhu6dpIHJvIHTGsMahbmcgxJHhu5FpKioNCg0KYGBge3J9DQplcGl0YWIodGFibGUoSG9jdmFuLFF1eWV0ZGluaCksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY2jGsGEgdOG7kXQgbmdoaeG7h3AgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgxJHDoyB04buRdCBuZ2hp4buHcCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGzDoCAwLDk5Lg0KDQpW4bqteSBy4bunaSBybyB0xrDGoW5nIMSR4buRaSBt4bqrdSBsw6AgMCw5OSBn4bqnbiB24bubaSAxIGNobyB0aOG6pXkga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbmhp4buBdSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSBjaMawYSB04buRdCBuZ2hp4buHcCB2w6AgxJHDoyB04buRdCBuZ2hp4buHcCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahLg0KDQoqKlThu4kgbOG7hyBjaMOqbmgqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShIb2N2YW4sUXV5ZXRkaW5oKSwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgY2jhuqVwIG5o4bqtbiBzbyB24bubaSB04burIGNo4buRaSBo4buTIHPGoSBj4bunYSBuaOG7r25nIG5nxrDhu51pIMSRw6MgdOG7kXQgbmdoaeG7h3AgYuG6sW5nIDk3LDk5JSB04bu3IGzhu4cgY2jhuqVwIG5o4bqtbiBzbyB24bubaSB04burIGNo4buRaSBo4buTIHPGoSBj4bunYSBuaOG7r25nIG5nxrDhu51pIGNoxrBhIHThu5F0IG5naGnhu4dwLg0KDQojIyMgQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBub19vZl9kZXBlbmRlbnRzDQoNClbhu5tpIGThu68gbGnhu4d1IGfhu5FjLCBiaeG6v24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIChub19vZl9kZXBlbmRlbnRzKSBsw6AgYmnhur9uIMSR4buLbmggbMaw4bujbmcgY8OzIDYgbG/huqFpIGdpw6EgdHLhu4sgbMOgIDAsIDEsIDIsIDMsIDQsIDUsIG7Dqm4gdMOhYyBnaeG6oyDEkcOjIMSR4bq3dCBxdXkgxrDhu5tjIHbhu4Egdmnhu4djIGNodXnhu4NuIGJp4bq/biBub19vZl9kZXBlbmRlbnRzIG5oxrAgc2F1OiDDjXQgKDAgLSAyKSB2w6AgTmhp4buBdSAoMyAtIDUpLg0KDQpgYGB7cn0NCmYgPC0gZGF0YS5mcmFtZShkYXRhKQ0KUGh1dGh1b2MgPC0gZiAlPiUgbXV0YXRlKHB0ID0gY2FzZV93aGVuKGRhdGEkbm9fb2ZfZGVwZW5kZW50cyA9PSAiMCIgfiAxLCBkYXRhJG5vX29mX2RlcGVuZGVudHMgPT0gIjEiIH4gMSwgZGF0YSRub19vZl9kZXBlbmRlbnRzID09ICIyIiB+IDEsIGRhdGEkbm9fb2ZfZGVwZW5kZW50cyA9PSAiMyIgfiAzLCBkYXRhJG5vX29mX2RlcGVuZGVudHMgPT0gIjQiIH4gMywgZGF0YSRub19vZl9kZXBlbmRlbnRzID09ICI1IiB+IDMpKQ0KUGh1dGh1b2MgPC0gY3V0KFBodXRodW9jJHB0LCBicmVha3MgPSBjKDAsMiw0KSwgbGFiZWxzPWMoIsONdCIsICJOaGnhu4F1IikpDQp0YWJsZShQaHV0aHVvYyxRdXlldGRpbmgpDQpwcm9wLnRhYmxlKHRhYmxlKFBodXRodW9jLFF1eWV0ZGluaCkpDQphZGRtYXJnaW5zKHRhYmxlKFBodXRodW9jLFF1eWV0ZGluaCkpDQpnZ3Bsb3QoZGF0YSwgYWVzKFF1eWV0ZGluaCwgZmlsbCA9IFBodXRodW9jKSkgKyAgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSt5bGFiKCJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpK3hsYWIoIlF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIikNCmBgYA0KDQpU4burIGLhuqNuZyB04bqnbiBz4buRIHbDoCDEkeG7kyB0aOG7iywgdGEgdGjhuqV5OiANCg0KLSBUcm9uZyBz4buRIDI2NTYgbmfGsOG7nWkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBjw7MgMTMyOCBuZ8aw4budaSBjw7Mgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIMOtdCAoY2hp4bq/bSAzMSwxMSUpIHbDoCAxMzI4IG5nxrDhu51pIGPDsyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMgbmhp4buBdSAoY2hp4bq/bSAzMSwxMSUpLg0KDQotIFRyb25nIHPhu5EgMTYxMyBuZ8aw4budaSBi4buLIHThu6sgY2jhu5FpIGjhu5Mgc8ahIGPDsyA3ODkgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyDDrXQgKGNoaeG6v20gMTgsNDglKSB2w6AgODI0IG5nxrDhu51pIGPDsyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMgbmhp4buBdSAoY2hp4bq/bSAxOSwzJSkuDQoNCk5oxrAgduG6rXkgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyDDrXQgaGF5IG5oaeG7gXUgdGjDrCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGPFqW5nIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQuDQoNCioqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShQaHV0aHVvYyxRdXlldGRpbmgpLG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIGdp4buvYSBuaOG7r25nIG5nxrDhu51pIGPDsyBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIMOtdCBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIMOtdCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGzDoCAwLDk4Lg0KDQpW4bqteSBy4bunaSBybyB0xrDGoW5nIMSR4buRaSBt4bqrdSBsw6AgMCw5OCBn4bqnbiB24bubaSAxIGNobyB0aOG6pXkga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbmhp4buBdSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSBjw7Mgw610IGhheSBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoS4NCg0KKipU4buJIGzhu4cgY2jDqm5oKioNCg0KYGBge3J9DQplcGl0YWIodGFibGUoUGh1dGh1b2MsUXV5ZXRkaW5oKSwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgY2jhuqVwIG5o4bqtbiBzbyB24bubaSB04burIGNo4buRaSBo4buTIHPGoSBj4bunYSBuaOG7r25nIG5nxrDhu51pIGPDsyDDrXQgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBi4bqxbmcgOTUsNzUlIHThu7cgbOG7hyBjaOG6pXAgbmjhuq1uIHNvIHbhu5tpIHThu6sgY2jhu5FpIGjhu5Mgc8ahIGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYy4NCg0KIyMjIEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgaW5jb21lX2FubnVtDQoNClbhu5tpIGThu68gbGnhu4d1IGfhu5FjLCBiaeG6v24gdGh1IG5o4bqtcCBow6BuZyBuxINtIGPhu6dhIGtow6FjaCBow6BuZyAoaW5jb21lX2FubnVtKSBsw6AgYmnhur9uIMSR4buLbmggbMaw4bujbmcgY8OzIGdpw6EgdHLhu4sgdHJvbmcga2hv4bqjbmcgMjAwMDAwIC0gOTkwMDAwMCwgbsOqbiB0w6FjIGdp4bqjIMSRw6MgxJHhurd0IHF1eSDGsOG7m2MgduG7gSB2aeG7h2MgY2h1eeG7g24gYmnhur9uIGluY29tZV9hbm51bSBuaMawIHNhdTogVGjhuqVwICgwIC0gNTAwMDAwMCkgdsOgIENhbyAoNTAwMDAwMCAtIDEwMDAwMDAwKS4NCg0KYGBgYHtyfQ0KVGh1bmhhcCA8LSBjdXQoZGF0YSRpbmNvbWVfYW5udW0sIGJyZWFrcyA9IGMoMCw1MDAwMDAwLDEwMDAwMDAwKSwgbGFiZWxzID0gYygiVGjhuqVwIiwgIkNhbyIpKQ0KdGFibGUoVGh1bmhhcCxRdXlldGRpbmgpDQpwcm9wLnRhYmxlKHRhYmxlKFRodW5oYXAsUXV5ZXRkaW5oKSkNCmFkZG1hcmdpbnModGFibGUoVGh1bmhhcCxRdXlldGRpbmgpKQ0KZ2dwbG90KGRhdGEsIGFlcyhRdXlldGRpbmgsIGZpbGwgPSBUaHVuaGFwKSkgKyAgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSt5bGFiKCJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpK3hsYWIoIlF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIikNCmBgYA0KDQpU4burIGLhuqNuZyB04bqnbiBz4buRIHbDoCDEkeG7kyB0aOG7iywgdGEgdGjhuqV5OiANCg0KLSBUcm9uZyBz4buRIDI2NTYgbmfGsOG7nWkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBjw7MgMTMzMSBuZ8aw4budaSBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKGNoaeG6v20gMzEsMTglKSB2w6AgMTMyNSBuZ8aw4budaSBjw7MgdGh1IG5o4bqtcCBjYW8gKGNoaeG6v20gMzEsMDQlKS4NCg0KLSBUcm9uZyBz4buRIDE2MTMgbmfGsOG7nWkgYuG7iyB04burIGNo4buRaSBo4buTIHPGoSBjw7MgNzkzIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIHRo4bqlcCAoY2hp4bq/bSAxOCw1OCUpIHbDoCA4MjAgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIChjaGnhur9tIDE5LDIxJSkuDQoNCk5oxrAgduG6rXkgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgdGjhuqVwIGhheSBjYW8gdGjDrCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGPFqW5nIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQuDQoNCioqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShUaHVuaGFwLFF1eWV0ZGluaCksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgc28gduG7m2kgdOG7tyBs4buHIGdp4buvYSBuaOG7r25nIGPDsyB0aHUgbmjhuq1wIHRo4bqlcCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGzDoCAwLDk5Lg0KDQpW4bqteSBy4bunaSBybyB0xrDGoW5nIMSR4buRaSBt4bqrdSBsw6AgMCw5OSBn4bqnbiBi4bqxbmcgMSBjaG8gdGjhuqV5IGtow7RuZyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIGdp4buvYSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIGNhbyBoYXkgdGjhuqVwIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEuDQoNCioqVOG7iSBs4buHIGNow6puaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKFRodW5oYXAsUXV5ZXRkaW5oKSwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgY2jhuqVwIG5o4bqtbiBzbyB24bubaSB04burIGNo4buRaSBo4buTIHPGoSBj4bunYSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIHRo4bqlcCBi4bqxbmcgOTYsMjclIHThu7cgbOG7hyBjaOG6pXAgbmjhuq1uIHNvIHbhu5tpIHThu6sgY2jhu5FpIGjhu5Mgc8ahIGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvLg0KDQojIyMgQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBsb2FuX3Rlcm0NCg0KVuG7m2kgZOG7ryBsaeG7h3UgZ+G7kWMsIGJp4bq/biBr4buzIGjhuqFuIHZheSAobG9hbl90ZXJtKSBsw6AgYmnhur9uIMSR4buLbmggbMaw4bujbmcgY8OzIGdpw6EgdHLhu4sgdHJvbmcga2hv4bqjbmcgMiAtIDIwLCBuw6puIHTDoWMgZ2nhuqMgxJHDoyDEkeG6t3QgcXV5IMaw4bubYyB24buBIHZp4buHYyBjaHV54buDbiBiaeG6v24gbG9hbl90ZXJtIG5oxrAgc2F1OiBOZ+G6r24gKDAgLSAxMCkgdsOgIETDoGkgKDEwIC0gMjApLg0KDQpgYGBge3J9DQpLeWhhbiA8LSBjdXQoZGF0YSRsb2FuX3Rlcm0sIGJyZWFrcyA9IGMoMCwxMCwyMSksIGxhYmVscyA9IGMoIk5n4bqvbiIsICJEw6BpIikpDQp0YWJsZShLeWhhbixRdXlldGRpbmgpDQpwcm9wLnRhYmxlKHRhYmxlKEt5aGFuLFF1eWV0ZGluaCkpDQphZGRtYXJnaW5zKHRhYmxlKEt5aGFuLFF1eWV0ZGluaCkpDQpnZ3Bsb3QoZGF0YSwgYWVzKFF1eWV0ZGluaCwgZmlsbCA9IEt5aGFuKSkgKyAgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSt5bGFiKCJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpK3hsYWIoIlF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIikNCmBgYA0KDQpU4burIGLhuqNuZyB04bqnbiBz4buRIHbDoCDEkeG7kyB0aOG7iywgdGEgdGjhuqV5OiANCg0KLSBUcm9uZyBz4buRIDI2NTYgbmfGsOG7nWkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBjw7MgMTQxMiBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBuZ+G6r24gKGNoaeG6v20gMzMsMDglKSB2w6AgMTI0NCBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBkw6BpIChjaGnhur9tIDI5LDE0JSkuDQoNCi0gVHJvbmcgc+G7kSAxNjEzIG5nxrDhu51pIGLhu4sgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY8OzIDc1MSBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBuZ+G6r24gKGNoaeG6v20gMTcsNTklKSB2w6AgODYyIG5nxrDhu51pIHZheSBr4buzIGjhuqFuIGTDoGkgKGNoaeG6v20gMjAsMTklKS4NCg0KTmjGsCB24bqteSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBuZ+G6r24gaGF5IGTDoGkgdGjDrCDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIGPFqW5nIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQuDQoNCioqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShLeWhhbixRdXlldGRpbmgpLG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIGdp4buvYSBuaOG7r25nIG5nxrDhu51pIHZheSBr4buzIGjhuqFuIGTDoGkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgdmF5IGvhu7MgaOG6oW4gbmfhuq9uIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgbMOgIDAsOS4NCg0KVuG6rXkgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgbeG6q3UgbMOgIDAsOSBjaG8gdGjhuqV5IHThu7cgbOG7hyDEkcaw4bujYyBjaOG6pXAgbmjhuq1uIGjhu5Mgc8ahIMSR4buRaSB24bubaSBuaOG7r25nIG5nxrDhu51pIHZheSBr4buzIGjhuqFuIGTDoGkgdGjhuqVwIGjGoW4gMTAlIHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uLg0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCB0aMOsIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgdmF5IGvhu7MgaOG6oW4gZMOgaSDDrXQgaMahbiA1JSDEkeG6v24gMTQlIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uLg0KDQoqKlThu4kgbOG7hyBjaMOqbmgqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShLeWhhbixRdXlldGRpbmgpLCBtZXRob2QgPSAnb2Rkc3JhdGlvJywgcmV2ID0gJ2MnKQ0KYGBgDQoNClThu7cgbOG7hyBjaOG6pXAgbmjhuq1uIHNvIHbhu5tpIHThu6sgY2jhu5FpIGjhu5Mgc8ahIGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uIGLhurFuZyA3Niw3NiUgdOG7tyBs4buHIGNo4bqlcCBuaOG6rW4gc28gduG7m2kgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY+G7p2Egbmjhu69uZyBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBkw6BpLg0KDQojIyMgQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBjaWJpbF9zY29yZQ0KDQpW4bubaSBk4buvIGxp4buHdSBn4buRYywgYmnhur9uIMSRaeG7g20gZMOibiBz4buxIGPhu6dhIGtow6FjaCBow6BuZyAoY2liaWxfc2NvcmUpIGzDoCBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBjw7MgZ2nDoSB0cuG7iyB0cm9uZyBraG/huqNuZyAzMDAgLSA5MDAsIG7Dqm4gdMOhYyBnaeG6oyDEkcOjIMSR4bq3dCBxdXkgxrDhu5tjIHbhu4Egdmnhu4djIGNodXnhu4NuIGJp4bq/biBjaWJpbF9zY29yZSBuaMawIHNhdTogS8OpbSAoMTAwIC0gNjAwKSB2w6AgVOG7kXQgKDYwMCAtIDEwMDApLg0KDQpgYGBge3J9DQpEaWVtIDwtIGN1dChkYXRhJGNpYmlsX3Njb3JlLCBicmVha3MgPSBjKDEwMCw2MDAsMTAwMCksIGxhYmVscyA9IGMoIkvDqW0iLCAiVOG7kXQiKSkNCnRhYmxlKERpZW0sUXV5ZXRkaW5oKQ0KcHJvcC50YWJsZSh0YWJsZShEaWVtLFF1eWV0ZGluaCkpDQphZGRtYXJnaW5zKHRhYmxlKERpZW0sUXV5ZXRkaW5oKSkNCmdncGxvdChkYXRhLCBhZXMoUXV5ZXRkaW5oLCBmaWxsID0gRGllbSkpICsgIGdlb21fYmFyKHBvc2l0aW9uID0gJ2RvZGdlJykreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt4bGFiKCJRdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaCIpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgxJHhu5MgdGjhu4ssIHRhIHRo4bqleTogDQoNCi0gVHJvbmcgc+G7kSAyNjU2IG5nxrDhu51pIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgY8OzIDU0MiBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7Ega8OpbSAoY2hp4bq/bSAxMiw3JSkgdsOgIDIxMTQgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIHThu5F0IChjaGnhur9tIDQ5LDUyJSkuDQoNCi0gVHJvbmcgc+G7kSAxNjEzIG5nxrDhu51pIGLhu4sgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY8OzIDE2MDIgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIGvDqW0gKGNoaeG6v20gMzcsNTMlKSB2w6AgMTEgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIHThu5F0IChjaGnhur9tIDAsMjYlKS4NCg0KTmjGsCB24bqteSB04bu3IGzhu4cgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBj4bunYSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCBjYW8gaMahbiBzbyB24bubaSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSBrw6ltIHbDoCBuZ8aw4bujYyBs4bqhaS4NCg0KKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKERpZW0sUXV5ZXRkaW5oKSxtZXRob2QgPSAncmlza3JhdGlvJywgcmV2ID0gJ2MnKQ0KYGBgDQoNClThu7cgbOG7hyBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7EgdOG7kXQgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIGvDqW0gxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiBo4buTIHPGoSBsw6AgMyw5NC4NCg0KVuG6rXkgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgbeG6q3UgbMOgIDMsOTQgY2hvIHRo4bqleSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiB0cm9uZyBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCBjYW8gaMahbiAzLDk0IGzhuqduIHNvIHbhu5tpIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSBrw6ltLg0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlIHRow6wgZ2nDoSB0cuG7iyBuw6B5IGNobyBiaeG6v3QgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbiB0cm9uZyBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCBjYW8gaMahbiB0cm9uZyBraG/huqNuZyAzLDY2IGzhuqduIMSR4bq/biA0LDIzIGzhuqduIHNvIHbhu5tpIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSBrw6ltLg0KDQoqKlThu4kgbOG7hyBjaMOqbmgqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShEaWVtLFF1eWV0ZGluaCksIG1ldGhvZCA9ICdvZGRzcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIGNo4bqlcCBuaOG6rW4gc28gduG7m2kgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7Ega8OpbSBn4bqlcCA1NjgsMDQgbOG6p24gdOG7tyBs4buHIGNo4bqlcCBuaOG6rW4gc28gduG7m2kgdOG7qyBjaOG7kWkgaOG7kyBzxqEgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7EgdOG7kXQuDQoNCiMjIyBCaeG6v24gbG9hbl9hbW91bnQgdsOgIGVkdWNhdGlvbg0KDQpW4bubaSBk4buvIGxp4buHdSBn4buRYywgYmnhur9uIFPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IChsb2FuX2Ftb3VudCkgbMOgIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGPDsyBnacOhIHRy4buLIHRyb25nIGtob+G6o25nIDMwMDAwMCAtIDM5NTAwMDAwLCBuw6puIHTDoWMgZ2nhuqMgxJHDoyDEkeG6t3QgcXV5IMaw4bubYyB24buBIHZp4buHYyBjaHV54buDbiBiaeG6v24gbG9hbl9hbW91bnQgbmjGsCBzYXU6IEkgKDAgLSAyMDAwMDAwMCkgdsOgIE4gKDIwMDAwMDAwIC0gNDAwMDAwMDApLg0KDQpgYGBge3J9DQpWYXkgPC0gY3V0KGRhdGEkbG9hbl9hbW91bnQsIGJyZWFrcyA9IGMoMCwyMDAwMDAwMCw0MDAwMDAwMCksIGxhYmVscyA9IGMoIkkiLCAiTiIpKQ0KdGFibGUoSG9jdmFuLFZheSkNCnByb3AudGFibGUodGFibGUoSG9jdmFuLFZheSkpDQphZGRtYXJnaW5zKHRhYmxlKEhvY3ZhbixWYXkpKQ0KZ2dwbG90KGRhdGEsIGFlcyhWYXksIGZpbGwgPSBIb2N2YW4pKSArICBnZW9tX2Jhcihwb3NpdGlvbiA9ICdkb2RnZScpK3lsYWIoIlPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIikreGxhYigiU+G7kSB0aeG7gW4ga2jDoWNoIGjDoG5nIG114buRbiB2YXkiKQ0KYGBgDQoNClThu6sgYuG6o25nIHThuqduIHPhu5EgdsOgIMSR4buTIHRo4buLLCB0YSB0aOG6pXk6IA0KDQotIFRyb25nIHPhu5EgMjk4OSBuZ8aw4budaSDEkcaw4bujYyBtdeG7kW4gdmF5IMOtdCBjw7MgMTUwNyBuZ8aw4budaSDEkcOjIHThu5F0IG5naGnhu4dwIChjaGnhur9tIDM1LDMlKSB2w6AgMTQ4MiBuZ8aw4budaSBjaMawYSB04buRdCBuZ2hp4buHcCAoY2hp4bq/bSAzNCw3MiUpLg0KDQotIFRyb25nIHPhu5EgMTI4MCBuZ8aw4budaSBi4buLIHThu6sgY2jhu5FpIGjhu5Mgc8ahIGPDsyA2MzcgbmfGsOG7nWkgxJHDoyB04buRdCBuZ2hp4buHcCAoY2hp4bq/bSAxNCw5MiUpIHbDoCA2NDMgbmfGsOG7nWkgY2jGsGEgdOG7kXQgbmdoaeG7h3AgKGNoaeG6v20gMTUsMDYlKS4NCg0KTmjGsCB24bqteSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSDEkcOjIHThu5F0IG5naGnhu4dwIGhheSBjaMawYSB04buRdCBuZ2hp4buHcCB0aMOsIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IMOtdCBjaGnhur9tIHThu7cgbOG7hyBjYW8gbmjhuqV0Lg0KDQoqKlLhu6dpIHJvIHTGsMahbmcgxJHhu5FpKioNCg0KYGBge3J9DQplcGl0YWIodGFibGUoSG9jdmFuLFZheSksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY2jGsGEgdOG7kXQgbmdoaeG7h3AgbXXhu5FuIHZheSDDrXQgc28gduG7m2kgdOG7tyBs4buHIGdp4buvYSBuaOG7r25nIG5nxrDhu51pIMSRw6MgdOG7kXQgbmdoaeG7h3AgbXXhu5FuIHZheSDDrXQgbMOgIDAsOTkuDQoNClbhuq15IHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIG3huqt1IGzDoCAwLDk5IGfhuqduIHbhu5tpIDEgY2hvIHRo4bqleSBraMO0bmcgY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBuaGnhu4F1IGdp4buvYSBuaOG7r25nIG5nxrDhu51pIGNoxrBhIHThu5F0IG5naGnhu4dwIHbDoCDEkcOjIHThu5F0IG5naGnhu4dwIG114buRbiB2YXkgw610Lg0KDQoqKlThu4kgbOG7hyBjaMOqbmgqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShIb2N2YW4sVmF5KSwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgdmF5IMOtdCBzbyB24bubaSB2YXkgbmhp4buBdSBj4bunYSBuaOG7r25nIG5nxrDhu51pIMSRw6MgdOG7kXQgbmdoaeG7h3AgYuG6sW5nIDk3LDQyJSB04bu3IGzhu4cgZ2nhu69hIHZheSDDrXQgc28gduG7m2kgdmF5IG5oaeG7gXUgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjaMawYSB04buRdCBuZ2hp4buHcC4NCg0KIyMjIEJp4bq/biBsb2FuX2Ftb3VudCB2w6Agbm9fb2ZfZGVwZW5kZW50cw0KDQpgYGB7cn0NCnRhYmxlKFBodXRodW9jLFZheSkNCnByb3AudGFibGUodGFibGUoUGh1dGh1b2MsVmF5KSkNCmFkZG1hcmdpbnModGFibGUoUGh1dGh1b2MsVmF5KSkNCmdncGxvdChkYXRhLCBhZXMoVmF5LCBmaWxsID0gUGh1dGh1b2MpKSArICBnZW9tX2Jhcihwb3NpdGlvbiA9ICdkb2RnZScpK3lsYWIoIlPhu5EgbMaw4bujbmcga2jDoWNoIGjDoG5nIikreGxhYigiU+G7kSB0aeG7gW4ga2jDoWNoIGjDoG5nIG114buRbiB2YXkiKQ0KYGBgDQoNClThu6sgYuG6o25nIHThuqduIHPhu5EgdsOgIMSR4buTIHRo4buLLCB0YSB0aOG6pXk6IA0KDQotIFRyb25nIHPhu5EgMjk4OSBuZ8aw4budaSBtdeG7kW4gdmF5IMOtdCBjw7MgMTQ4NyBuZ8aw4budaSBjw7Mgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIMOtdCAoY2hp4bq/bSAzNCw4MyUpIHbDoCAxNTAyIG5nxrDhu51pIGPDsyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHBo4bulIHRodeG7mWMgbmhp4buBdSAoY2hp4bq/bSAzNSwxOCUpLg0KDQotIFRyb25nIHPhu5EgMTI4MCBuZ8aw4budaSBtdeG7kW4gdmF5IG5oaeG7gXUgY8OzIDYzMCBuZ8aw4budaSBjw7Mgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIMOtdCAoY2hp4bq/bSAxNCw3NiUpIHbDoCA2NTAgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBuaGnhu4F1IChjaGnhur9tIDE1LDIzJSkuDQoNCk5oxrAgduG6rXkgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgcGjhu6UgdGh14buZYyDDrXQgaGF5IG5oaeG7gXUgdGjDrCBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSDDrXQgY8WpbmcgY2hp4bq/bSB04bu3IGzhu4cgY2FvIG5o4bqldC4NCg0KKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKFBodXRodW9jLFZheSksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBtdeG7kW4gdmF5IMOtdCBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgY8OzIMOtdCBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIG114buRbiB2YXkgw610IGzDoCAwLDk5Lg0KDQpW4bqteSBy4bunaSBybyB0xrDGoW5nIMSR4buRaSBt4bqrdSBsw6AgMCw5OSBn4bqnbiB24bubaSAxIGNobyB0aOG6pXkga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbmhp4buBdSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSBjw7Mgw610IGhheSBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgbXXhu5FuIHZheSDDrXQuDQoNCioqVOG7iSBs4buHIGNow6puaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKFBodXRodW9jLFZheSksIG1ldGhvZCA9ICdvZGRzcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIHZheSDDrXQgc28gduG7m2kgdmF5IG5oaeG7gXUgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjw7Mgw610IG5nxrDhu51pIHBo4bulIHRodeG7mWMgYuG6sW5nIDk3LDklIHThu7cgbOG7hyB2YXkgw610IHNvIHbhu5tpIHZheSBuaGnhu4F1IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYy4NCg0KIyMjIEJp4bq/biBsb2FuX2Ftb3VudCB2w6AgaW5jb21lX2FubnVtDQoNCmBgYGB7cn0NCnRhYmxlKFRodW5oYXAsVmF5KQ0KcHJvcC50YWJsZSh0YWJsZShUaHVuaGFwLFZheSkpDQphZGRtYXJnaW5zKHRhYmxlKFRodW5oYXAsVmF5KSkNCmdncGxvdChkYXRhLCBhZXMoVmF5LCBmaWxsID0gVGh1bmhhcCkpICsgIGdlb21fYmFyKHBvc2l0aW9uID0gJ2RvZGdlJykreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt4bGFiKCJT4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSIpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgxJHhu5MgdGjhu4ssIHRhIHRo4bqleTogDQoNCi0gVHJvbmcgc+G7kSAyOTg5IG5nxrDhu51pIG114buRbiB2YXkgw610IGPDsyAyMTI0IG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIHRo4bqlcCAoY2hp4bq/bSA0OSw3NSUpIHbDoCA4NjUgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIChjaGnhur9tIDIwLDI2JSkuDQoNCi0gVHJvbmcgc+G7kSAxMjgwIG5nxrDhu51pIG114buRbiB2YXkgbmhp4buBdSBjw7MgMCBuZ8aw4budaSBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgdsOgIDEyODAgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIChjaGnhur9tIDI5LDk4JSkuDQoNCk5oxrAgduG6rXkgxJHhu5FpIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgbXXhu5FuIHZheSDDrXQgdGjDrCB04bu3IGzhu4cgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgdGjhuqVwIGNhbyBoxqFuIGtob+G6o25nIDMwJSBzbyB24bubaSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIGNhby4gVHV5IG5oacOqbiBjaOG7iSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIGNhbyBt4bubaSBtdeG7kW4gdmF5IG5oaeG7gXUgdsOgIGhvw6BuIHRvw6BuIGtow7RuZyBjw7MgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgdGjhuqVwLg0KDQoqKlLhu6dpIHJvIHTGsMahbmcgxJHhu5FpKioNCg0KYGBge3J9DQplcGl0YWIodGFibGUoVGh1bmhhcCxWYXkpLG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIGdp4buvYSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIGNhbyBtdeG7kW4gdmF5IMOtdCBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgY8OzIHRodSBuaOG6rXAgdGjhuqVwIG114buRbiB2YXkgw610IGzDoCAwLDQuDQoNClbhuq15IHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIG3huqt1IGzDoCAwLDQgY2hvIHRo4bqleSB04bu3IGzhu4cgbXXhu5FuIHZheSDDrXQgxJHhu5FpIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIHRo4bqlcCBoxqFuIDYwJSBzbyB24bubaSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIHRo4bqlcC4NCg0KVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwgdGjDrCB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBtdeG7kW4gdmF5IMOtdCBjw7MgdGh1IG5o4bqtcCBjYW8gw610IGjGoW4gNTcsNTQlIMSR4bq/biA2MSw3JSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aHUgbmjhuq1wIHRo4bqlcC4NCg0KKipU4buJIGzhu4cgY2jDqm5oKioNCg0KYGBge3J9DQplcGl0YWIodGFibGUoVGh1bmhhcCxWYXkpLCBtZXRob2QgPSAnb2Rkc3JhdGlvJywgcmV2ID0gJ2MnKQ0KYGBgDQoNClThu7cgbOG7hyB2YXkgw610IHNvIHbhu5tpIHZheSBuaGnhu4F1IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgdGjhuqVwIHNvIHbhu5tpIHThu7cgbOG7hyB2YXkgw610IHNvIHbhu5tpIHZheSBuaGnhu4F1IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgY2FvIGzDoCAwLiBWw6wga2jDtG5nIGPDsyBraMOhY2ggaMOgbmcgbsOgbyBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgbXXhu5FuIHZheSBuaGnhu4F1Lg0KDQojIyMgQmnhur9uIGxvYW5fYW1vdW50IHbDoCBsb2FuX3Rlcm0NCg0KYGBgYHtyfQ0KdGFibGUoS3loYW4sVmF5KQ0KcHJvcC50YWJsZSh0YWJsZShLeWhhbixWYXkpKQ0KYWRkbWFyZ2lucyh0YWJsZShLeWhhbixWYXkpKQ0KZ2dwbG90KGRhdGEsIGFlcyhWYXksIGZpbGwgPSBLeWhhbikpICsgIGdlb21fYmFyKHBvc2l0aW9uID0gJ2RvZGdlJykreWxhYigiU+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmciKSt4bGFiKCJT4buRIHRp4buBbiBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSIpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgxJHhu5MgdGjhu4ssIHRhIHRo4bqleTogDQoNCi0gVHJvbmcgc+G7kSAyOTg5IG5nxrDhu51pIG114buRbiB2YXkgw610IGPDsyAxNTI1IG5nxrDhu51pIHZheSBr4buzIGjhuqFuIG5n4bqvbiAoY2hp4bq/bSAzNSw3MiUpIHbDoCAxNDY0IG5nxrDhu51pIHZheSBr4buzIGjhuqFuIGTDoGkgKGNoaeG6v20gMzQsMjklKS4NCg0KLSBUcm9uZyBz4buRIDEyODAgbmfGsOG7nWkgbXXhu5FuIHZheSBuaGnhu4F1IGPDsyA2MzggbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uIChjaGnhur9tIDE0LDk0JSkgdsOgIDY0MiBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBkw6BpIChjaGnhur9tIDE1LDA0JSkuDQoNCk5oxrAgduG6rXkgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uIGhheSBkw6BpIHRow6wgc+G7kSBraMOhY2ggaMOgbmcgbXXhu5FuIHZheSDDrXQgY8WpbmcgY2hp4bq/bSB04bu3IGzhu4cgY2FvIG5o4bqldC4NCg0KKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKEt5aGFuLFZheSksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gZMOgaSBtdeG7kW4gdmF5IMOtdCBzbyB24bubaSB04bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gbmfhuq9uIG114buRbiB2YXkgw610IGzDoCAwLDk5Lg0KDQpW4bqteSBy4bunaSBybyB0xrDGoW5nIMSR4buRaSBt4bqrdSBsw6AgMCw5OSBn4bqnbiB24bubaSAxIGNobyB0aOG6pXkga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHY2ggbmhp4buBdSBnaeG7r2Egbmjhu69uZyBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBuZ+G6r24gaGF5IGTDoGkgbXXhu5FuIHZheSDDrXQuDQoNCioqVOG7iSBs4buHIGNow6puaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHRhYmxlKEt5aGFuLFZheSksIG1ldGhvZCA9ICdvZGRzcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIHZheSDDrXQgc28gduG7m2kgdmF5IG5oaeG7gXUgY+G7p2Egbmjhu69uZyBuZ8aw4budaSB2YXkga+G7syBo4bqhbiBuZ+G6r24gYuG6sW5nIDk1LDQlIHThu7cgbOG7hyB2YXkgw610IHNvIHbhu5tpIHZheSBuaGnhu4F1IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgdmF5IGvhu7MgaOG6oW4gZMOgaS4NCg0KIyMjIEJp4bq/biBsb2FuX2Ftb3VudCB2w6AgY2liaWxfc2NvcmUNCg0KYGBgYHtyfQ0KdGFibGUoRGllbSxWYXkpDQpwcm9wLnRhYmxlKHRhYmxlKERpZW0sVmF5KSkNCmFkZG1hcmdpbnModGFibGUoRGllbSxWYXkpKQ0KZ2dwbG90KGRhdGEsIGFlcyhWYXksIGZpbGwgPSBEaWVtKSkgKyAgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSt5bGFiKCJT4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyIpK3hsYWIoIlPhu5EgdGnhu4FuIGtow6FjaCBow6BuZyBtdeG7kW4gdmF5IikNCmBgYA0KDQpU4burIGLhuqNuZyB04bqnbiBz4buRIHbDoCDEkeG7kyB0aOG7iywgdGEgdGjhuqV5OiANCg0KLSBUcm9uZyBz4buRIDI5ODkgbmfGsOG7nWkgbXXhu5FuIHZheSDDrXQgY8OzIDE1MDQgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIGvDqW0gKGNoaeG6v20gMzUsMjMlKSB2w6AgMTQ4NSBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7EgdOG7kXQgKGNoaeG6v20gMzQsNzklKS4NCg0KLSBUcm9uZyBz4buRIDEyODAgbmfGsOG7nWkgbXXhu5FuIHZheSBuaGnhu4F1IGPDsyA2NDAgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIGvDqW0gKGNoaeG6v20gMTQsOTklKSB2w6AgNjQwIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCAoY2hp4bq/bSAxNCw5OSUpLg0KDQpOaMawIHbhuq15IGdp4buvYSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCBoYXkga8OpbSB0aMOsIHPhu5Ega2jDoWNoIGjDoG5nIG114buRbiB2YXkgw610IGPFqW5nIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQuDQoNCioqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShEaWVtLFZheSksbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykNCmBgYA0KDQpU4bu3IGzhu4cgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIHThu5F0IG114buRbiB2YXkgw610IHNvIHbhu5tpIHThu7cgbOG7hyBnaeG7r2Egbmjhu69uZyBjw7MgxJFp4buDbSBkw6JuIHPhu7Ega8OpbSBtdeG7kW4gdmF5IMOtdCBsw6AgMCw5OS4NCg0KVuG6rXkgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgbeG6q3UgbMOgIDAsOTkgZ+G6p24gduG7m2kgMSBjaG8gdGjhuqV5IGtow7RuZyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIG5oaeG7gXUgZ2nhu69hIG5o4buvbmcgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIGvDqW0gdsOgIHThu5F0IG114buRbiB2YXkgw610Lg0KDQoqKlThu4kgbOG7hyBjaMOqbmgqKg0KDQpgYGB7cn0NCmVwaXRhYih0YWJsZShEaWVtLFZheSksIG1ldGhvZCA9ICdvZGRzcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KVOG7tyBs4buHIHZheSDDrXQgc28gduG7m2kgdmF5IG5oaeG7gXUgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjw7MgxJFp4buDbSBkw6JuIHPhu7Ega8OpbSBi4bqxbmcgOTgsNzQlIHThu7cgbOG7hyB2YXkgw610IHNvIHbhu5tpIHZheSBuaGnhu4F1IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgY8OzIMSRaeG7g20gZMOibiBz4buxIHThu5F0Lg0KDQojIyBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIGNobyBjw6FjIGJp4bq/biDEkeG7i25oIHTDrW5oDQoNCiMjIyBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIGhhaSBiaeG6v24gxJHhu4tuaCB0w61uaA0KDQojIyMjIEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgSG9jdmFuDQoNCkdp4bqjIHRodXnhur90L8SQ4buRaSB0aHV54bq/dDoNCg0KLSAkSF8wJDogQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBiaeG6v24gSG9jdmFuIMSR4buZYyBs4bqtcA0KDQotICRIXzEkOiBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIGJp4bq/biBIb2N2YW4ga2jDtG5nIMSR4buZYyBs4bqtcA0KDQpYw6l0IHRo4buRbmcga8OqOg0KDQpgYGB7cn0NCmNoaXNxLnRlc3QodGFibGUoZGF0YSRsb2FuX3N0YXR1cyxIb2N2YW4pKQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMCw3NzIgPiAwLDA1IG7Dqm4gY2jGsGEgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLg0KDQpW4bqteSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUsIGJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIEhvY3ZhbiDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KIyMjIyBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIFBodXRodW9jDQoNCkdp4bqjIHRodXnhur90L8SQ4buRaSB0aHV54bq/dDoNCg0KLSAkSF8wJDogQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBiaeG6v24gUGh1dGh1b2MgxJHhu5ljIGzhuq1wDQoNCi0gJEhfMSQ6IEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIFBodXRodW9jIGtow7RuZyDEkeG7mWMgbOG6rXANCg0KWMOpdCB0aOG7kW5nIGvDqjoNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHRhYmxlKGRhdGEkbG9hbl9zdGF0dXMsUGh1dGh1b2MpKQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMCw1MTE5ID4gMCwwNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4NCg0KVuG6rXkgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBiaeG6v24gbG9hbl9zdGF0dXMgdsOgIGJp4bq/biBQaHV0aHVvYyDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KIyMjIyBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIFRodW5oYXANCg0KR2nhuqMgdGh1eeG6v3QvxJDhu5FpIHRodXnhur90Og0KDQotICRIXzAkOiBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIGJp4bq/biBUaHVuaGFwIMSR4buZYyBs4bqtcA0KDQotICRIXzEkOiBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIGJp4bq/biBUaHVuaGFwIGtow7RuZyDEkeG7mWMgbOG6rXANCg0KWMOpdCB0aOG7kW5nIGvDqjoNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHRhYmxlKGRhdGEkbG9hbl9zdGF0dXMsVGh1bmhhcCkpDQpgYGANCg0KVGEgY8OzIHAtdmFsdWUgPSAwLDU2ODUgPiAwLDA1IG7Dqm4gY2jGsGEgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLg0KDQpW4bqteSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUsIGJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIFRodW5oYXAgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgQmnhur9uIGxvYW5fc3RhdHVzIHbDoCBLeWhhbg0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIEt5aGFuIMSR4buZYyBs4bqtcA0KDQotICRIXzEkOiBCaeG6v24gbG9hbl9zdGF0dXMgdsOgIGJp4bq/biBLeWhhbiBraMO0bmcgxJHhu5ljIGzhuq1wDQoNCljDqXQgdGjhu5FuZyBrw6o6DQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShkYXRhJGxvYW5fc3RhdHVzLEt5aGFuKSkNCmBgYA0KDQpUYSBjw7MgcC12YWx1ZSA9IDMsMjg3ZS0wNSA8IDAsMDUgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuDQoNClbhuq15IHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JSwgYmnhur9uIGxvYW5fc3RhdHVzIHbDoCBiaeG6v24gS3loYW4ga2jDtG5nIMSR4buZYyBs4bqtcCB24bubaSBuaGF1Lg0KDQojIyMjIEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgRGllbQ0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIERpZW0gxJHhu5ljIGzhuq1wDQoNCi0gJEhfMSQ6IEJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIERpZW0ga2jDtG5nIMSR4buZYyBs4bqtcA0KDQpYw6l0IHRo4buRbmcga8OqOg0KDQpgYGB7cn0NCmNoaXNxLnRlc3QodGFibGUoZGF0YSRsb2FuX3N0YXR1cyxEaWVtKSkNCmBgYA0KDQpUYSBjw7MgcC12YWx1ZSA9IDIsMmUtMTYgPCAwLDA1IG7Dqm4gYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLg0KDQpW4bqteSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUsIGJp4bq/biBsb2FuX3N0YXR1cyB2w6AgYmnhur9uIERpZW0ga2jDtG5nIMSR4buZYyBs4bqtcCB24bubaSBuaGF1Lg0KDQojIyMjIEJp4bq/biBWYXkgdsOgIEhvY3Zhbg0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBIb2N2YW4gxJHhu5ljIGzhuq1wDQoNCi0gJEhfMSQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBIb2N2YW4ga2jDtG5nIMSR4buZYyBs4bqtcA0KDQpYw6l0IHRo4buRbmcga8OqOg0KDQpgYGB7cn0NCmNoaXNxLnRlc3QodGFibGUoVmF5LEhvY3ZhbikpDQpgYGANCg0KVGEgY8OzIHAtdmFsdWUgPSAwLDcyMDkgPiAwLDA1IG7Dqm4gY2jGsGEgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLg0KDQpW4bqteSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUsIGJp4bq/biBWYXkgdsOgIGJp4bq/biBIb2N2YW4gxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgQmnhur9uIFZheSB2w6AgUGh1dGh1b2MNCg0KR2nhuqMgdGh1eeG6v3QvxJDhu5FpIHRodXnhur90Og0KDQotICRIXzAkOiBCaeG6v24gVmF5IHbDoCBiaeG6v24gUGh1dGh1b2MgxJHhu5ljIGzhuq1wDQoNCi0gJEhfMSQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBQaHV0aHVvYyBraMO0bmcgxJHhu5ljIGzhuq1wDQoNCljDqXQgdGjhu5FuZyBrw6o6DQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShWYXksUGh1dGh1b2MpKQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMCw3NzYzID4gMCwwNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4NCg0KVuG6rXkgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBiaeG6v24gVmF5IHbDoCBiaeG6v24gUGh1dGh1b2MgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgQmnhur9uIFZheSB2w6AgVGh1bmhhcA0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBUaHVuaGFwIMSR4buZYyBs4bqtcA0KDQotICRIXzEkOiBCaeG6v24gVmF5IHbDoCBiaeG6v24gVGh1bmhhcCBraMO0bmcgxJHhu5ljIGzhuq1wDQoNCljDqXQgdGjhu5FuZyBrw6o6DQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShWYXksVGh1bmhhcCkpDQpgYGANCg0KVGEgY8OzIHAtdmFsdWUgPSAyLDJlLTE2IDwgMCwwNSBuw6puIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4NCg0KVuG6rXkgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBiaeG6v24gVmF5IHbDoCBiaeG6v24gVGh1bmhhcCBraMO0bmcgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgQmnhur9uIFZheSB2w6AgS3loYW4NCg0KR2nhuqMgdGh1eeG6v3QvxJDhu5FpIHRodXnhur90Og0KDQotICRIXzAkOiBCaeG6v24gVmF5IHbDoCBiaeG6v24gS3loYW4gxJHhu5ljIGzhuq1wDQoNCi0gJEhfMSQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBLeWhhbiBraMO0bmcgxJHhu5ljIGzhuq1wDQoNCljDqXQgdGjhu5FuZyBrw6o6DQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShWYXksS3loYW4pKQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMCw1MDIxID4gMCwwNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4NCg0KVuG6rXkgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBiaeG6v24gVmF5IHbDoCBiaeG6v24gS3loYW4gxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgQmnhur9uIFZheSB2w6AgRGllbQ0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IEJp4bq/biBWYXkgdsOgIGJp4bq/biBEaWVtIMSR4buZYyBs4bqtcA0KDQotICRIXzEkOiBCaeG6v24gVmF5IHbDoCBiaeG6v24gRGllbSBraMO0bmcgxJHhu5ljIGzhuq1wDQoNCljDqXQgdGjhu5FuZyBrw6o6DQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShWYXksRGllbSkpDQpgYGANCg0KVGEgY8OzIHAtdmFsdWUgPSAwLDg3NTMgPiAwLDA1IG7Dqm4gY2jGsGEgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLg0KDQpW4bqteSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUsIGJp4bq/biBWYXkgdsOgIGJp4bq/biBEaWVtIMSR4buZYyBs4bqtcCB24bubaSBuaGF1Lg0KDQojIyMgS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hw0KDQojIyMjIMav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqENCg0KYGBge3J9DQphIDwtIGRhdGFbZGF0YSRsb2FuX3N0YXR1cyA9PSAiQXBwcm92ZWQiLF0NCnByb3AudGVzdChsZW5ndGgoYSRsb2FuX3N0YXR1cyA9PSAiQXBwcm92ZWQiKSwgbGVuZ3RoKGRhdGEkbG9hbl9zdGF0dXMpKQ0KYGBgDQoNClbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUsIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gaOG7kyBzxqEgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyA2MCw3NCUgxJHhur9uIDYzLDY3JS4NCg0KIyMjIyDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkcOjIHThu5F0IG5naGnhu4dwDQoNCmBgYHtyfQ0KYiA8LSBkYXRhW2RhdGEkZWR1Y2F0aW9uID09ICJHcmFkdWF0ZSIsXQ0KcHJvcC50ZXN0KGxlbmd0aChiJGVkdWNhdGlvbiA9PSAiR3JhZHVhdGUiKSwgbGVuZ3RoKGRhdGEkZWR1Y2F0aW9uKSkNCmBgYA0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkcOjIHThu5F0IG5naGnhu4dwIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgNDgsNzElIMSR4bq/biA1MSw3MyUuDQoNCiMjIyMgxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8OzIHRodSBuaOG6rXAgY2FvDQoNCmBgYHtyfQ0KYyA8LSBkYXRhW2RhdGEkaW5jb21lX2FubnVtID09IDUwMDAwMDAgfCBkYXRhJGluY29tZV9hbm51bSA+IDUwMDAwMDAsXQ0KcHJvcC50ZXN0KGxlbmd0aChjJGluY29tZV9hbm51bSA9PSA1MDAwMDAwIHwgYyRpbmNvbWVfYW5udW0gPiA1MDAwMDAwKSwgbGVuZ3RoKGRhdGEkaW5jb21lX2FubnVtKSkNCmBgYA0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyBjw7MgdGh1IG5o4bqtcCBjYW8gbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyA0OSw2OSUgxJHhur9uIDUyLDcyJS4NCg0KIyMjIyDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyB2YXkga+G7syBo4bqhbiBuZ+G6r24NCg0KYGBge3J9DQpjIDwtIGRhdGFbZGF0YSRsb2FuX3Rlcm0gPT0gMTAgfCBkYXRhJGxvYW5fdGVybSA8IDEwLF0NCnByb3AudGVzdChsZW5ndGgoYyRsb2FuX3Rlcm0gPT0gMTAgfCBjJGxvYW5fdGVybSA8IDEwKSwgbGVuZ3RoKGRhdGEkbG9hbl90ZXJtKSkNCmBgYA0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyB2YXkga+G7syBo4bqhbiBuZ+G6r24gbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyA0OSwxNiUgxJHhur9uIDUyLDE4JS4NCg0KIyMjIyDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyBjw7MgxJFp4buDbSBkw6JuIHPhu7EgdOG7kXQNCg0KYGBge3J9DQplIDwtIGRhdGFbZGF0YSRjaWJpbF9zY29yZSA9PSA2MDAgfCBkYXRhJGNpYmlsX3Njb3JlID4gNjAwLF0NCnByb3AudGVzdChsZW5ndGgoZSRjaWJpbF9zY29yZSA9PSA2MDAgfCBlJGNpYmlsX3Njb3JlID4gNjAwKSwgbGVuZ3RoKGRhdGEkY2liaWxfc2NvcmUpKQ0KYGBgDQoNClbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUsIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGPDsyDEkWnhu4NtIGTDom4gc+G7sSB04buRdCBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDQ4LDUyJSDEkeG6v24gNTEsNTUlLg0KDQojIyMjIMav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIG114buRbiB2YXkgw610DQoNCmBgYHtyfQ0KaSA8LSBkYXRhW2RhdGEkbG9hbl9hbW91bnQgPT0gMjAwMDAwMDAgfCBkYXRhJGxvYW5fYW1vdW50IDwgMjAwMDAwMDAsXQ0KcHJvcC50ZXN0KGxlbmd0aChpJGxvYW5fYW1vdW50ID09IDIwMDAwMDAwIHwgaSRsb2FuX2Ftb3VudCA8IDIwMDAwMDAwKSwgbGVuZ3RoKGRhdGEkbG9hbl9hbW91bnQpKQ0KYGBgDQoNClbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUsIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIG114buRbiB2YXkgw610IG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgNjgsNjElIMSR4bq/biA3MSwzOCUuDQoNCiMjIMav4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggaOG7k2kgcXV5DQoNCiMjIyBNYSB0cuG6rW4gaOG7hyBz4buRIHTGsMahbmcgcXVhbg0KDQpgYGBge3J9DQpjb250aW51b3VzX3ZhcnMgPC0gZGF0YVssIHNhcHBseShkYXRhLCBpcy5udW1lcmljKV0NCmNvcl9tYXRyaXggPC0gY29yKGNvbnRpbnVvdXNfdmFycykNCmNvcl9tYXRyaXgNCmBgYA0KDQpRdWEgbWEgdHLhuq1uIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgYmnhur9uIHRhIHRo4bqleSBjw7MgbeG7kWkgdMawxqFuZyBxdWFuIG3huqFuaCBnaeG7r2EgY8OhYyBj4bq3cCBiaeG6v24gaW5jb21lX2FubnVtIHbDoCBsb2FuX2Ftb3VudCwgaW5jb21lX2FubnVtIHbDoCBsdXh1cnlfYXNzZXRzX3ZhbHVlLCBpbmNvbWVfYW5udW0gdsOgIGJhbmtfYXNzZXRfdmFsdWUsIGxvYW5fYW1vdW50IHbDoCBpbmNvbWVfYW5udW0sIGxvYW5fYW1vdW50IHbDoCBsdXh1cnlfYXNzZXRzX3ZhbHVlLg0KDQojIyMgTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdA0KDQojIyMjIE3DtCBow6xuaCAxDQoNCmBgYHtyfQ0KTUgxIDwtIGdsbShmYWN0b3IoZGF0YSRsb2FuX3N0YXR1cyl+ZGF0YSRub19vZl9kZXBlbmRlbnRzK2RhdGEkZWR1Y2F0aW9uK2RhdGEkc2VsZl9lbXBsb3llZCtkYXRhJGluY29tZV9hbm51bStkYXRhJGxvYW5fYW1vdW50K2RhdGEkbG9hbl90ZXJtK2RhdGEkY2liaWxfc2NvcmUrZGF0YSRyZXNpZGVudGlhbF9hc3NldHNfdmFsdWUrZGF0YSRjb21tZXJjaWFsX2Fzc2V0c192YWx1ZStkYXRhJGx1eHVyeV9hc3NldHNfdmFsdWUrZGF0YSRiYW5rX2Fzc2V0X3ZhbHVlLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IiksIGRhdGEgPSBkYXRhKQ0Kc3VtbWFyeShNSDEpDQpgYGANCg0KKipLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oKioNCg0KR2nhuqMgdGh1eeG6v3QvxJDhu5FpIHRodXnhur90Og0KDQotICRIXzAkOiBNw7QgaMOsbmgga2jDtG5nIHBow7kgaOG7o3ANCg0KLSAkSF8xJDogTcO0IGjDrG5oIHBow7kgaOG7o3ANCg0KYGBge3J9DQpscl90ZXN0IDwtIGFub3ZhKE1IMSwgdGVzdCA9ICJDaGlzcSIpDQpwX3ZhbHVlIDwtIGxyX3Rlc3QkUHJbMl0NCnBfdmFsdWUNCmBgYA0KDQpUYSBjw7MgcC12YWx1ZSA9IDAsMjM2NTUzID4gMCwwNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gVsOsIHbhuq15IG3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdS4NCg0KIyMjIyBNw7QgaMOsbmggMg0KDQpDaOG6oXkgbcO0IGjDrG5oIHbhu5tpIDIgYmnhur9uIGxvYW5fdGVybSB2w6AgY2liaWxfc2NvcmUgdsOsIMSRw6MgxJHGsOG7o2Mga2nhu4NtIMSR4buLbmggbMOgIGPDsyBsacOqbiBxdWFuIMSR4bq/biBiaeG6v24gbG9hbl9zdGF0dXMuDQoNCmBgYHtyfQ0KTUgyIDwtIGdsbShmYWN0b3IoZGF0YSRsb2FuX3N0YXR1cyl+ZGF0YSRsb2FuX3Rlcm0rZGF0YSRjaWJpbF9zY29yZSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpLCBkYXRhID0gZGF0YSkNCnN1bW1hcnkoTUgyKQ0KYGBgDQoNCioqS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCoqDQoNCkdp4bqjIHRodXnhur90L8SQ4buRaSB0aHV54bq/dDoNCg0KLSAkSF8wJDogTcO0IGjDrG5oIGtow7RuZyBwaMO5IGjhu6NwDQoNCi0gJEhfMSQ6IE3DtCBow6xuaCBwaMO5IGjhu6NwDQoNCmBgYHtyfQ0KbHJfdGVzdCA8LSBhbm92YShNSDIsIHRlc3QgPSAiQ2hpc3EiKQ0KcF92YWx1ZSA8LSBscl90ZXN0JFByWzJdDQpwX3ZhbHVlDQpgYGANCg0KVGEgY8OzIHAtdmFsdWUgPSAxLDM4MDA5NWUtMTMgPCAwLDA1IG7Dqm4gYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiBWw6wgduG6rXkgbcO0IGjDrG5oIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UuDQoNCioqQnJpZXJTY29yZSoqDQoNCmBgYHtyfQ0KQnJpZXJTY29yZShNSDIpDQpgYGANCg0KKipNYSB0cuG6rW4gbmjhuqdtIGzhuqtuKioNCg0KYGBge3J9DQpoIDwtIHByZWRpY3QoTUgyLCB0eXBlID0gInJlc3BvbnNlIikNCmogPC0gaWZlbHNlKGggPiAwLjUsICIxIiwgIjAiKQ0KayA8LSBmYWN0b3IoaiwgbGV2ZWxzID0gYygiMCIsIjEiKSkNCmwgPC0gZmFjdG9yKGRhdGEkbG9hbl9zdGF0dXMsIGxhYmVscyA9IGMoIjAiLCIxIikpDQpjb25mdXNpb25NYXRyaXgodGFibGUoayxsKSkNCmBgYA0KDQpNSDIgY8OzIMSR4buZIGNow61uaCB4w6FjIHRvw6BuIHRo4buDIGzDoCA5MSw1OSUsIMSR4buZIG5o4bqheSBsw6AgOTMsMzclIHbDoCDEkeG7mSBoaeG7h3UgcXXhuqMgbMOgIDg4LDY1JS4NCg0KIyMjIE3DtCBow6xuaCBo4buTaSBxdXkgcHJvYml0DQoNCmBgYHtyfQ0KTUgzIDwtIGdsbShmYWN0b3IoZGF0YSRsb2FuX3N0YXR1cyl+ZGF0YSRsb2FuX3Rlcm0rZGF0YSRjaWJpbF9zY29yZSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSwgZGF0YSA9IGRhdGEpDQpzdW1tYXJ5KE1IMykNCmBgYA0KDQoqKktp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmgqKg0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IE3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcA0KDQotICRIXzEkOiBNw7QgaMOsbmggcGjDuSBo4bujcA0KDQpgYGB7cn0NCmxyX3Rlc3QgPC0gYW5vdmEoTUgzLCB0ZXN0ID0gIkNoaXNxIikNCnBfdmFsdWUgPC0gbHJfdGVzdCRQclsyXQ0KcF92YWx1ZQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMSwwMTgwOTRlLTEzIDwgMCwwNSBuw6puIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gVsOsIHbhuq15IG3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1Lg0KDQoqKkJyaWVyU2NvcmUqKg0KDQpgYGB7cn0NCkJyaWVyU2NvcmUoTUgzKQ0KYGBgDQoNCioqTWEgdHLhuq1uIG5o4bqnbSBs4bqrbioqDQoNCmBgYHtyfQ0KaCA8LSBwcmVkaWN0KE1IMywgdHlwZSA9ICJyZXNwb25zZSIpDQpqIDwtIGlmZWxzZShoID4gMC41LCAiMSIsICIwIikNCmsgPC0gZmFjdG9yKGosIGxldmVscyA9IGMoIjAiLCIxIikpDQpsIDwtIGZhY3RvcihkYXRhJGxvYW5fc3RhdHVzLCBsYWJlbHMgPSBjKCIwIiwiMSIpKQ0KY29uZnVzaW9uTWF0cml4KHRhYmxlKGssbCkpDQpgYGANCg0KTUgzIGPDsyDEkeG7mSBjaMOtbmggeMOhYyB0b8OgbiB0aOG7gyBsw6AgOTEsMjQlLCDEkeG7mSBuaOG6oXkgbMOgIDkzLDM0JSB2w6AgxJHhu5kgaGnhu4d1IHF14bqjIGzDoCA4Nyw3OSUuDQoNCiMjIyBNw7QgaMOsbmggaOG7k2kgcXV5IGNsb2dsb2cNCg0KYGBge3J9DQpNSDQgPC0gZ2xtKGZhY3RvcihkYXRhJGxvYW5fc3RhdHVzKX5kYXRhJGxvYW5fdGVybStkYXRhJGNpYmlsX3Njb3JlLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSwgZGF0YSA9IGRhdGEpDQpzdW1tYXJ5KE1INCkNCmBgYA0KDQoqKktp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmgqKg0KDQpHaeG6oyB0aHV54bq/dC/EkOG7kWkgdGh1eeG6v3Q6DQoNCi0gJEhfMCQ6IE3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcA0KDQotICRIXzEkOiBNw7QgaMOsbmggcGjDuSBo4bujcA0KDQpgYGB7cn0NCmxyX3Rlc3QgPC0gYW5vdmEoTUg0LCB0ZXN0ID0gIkNoaXNxIikNCnBfdmFsdWUgPC0gbHJfdGVzdCRQclsyXQ0KcF92YWx1ZQ0KYGBgDQoNClRhIGPDsyBwLXZhbHVlID0gMywzOTc1NzVlLTEzIDwgMCwwNSBuw6puIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gVsOsIHbhuq15IG3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1Lg0KDQoqKkJyaWVyU2NvcmUqKg0KDQpgYGB7cn0NCkJyaWVyU2NvcmUoTUg0KQ0KYGBgDQoNCioqTWEgdHLhuq1uIG5o4bqnbSBs4bqrbioqDQoNCmBgYHtyfQ0KaCA8LSBwcmVkaWN0KE1INCwgdHlwZSA9ICJyZXNwb25zZSIpDQpqIDwtIGlmZWxzZShoID4gMC41LCAiMSIsICIwIikNCmsgPC0gZmFjdG9yKGosIGxldmVscyA9IGMoIjAiLCIxIikpDQpsIDwtIGZhY3RvcihkYXRhJGxvYW5fc3RhdHVzLCBsYWJlbHMgPSBjKCIwIiwiMSIpKQ0KY29uZnVzaW9uTWF0cml4KHRhYmxlKGssbCkpDQpgYGANCg0KTUg0IGPDsyDEkeG7mSBjaMOtbmggeMOhYyB0b8OgbiB0aOG7gyBsw6AgODksNjIlLCDEkeG7mSBuaOG6oXkgbMOgIDk0LDMxJSB2w6AgxJHhu5kgaGnhu4d1IHF14bqjIGzDoCA4MSw5JS4NCg0KIyMjIEzhu7FhIGNo4buNbiBtw7QgaMOsbmggcGjDuSBo4bujcA0KDQpgYGB7cn0NCk3DtGjDrG5oIDwtIGMoIkxvZ2l0IiwiUHJvYml0IiwiQ2xvZ2xvZyIsIkzhu7FhIGNo4buNbiIpDQpBSUMgPC0gYygxOTU5LjQsMjAyMS4yLDIxMzUsIkxvZ2l0IikNCkRldmlhbmNlIDwtIGMoMTk1My40LDIwMTUuMiwyMTI5LjAsIkxvZ2l0IikNCkJyaWVyU2NvcmUgPC0gYygwLjA2NDkzMTYxLDAuMDY3MzM2NDEsMC4wNzQzNjcwMSwiTG9naXQiKQ0KQ29uZnVzaW9uTWF0cml4IDwtIGMoMC45MTU5LDAuOTEyNCwwLjg5NjIsIkxvZ2l0IikNCmJhbmcgPC0gZGF0YS5mcmFtZShNw7Row6xuaCxBSUMsRGV2aWFuY2UsQnJpZXJTY29yZSxDb25mdXNpb25NYXRyaXgpDQpiYW5nDQpgYGANCg0KROG7sWEgdsOgbyBi4bqjbmcga+G6v3QgcXXhuqMgY+G7p2EgMyBtw7QgaMOsbmgsIHRow7RuZyBxdWEgY8OhYyBjaOG7iSBz4buRIEFJQywgRGV2aWFuY2UsIEJyaWVyU2NvcmUgdsOgIENvbmZ1c2lvbk1hdHJpeCDEkeG7gXUgY2jhu4kgcmEgbcO0IGjDrG5oIGxvZ2l0IGzDoCB04buRdCBuaOG6pXQuIERvIMSRw7MsIG3DtCBow6xuaCBsb2dpdCDEkcaw4bujYyBs4buxYSBjaOG7jW4gxJHhu4MgcGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyDEkeG6v24gcXV54bq/dCDEkWluaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLg0KDQojIyBL4bq/dCBxdeG6oyBj4bunYSBtw7QgaMOsbmggbG9naXQNCg0KYGBge3J9DQpzdW1tYXJ5KE1IMikNCmBgYA0KDQojIyMgR2nhuqNpIHRow61jaCBr4bq/dCBxdeG6ow0KDQpL4bq/dCBxdeG6oyBwaMOibiB0w61jaCBo4buTaSBxdXkgTG9naXQgY2hvIHRo4bqleSBjaOG7iSBjw7MgMiBiaeG6v24gxJHhu5ljIGzhuq1wIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogYmFvIGfhu5NtOg0KDQotIGxvYW5fdGVybTogS+G7syBo4bqhbiB2YXkgY+G7p2Ega2jDoWNoIGjDoG5nLg0KDQotIGNpYmlsX3Njb3JlOiDEkGnhu4NtIGTDom4gc+G7sSBj4bunYSBraMOhY2ggaMOgbmcuDQoNClbhu5tpIGdp4bqjIHRodXnhur90IGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgxJHhu5VpLCB0w6FjIMSR4buZbmcgY+G7p2EgdOG7q25nIGJp4bq/biDEkcaw4bujYyBkaeG7hW4gZ2nhuqNpIG5oxrAgc2F1Og0KDQotIOG7niBt4bupYyDDvSBuZ2jEqWEgMSUsIGvhu7MgaOG6oW4gdmF5IGPhu6dhIGtow6FjaCBow6BuZyBjw7MgdMOhYyDEkeG7mW5nIHTDrWNoIGPhu7FjIMSR4bq/biBxdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaC4NCg0KLSDhu54gbeG7qWMgw70gbmdoxKlhIDElLCDEkWnhu4NtIGTDom4gc+G7sSBj4bunYSBraMOhY2ggaMOgbmcgY8OzIHTDoWMgxJHhu5luZyB0acOqdSBj4buxYyDEkeG6v24gcXV54bq/dCDEkeG7i25oIGNobyB2YXkgY+G7p2EgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmguDQoNCiMjIyBLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgY2hvIGjhu4cgc+G7kSBo4buTaSBxdXkNCg0KYGBge3J9DQpjb25maW50LmRlZmF1bHQoTUgyKQ0KYGBgDQoNCiMjIyBE4buxIGLDoW8NCg0KYGBge3J9DQpwciA8LSBwcmVkaWN0KE1IMix0eXBlID0gInJlc3BvbnNlIikNCmhlYWQocm91bmQocHIsNCksMTApDQpgYGANCg0KIyBDSMavxqBORyA1OiBL4bq+VCBMVeG6rE4gVsOAIEtJ4bq+TiBOR0jhu4oNCg0KIyMgS+G6v3QgbHXhuq1uDQoNClbhu5tpIG3hu6VjIHRpw6p1IHBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSB0w6FjIMSR4buZbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IGPhu6dhIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oLCBuZ2hpw6puIGPhu6l1IHPhu60gZOG7pW5nIGThu68gbGnhu4d1IHRyb25nIHF1w6Ega2jhu6kgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIDQyNjkgbmfGsOG7nWkgZ+G7rWkgaOG7kyBzxqEgdmF5IMSR4bq/biB04buVIGNo4bupYyB0w6BpIGNow61uaC4gU2F1IGtoaSB0aOG7sWMgaGnhu4duIGjhu5NpIHF1eSB2w6AgbOG7sWEgY2jhu41uIHJhIMSRxrDhu6NjIG3DtCBow6xuaCBwaMO5IGjhu6NwIG5o4bqldCBsw6AgbcO0IGjDrG5oIGxvZ2l0DQoNCkvhur90IHF14bqjIGNobyB0aOG6pXkgY8OzIDIgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIGNobyB2YXkgY+G7p2EgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmgsIGfhu5NtOiBr4buzIGjhuqFuIHZheSBj4bunYSBraMOhY2ggaMOgbmcgKGxvYW5fdGVybSksIMSRaeG7g20gZMOibiBz4buxIGPhu6dhIGtow6FjaCBow6BuZyAoY2liaWxfc2NvcmUpLiBUcm9uZyDEkcOzLCBr4buzIGjhuqFuIHZheSBjw7MgdMOhYyDEkeG7mW5nIHTDrWNoIGPhu7FjIHbDoCDEkWnhu4NtIGTDom4gc+G7sSBjw7MgdMOhYyDEkeG7mW5nIHRpw6p1IGPhu7FjIMSR4bq/biBxdXnhur90IMSR4buLbmggY2hvIHZheSBj4bunYSB04buVIGNo4bupYyB0w6BpIGNow61uaC4NCg0KROG7sWEgdsOgbyBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgY8OzIHRo4buDIGdpw7pwIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIMSRxrBhIHJhIG5o4buvbmcgxJFp4buBdSBraeG7h24gbeG7m2kgY2hvIHF1eeG6v3QgxJHhu4tuaCB2YXkgdHJvbmcgdMawxqFuZyBsYWksIHRp4bq/cCB04bulYyBwaMOhdCBodXkgY8OhYyB54bq/dSB04buRIHTDrWNoIGPhu7FjIHbDoCBsb+G6oWkgYuG7jyBuaOG7r25nIHnhur91IHThu5EgdGnDqnUgY+G7sWMgxJHhu4MgZ2nDunAgdOG7lSBjaOG7qWMgbmjhuq1uIGzhuqFpIMSRxrDhu6NjIGvhur90IHF14bqjIG5oxrAgbW9uZyDEkeG7o2kuDQoNCiMjIEtp4bq/biBuZ2jhu4sNCg0KUXVhIGvhur90IHF14bqjIHBow6JuIHTDrWNoIHbhu4EgY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIGNobyB2YXksIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIG7Dqm4gdOG6rXAgdHJ1bmcgdsOgbyBraMOhY2ggaMOgbmcgbOG7sWEgY2jhu41uIGvhu7MgxJHGsOG7o2Mga+G7syBo4bqhbiB2YXkgaOG7o3AgbMO9IMSR4buRaSB24bubaSBtw6xuaCwgY8OzIMSR4bunIGto4bqjIG7Eg25nIHRy4bqjIG7hu6MgxJHhu4Mga2jDtG5nIGLhu4sgbuG7oyB44bqldSBnw6J5IOG6o25oIGjGsOG7n25nIMSR4bq/biBs4bujaSBuaHXhuq1uIGPhu6dhIHThu5UgY2jhu6ljLiBCw6puIGPhuqFuaCDEkcOzLCB04buVIGNo4bupYyB0w6BpIGNow61uaCBjxaluZyBuw6puIHF1YW4gdMOibSBuaGnhu4F1IGjGoW4gduG7gSDEkWnhu4NtIGTDom4gc+G7sSBj4bunYSBraMOhY2ggaMOgbmcgdsOsIG7DsyBz4bq9IGPDsyDhuqNuaCBoxrDhu59uZyBraMO0bmcgdOG7kXQgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBjaG8gdmF5IG7hur91IGLhu4sgYuG7jyBxdWEuDQoNCiMgVMOASSBMSeG7hlUgVEhBTSBLSOG6ok8NCg0KWzFdIFQuSy5UaGFuaCwgVC5NLlTGsOG7nW5nLCBWLkEuTC5EdXksICIqQsOgaSBnaeG6o25nIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmgqIiwgVHLGsOG7nW5nIMSR4bqhaSBo4buNYyBUw6BpIGNow61uaCAtIE1hcmtldGluZywgS2hvYSBLaW5oIHThur8gLSBMdeG6rXQuDQoNClsyXSBSb2JhLCBILiBBLiwgJiBMZWdhc3MsIEguIEEuICgyMDIzKS4gRmFjdG9ycyBEZXRlcm1pbmluZyBCYW5rc+KAmSBMb2FuIGFuZCBBZHZhbmNlOiBBIENhc2UgU3R1ZHkgb24gQ29tbWVyY2lhbCBCYW5rcyBpbiBFdGhpb3BpYS4gSm91cm5hbCBvZiBGaW5hbmNlIGFuZCBBY2NvdW50aW5nLCAxMSgzKSwgMTEzLg==