knitr::include_graphics("C:/Users/DELL/Pictures/Screenshots/Screenshot 2024-08-07 234708.png")

LỜI CẢM ƠN

Em xin gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Tuấn Duy đã trao em cơ hội được nghiên cứu đề tài “ỨNG DỤNG PHƯƠNG PHÁP COPULA PHÂN TÍCH SỰ BIẾN ĐỘNG CỦA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM BỊ ẢNH HƯỞNG BỞI THỊ TRƯỜNG CHỨNG KHOÁN CANADA” cũng như đã giành nhiều thời gian và công sức để trang bị cho em những kiến thức chuyên môn, kĩ năng cần thiết thực hành, giúp em có giải đáp nhiều thắc mắc trong môn học và hoàn thiện được bài tiểu luận.
Do chuyên môn của em còn nhiều thiếu sót và thiếu kinh nghiệm rất nhiều vì vậy bài báo cáo vẫn còn nhiều hạn chế nên em rất mong được đón nhận các góp ý đến từ thầy, cô để em có thể khắc phục được các khuyết điểm và hoàn thiện bài báo cáo tốt hơn nữa.
Em xin chân thành cảm ơn!

LỜI CAM KẾT

Tôi xin cam đoan đề tài “ỨNG DỤNG PHƯƠNG PHÁP COPULA PHÂN TÍCH SỰ BIẾN ĐỘNG CỦA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM BỊ ẢNH HƯỞNG BỞI THỊ TRƯỜNG CHỨNG KHOÁN CANADA” là tiểu luận có số liệu và kết quả nghiên cứu hoàn toàn trung thực và có nguồn gốc rõ ràng , được tôi trình bày rõ ràng trong bài tiểu luận.

CHƯƠNG I: GIỚI THIỆU

1.1 Đặt vấn đề

Thị trường chứng khoán đóng vai trò ngày càng quan trọng trong nền kinh tế hiện đại. Thị trường này phản ánh sự vận động và tình hình tài chính - kinh tế vĩ mô, là kênh huy động vốn quan trọng cho các doanh nghiệp và là kênh đầu tư hiệu quả cho các nhà đầu tư. Sự biến động của các chỉ số chứng khoán với việc hiểu rõ mối quan hệ tương quan giữa các chỉ số thị trường chứng khoán đóng vai trò quan trọng ảnh hưởng trực tiếp đến tâm lý, quyết định đầu tư của nhà đầu tư, cũng như hoạt động sản xuất kinh doanh của các doanh nghiệp niêm yết.,
Nhất là khi trong bối cảnh toàn cầu hóa và hội nhập kinh tế quốc tế ngày càng sâu rộng, mối quan hệ giữa các thị trường chứng khoán quốc tế trở nên ngày càng chặt chẽ. Các chỉ số chủ chốt của các thị trường chứng khoán lớn như S&P 500, NASDAQ, FTSE 100, DAX, Nikkei 225 hay Hang Seng Index… thường được theo dõi rất sát sao bởi các nhà đầu tư trên toàn thế giới. Nhìn chung, các chỉ số trong cùng thị trường chứng khoán thường có sự tương quan cao, vì chúng phản ánh sự biến động chung của thị trường và ngược lại các chỉ số chứng khoán của các thị trường khác nhau thường có sự tương quan thấp hơn, vì chúng phản ánh nền kinh tế và các yếu tố vĩ mô riêng của từng quốc gia. Vì thế tác giả lựa chọn phân tích mối tương quan của hai đối tương là VNI (Viet Nam Index) là chỉ số chứng khoán chính của Sở Giao dịch Chứng khoán Thành phố Hồ Chí Minh (HOSE) và S&P/TSX (S&P/Toronto Stock Exchange Composite Index) là chỉ số chứng khoán chính của Sở Giao dịch Chứng khoán Toronto (TSX), Canada nhằm nghiên cứu đề tài “ỨNG DỤNG PHƯƠNG PHÁP COPULA PHÂN TÍCH SỰ BIẾN ĐỘNG CỦA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM BỊ ẢNH HƯỞNG BỞI THỊ TRƯỜNG CHỨNG KHOÁN CANADA”. Việc nghiên cứu sự tương quan của hai chỉ số chứng khoản độc lập trên sẽ cung cấp cho các nhà đầu tư và chuyên gia một cái nhìn toàn diện hơn khi đưa ra các chiến lược đầu tư và thông tin hữu ích cho dự án đa dạng hóa danh mục đầu tư quốc tế.
Trong bài tiểu luận này, tác giả lựa chọn khung thời gian từ 27/07/2018 đến tháng 7 năm 2024 để nghiên cứu. Trong giai đoạn này, không chỉ thị trường chứng khoản của một quốc gia mà là cả quốc tế nói chung đã trải qua nhiều cú sốc kinh tế bởi sự thay đổi của các chính sách kinh tế, biến động về lãi suất cũng như các biến động trong xã hội như dịch bệnh hay sự kiện mang tính chính trị.

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

1.2.1 Xác định được sự tương quan giữa hai chỉ số chứng khoản độc lập

Cung cấp thông tin hữu ích cho các nhà đầu tư trong việc đánh giá rủi ro và cơ hội đầu tư giữa thị trường chứng khoán Việt Nam và Canada. Khi đó các nhà hoạch định chính sách hiểu rõ hơn về mối liên hệ giữa thị trường chứng khoán Việt Nam và các thị trường quốc tế, từ đó đề ra các chính sách phù hợp nhằm ổn định và phát triển thị trường chứng khoán Việt Nam. Là tiền đề để nghiên cứu sâu hơn về mối quan hệ giữa thị trường chứng khoán Việt Nam với các thị trường chứng khoán khác, góp phần hoàn thiện nghiên cứu về tích hợp thị trường chứng khoán quốc tế.

1.2.2 Ứng dụng được ngôn ngữ R và phương pháp Copula

Ứng dụng các công cụ phân tích dữ liệu mạnh mẽ như ngôn ngữ R ngày càng trở nên quan trọng, đặc biệt trong lĩnh vực tài chính. Bên cạnh đó, phương pháp Copula là một công cụ toán học được sử dụng rộng rãi trong phân tích rủi ro tài chính, cho phép mô hình hóa và đo lường mối quan hệ giữa các biến số tài chính một cách linh hoạt, bất kể phân phối biến số. Việc ứng dụng được phương pháp Copula trên phần mềm R là minh chứng cho sự hiệu quả cũng như sự phong phú của ngôn ngữ R trong lĩnh vực tài chính khi có thể cung cấp các gói phân tích dữ liệu, từ cơ bản đến nâng cao, giúp xử lý và phân tích dữ liệu một cách hiệu quả.

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

1.3.1 Đối tượng nghiên cứu

Đối tượng nghiên cứu được lựa chọn là VNI (Viet Nam Index) là chỉ số chứng khoán chính của Sở Giao dịch Chứng khoán Thành phố Hồ Chí Minh (HOSE) và S&P/TSX (S&P/Toronto Stock Exchange Composite Index) là chỉ số chứng khoán chính của Sở Giao dịch Chứng khoán Toronto (TSX), Canada. Việc phân tích cung cấp một bối cảnh về mối liên hệ giữa hai thị trường chứng khoản độc lập của hai quốc gia khác nhau cũng như đối mặt các biến động yếu tố kinh tế khác nhau.

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

Tác giả sử dụng dữ liệu giá cuối ngày của hai chỉ số chứng khoán tại hai quốc gia từ 27/07/2018 đến 27/07/2024. Nguồn gốc bộ dữ liệu được lấy từ trang chính thống www.investing.com đồng thời được so sánh với các trang khác nhầm mục đích tăng độ chính xác của dữ liệu hiện có. Dữ liệu của giá được tính theo tỷ suất lợi nhuận với P_t là giá cổ phiết tại thời điểm t. \[R_t=100ln\left\{\frac{P_t}{P_{t-1}}\right\}\]

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

Có cơ bản 4 bước để xây dụng mô hình copula:

1. Xác định mô hình phân phối biến

2. Kiểm định tính phù hợp của mô hình phân phối biến

3. Ước lượng tham số mô hình copula

4. Lựa chọn mô hình copula phù hợp

CHƯƠNG II: SƠ LƯỢC VỀ CHỈ SỐ CHỨNG KHOẢN VNI VÀ S&P/TSX

2.1 Tổng quan về chỉ số chứng khoán S&P/TSX (Toronto Stock Exchange Index)

TSX hay S&P/TSX Composite (Toronto Stock Exchange Index) là chỉ số theo dõi hiệu suất của khoảng 230 - 250 công ty đại chúng lớn nhất được niêm yết trên Sở giao dịch chứng khoán Toronto. Đây được xem là chỉ số chuẩn của thị trường chứng khoán, cũng như nền kinh tế Canada, tương tự như S&P 500 ở Hoa Kỳ, thường được sử dụng như một chỉ số đo lường sức khỏe của nền kinh tế Canada.
Về mặt vốn hóa thị trường, chỉ số tổng hợp TSX chiếm hơn 70% toàn bộ vốn hóa của Sở giao dịch chứng khoán Toronto. Chỉ số này hoạt động như một phong vũ biểu (Barometer) của nền kinh tế Canada. Do đó, TSX Index được theo dõi rất chặt chẽ bởi các nhà đầu tư ở cả Canada và trên toàn thế giới.
Giá trị của TSX Index được tính toán dựa trên bình quân gia quyền vốn hóa thị trường của các công ty thành phần. Những công ty có vốn hóa cao sẽ chiếm tỷ trọng lớn và có ảnh hưởng mạnh mẽ đến giá trị của TSX Index.
Chỉ số thị trường này bao gồm các công ty hàng đầu trong nhiều ngành công nghiệp khác nhau, từ công nghệ, tài chính, đến tiêu dùng và năng lượng. Một số công ty nổi bật có vốn hóa thị trường lớn nhất trong chỉ số TSX Composite bao gồm Royal Bank of Canada (RY) và Toronto-Dominion Bank (TD) thuộc lĩnh vực tài chính, Canadian National Railway Company (CNR) và Thomson Reuters Corporation (TRI) thuộc lĩnh vực công nghiệp, hay Enbridge Inc. (ENB) và Canadian Natural Resources Limited (CNQ) thuộc lĩnh vực năng lượng, …

2.1.1 Lịch sử hình thành và phát triển của chỉ số S&P/TSX

Chỉ số S&P/TSX phát triển từ một chỉ số trước đó, TSE 300. TSE 300 được ra mắt bởi Sở giao dịch Toronto vào năm 1977 (TSE là chữ viết tắt trước đó của sở giao dịch). Mô hình theo Chỉ số S&P 500, nó bao gồm một số cố định các cổ phiếu: chính xác là 300. Năm 2002, Standard & Poor’s (S&P), một trong những công ty cung cấp chỉ số chứng khoán hàng đầu thế giới, hợp tác với TSX để quản lý và tính toán chỉ số. Chỉ số TSE 300 Composite được đổi tên thành S&P/TSX Composite Index.
Trong suốt những năm qua, số lượng chính xác các công ty trong chỉ số đã dao động, và sự thành phần của chỉ số đã thay đổi. Ban đầu, các công ty khai thác mỏ và dầu mỏ chiếm ưu thế—phản ánh sự giàu tài nguyên của Canada. Vào thế kỷ 21, điều đó bắt đầu thay đổi, và khi chỉ số S&P/TSX xóa bỏ 17 công ty tài nguyên vào năm 2014 và thêm 16 công ty chủ yếu không phải tài nguyên vào năm 2015, nó đã gây tiếng vang. Vào năm 2016, các công ty tài chính chỉ chiếm một phần nhỏ của chỉ số; đến năm 2024, chúng chiếm 30.9%—là ngành lớn nhất.
Chỉ số đã đăng ký sự tăng trưởng ổn định kể từ khi ra mắt vào năm 1977. Trong những năm gần đây, nó cũng trải qua một số sụp đổ lớn, đặc biệt là vào đầu năm 2020, trong đợt bùng phát đại dịch COVID-19. Chỉ số S&P/TSX Composite, giống như nhiều chỉ số chứng khoán toàn cầu, đã trải qua một đợt sụt giảm mạnh mẽ khi đại dịch COVID-19 bùng phát, gây ra sự hoảng loạn trên thị trường tài chính. Tuy nhiên, với các biện pháp kích thích kinh tế từ chính phủ Canada và Ngân hàng Trung ương Canada, cùng với các biện pháp kiểm soát dịch bệnh, chỉ số này đã bắt đầu phục hồi nhanh chóng. Từ năm 2023 trở đi chỉ số này tiếp tục phản ánh sự ổn định và tăng trưởng của nền kinh tế Canada, mặc dù vẫn có một số biến động do các yếu tố toàn cầu như tình hình chính trị và biến đổi khí hậu.
Chỉ số S&P/TSX đã cho thấy khả năng phục hồi mạnh mẽ sau đại dịch COVID-19, phản ánh sự linh hoạt và sức mạnh của các công ty niêm yết trên sàn giao dịch Toronto. Giống như hầu hết các chỉ số tham chiếu, chỉ số S&P/TSX có ba chức năng chính: cung cấp một bức tranh tổng quan dễ hiểu về cách các công ty niêm yết của một quốc gia đang thực hiện, cung cấp một tiêu chuẩn để các quản lý quỹ so sánh kết quả của họ và cung cấp một cấu trúc hình thức mà các quỹ giao dịch trao đổi (ETFs) và quỹ chỉ số có thể theo dõi.
Hiện nay, chỉ số S&P/TSX tiếp tục là chỉ số chính phản ánh tình hình kinh tế và tài chính của Canada. Chỉ số này đóng vai trò quan trọng trong việc thu hút các nhà đầu tư quốc tế và nội địa, cũng như giúp các nhà quản lý quỹ đánh giá hiệu suất của thị trường chứng khoán Canada.

2.1.2 Vai trò của chỉ số chứng khoán S&P/TSX trong nền kinh tế Canada và toàn cầu

TSX là sàn giao dịch chứng khoán lớn nhất và quan trọng nhất tại Canada. Nó đóng vai trò là trung tâm tài chính chính của quốc gia này, thu hút các công ty lớn, các nhà đầu tư và các tổ chức tài chính hàng đầu. Sự hiện diện và hoạt động sôi nổi của TSX đã góp phần xây dựng và phát triển thị trường vốn tại Canada.
Chỉ số S&P/TSX Composite, là chỉ số đại diện cho toàn thị trường chứng khoán Canada, phản ánh tình hình tài chính, kinh tế vĩ mô của quốc gia này. Biến động của chỉ số là một trong những thước đo quan trọng về niềm tin, kỳ vọng của các nhà đầu tư đối với nền kinh tế Canada.
Khi nền kinh tế Canada phát triển, tăng trưởng mạnh mẽ, chỉ số S&P/TSX Composite thường tăng, cho thấy sự lạc quan và niềm tin của các nhà đầu tư vào triển vọng kinh tế. Ngược lại, khi nền kinh tế suy thoái, chỉ số này thường giảm, phản ánh tâm lý bi quan và lo ngại của nhà đầu tư. Chỉ số S&P/TSX Composite không chỉ phản ánh tình hình kinh tế, mà còn ảnh hưởng trực tiếp đến các chính sách kinh tế vĩ mô của Canada. Khi chỉ số này biến động mạnh, Ngân hàng Trung ương Canada (Bank of Canada) thường sẽ điều chỉnh chính sách tiền tệ, như thay đổi lãi suất, để hỗ trợ hoặc kiềm chế sự biến động của thị trường chứng khoán.
Canada có nền kinh tế phát triển, nằm trong các nước G7, do đó sự biến động của thị trường chứng khoán Canada sẽ tác động đến tâm lý và hành vi đầu tư của các nhà đầu tư quốc tế. Khi chỉ số S&P/TSX Composite tăng mạnh, các nhà đầu tư quốc tế thường sẽ gia tăng đầu tư vào Canada, và ngược lại.


Nhìn chung, chỉ số S&P/TSX không chỉ là một thước đo của thị trường chứng khoán mà còn là một biểu tượng của nền kinh tế Canada, phản ánh sự thăng trầm và tiềm năng phát triển của các công ty hàng đầu trong nền kinh tế lớn nhất thế giới.

2.2 Tổng quan về chỉ số chứng khoán VNI (Viet Nam Index)

Chỉ số chứng khoán VNI là chỉ số thể hiện xu hướng biến động giá của tất cả cổ phiếu niêm yết và giao dịch trên sàn giao dịch chứng HOSE (Sở Giao dịch Chứng khoán Thành phố Hồ Chí Minh) là một trong hai sàn giao dịch chứng khoán quan trọng tại Việt Nam. Được thành lập nhằm mục đích phát triển thị trường chứng khoán ở khu vực miền Nam, VNI hỗ trợ các doanh nghiệp vừa và nhỏ trong việc huy động vốn.
Chỉ số này được xem là chỉ báo quan trọng của thị trường chứng khoán Việt Nam, được theo dõi và phân tích sát sao bởi các nhà đầu tư, chuyên gia phân tích và các tổ chức tài chính trong và ngoài nước. Biến động của VNI được xem là thước đo phản ánh tâm lý và kỳ vọng của thị trường về tình hình kinh tế vĩ mô, các chính sách điều hành của Chính phủ, cũng như hiệu quả hoạt động của các doanh nghiệp niêm yết.

2.2.1 Lịch sử hình thành và phát triển của chỉ số VNI

Sự mở đầu cho chỉ số chứng khoán VNI đi đôi với sự ra đời của thị trường chứng khoán tại Việt Nam. Mở đầu là sự thành lập của Uỷ ban chứng khoán Nhà Nước Việt Nam – 28/11/1996 nhưng phải đến ngày 11/07/1998 thì thị trường chứng khoán Việt Nam mới được khai sinh. Đến ngày 28/07/2000, phiên giao dịch đầu tiên được diễn ra. Tuy nhiên lúc đó chỉ có 2 mã cổ phiếu được giao dịch là REE (Công ty cổ phần cơ điện lạnh) và SAM (Công ty cổ phần SAM Holdings). Các cột mốc đáng nhớ từ năm 2001 đến hiện nay theo thống kê chỉ số VNI:

  • 2001-2005: Giai đoạn này các nhà đầu tư và doanh nghiệp đang trong giai đoạn làm quen nên không có nhiều chuyển biến. Vốn hoá thị trường lúc này chỉ chiếm 1% GDP.

  • 2006: Cụ thể vào tháng 1/2006, VINAMILK giúp giá trị vốn hoá sàn HOSE tăng gấp đôi trong ngày. Đồng thời 74 doanh nghiệp cũng niêm yết trên sàn HOSE trong năm này và giúp cho chỉ số VNI tăng 144% chỉ trong 1 năm.

  • 2007: Vào ngày 12/03/2007 chỉ số VNindex đạt lịch sử kết phiên mở và cao hơn 3,6 lần so với thời điểm đầu năm 2006.

  • 2008: Đây là thời điểm khủng hoảng kinh tế diễn ra toàn cầu, chỉ số VNI giảm 66% và giá trị vốn hóa trên sàn HOSE cũng bay hơi 195 tỷ đồng.

  • Cho đến năm 2019, thị trường Việt Nam đạt mốc tăng điểm cao nhất trong khu vực Đông Nam Á.

  • Năm 2020 – 2021 là thời kỳ dịch bệnh nên các nhà đầu tư có xu hướng tìm đến chứng khoán để tăng tài sản nhiều hơn. Đặc biệt tính chung cả năm 2021, VNI tăng gần 35,74%, mức tăng này đã giúp Việt Nam lọt vào top 7 chỉ số chứng khoán tăng mạnh nhất thế giới.

  • Tuy nhiên, kể từ đầu năm 2022, do ảnh hưởng của tình hình thế giới, lạm phát tăng cao, thị trường chứng khoán đã có sự sụt giảm mạnh.

  • Tổng kết cả năm 2023, thị trường chứng khoán vẫn mang về thành quả tích cực, ghi nhân chỉ số VNI năm 2023 tăng 12.2%.

Qua gần hai thập kỷ phát triển, HOSE và chỉ số VNI đã chứng kiến sự tăng trưởng vượt bậc cả về số lượng công ty niêm yết và giá trị giao dịch. Điều này khẳng định vai trò của chỉ số VNI như một trụ cột quan trọng trong hệ thống tài chính Việt Nam, đóng góp tích cực vào sự phát triển bền vững của nền kinh tế đất nước.

2.2.2 Vai trò của chỉ số VNI đối với nền kinh tế Việt Nam

VNI được xem như một “thước đo” của nền kinh tế Việt Nam. Biến động của VNI phản ánh trực tiếp tình hình kinh tế vĩ mô, bao gồm tăng trưởng GDP, lạm phát, lãi suất, chính sách tài khóa và tiền tệ, v.v. Khi nền kinh tế tăng trưởng, hoạt động sản xuất và kinh doanh của các doanh nghiệp thuận lợi, VNI thường sẽ tăng lên. Ngược lại, khi nền kinh tế gặp khó khăn, VNI sẽ giảm điểm.
Thị trường chứng khoán Việt Nam nói chung và chỉ số VNI nói riêng đóng vai trò quan trọng trong việc thu hút vốn đầu tư, cả trong và ngoài nước, vào nền kinh tế. Khi VNI tăng, nó tạo tâm lý tích cực cho nhà đầu tư, khuyến khích họ đầu tư vào thị trường chứng khoán Việt Nam. Điều này góp phần bổ sung nguồn vốn đầu tư cho các doanh nghiệp, hỗ trợ sự phát triển của nền kinh tế.
Còn được sử dụng như một công cụ hữu ích để đánh giá và điều chỉnh các chính sách kinh tế vĩ mô của Chính phủ. Các nhà hoạch định chính sách thường theo dõi sát diễn biến của VNI để đưa ra các quyết định về chính sách tiền tệ, tài khóa, nhằm tác động đến thị trường chứng khoán và hỗ trợ sự phát triển của nền kinh tế.
Sự biến động của chỉ số VNI còn tạo ra hiệu ứng lan tỏa đến các lĩnh vực khác của nền kinh tế. Khi VNI tăng, nó giúp tăng giá trị tài sản, tạo cảm giác giàu có cho người dân, từ đó thúc đẩy tiêu dùng và đầu tư và ngược lại.

CHƯƠNG III: CƠ SỞ LÝ THUYẾT VÀ TÔNG QUAN NGHIÊN CỨU

3.1 Cơ sở lý thuyết về thị trường chứng khoán

3.1.1 Thị trường chứng khoán

Thị trường chứng khoán là một thị trường mà ở nơi đó người ta mua bán, chuyển nhượng, trao đổi chứng khoán nhằm mục đích kiếm lời. Tuy nhiên, đó có thể là thị trường chứng khoản tập trung hoặc phi tập trung.
Tính tập trung ở đây là muốn nói đến việc các giao dịch được tổ chức tập trung theo một địa điểm vật chất. Hình thái điển hình của thị trường chứng khoán tập trung là Sở giao dịch chứng khoán (Stock exchange). Tại Sở giao dịch chứng khoán (SGDCK), các giao dịch được tập trung tại một địa điểm; các lệnh được chuyển tới sàn giao dịch và tham gia vào quá trình ghép lệnh để hình thành nên giá giao dịch. . Các giao dịch trên thị trường này chịu sự điều phối của luật chứng khoán và cơ quan Ủy ban Chứng khoán Nhà nước do đó rủi ro của nó sẽ thấp hơn.
Thị trường chứng khoán phi tập trung còn gọi là thị trường OTC (over the counter). Trên thị trường OTC, các giao dịch không cố định mà được tiến hành qua mạng lưới các công ty chứng khoán phân tán trên khắp quốc gia và được nối với nhau bằng mạng điện tử. Giá trên thị trường này được hình thành theo phương thức thoả thuận.

3.1.2 Chức năng thị trường chứng khoán

Thị trường chứng khoán ra đời có 5 chức năng chính:

  • Huy động vốn đầu tư cho nền kinh tế

  • Cung cấp môi trường đầu tư cho công chúng

  • Tạo tính thanh khoản cho các chứng khoán

  • Đánh giá hoạt động của doanh nghiệp

  • Tạo môi trường giúp Chính phủ thực hiện các chính sách kinh tế vĩ mô.

Thị trường chứng khoán đóng vai trò then chốt trong việc huy động vốn, cung cấp kênh đầu tư, định giá doanh nghiệp và hỗ trợ thực hiện chính sách kinh tế vĩ mô. Sự phát triển của thị trường chứng khoán góp phần thúc đẩy tăng trưởng kinh tế, gia tăng hiệu quả đầu tư và quản trị doanh nghiệp, đồng thời tạo ra một hệ thống tài chính vững mạnh cho sự phát triển bền vững của nền kinh tế.

3.1.3 Nguyên tắc hoạt động

Trong thị trường chứng khoán có một số nguyên tắc được coi là nguyên lý cơ bản để thị trường này có thể hoạt động như: nguyên tắc cạnh tranh, nguyên tắc công khai, nguyên tắc công bằng, nguyên tắc tập trung và nguyên tắc trung gian. Nhưng đồng thời nguyên tắc chủ chốt cho cấu trúc hoạt động trên thị trường.
Nguyên tắc cạnh tranh: giá cả trên TTCK phản ánh quan hệ cung cầu về chứng khoán và thể hiện tương quan cạnh tranh giữa các công ty. Các nhà phát hành cạnh tranh với nhau để bán chứng khoán của mình cho các nhà đầu tư, các nhà đầu tư được tự do lựa chọn các chứng khoán theo các mục tiêu của mình. Không những thế các nhà đầu tư còn cạnh tranh tìm kím mức giá phù hợp cho các chứng khoán mà bản thân đang nắm giữa nhằm mục đích thu về lợi nhuận cao nhất.
Nguyên tắc công bằng: công bằng có nghĩa là mọi người tham gia thị trường đều phải tuân thủ những quy định chung, được bình đẳng trong việc chia sẻ thông tin và trong việc chấp hành các hình thức xử phạt nếu vi phạm vào những quy định đó.
Nguyên tắc công khai: Chứng khoán là loại hàng hoá mang tính trừu tượng nên TTCK phải được xây dựng trên cơ sở hệ thống công bố thông tin rõ ràng. Các tổ chức phát hành có nghĩa vụ phải cung cấp thông tin đầy đủ nhanh chóng và kịp thời thông qua các phương tiện thông tin đại chúng, Sở giao dịch, các công ty chứng khoán và các tổ chức có liên quan.
Nguyên tắc trung gian: các giao dịch chứng khoán được thực hiện thông qua tổ chức trung gian là các công ty chứng khoán. Tại các thị trường phân cấp khác nhau, các nhà đầu tư không mua trực tiếp của nhà phát hành mà mua từ các nhà bảo lãnh phát hành. Hoặc đôi khi thông qua các nghiệp vụ môi giới, kinh doanh, các công ty chứng khoán mua, bán chứng khoán giúp các khách hàng.
Nguyên tắc tập trung: nghĩa là các giao dịch chứng khoán được thực hiện tại thị trường được chỉ định là hợp pháp.

3.2 Cơ sở lý thuyết về phương pháp COPULA

3.2.1 Tổng quan về phương pháp Copula

Trong những thập kỉ gần đây, Copula đã trở thành một công cụ phổ biến trong mô hình hóa rủi ro, bảo hiểm và tài chính nhờ khả năng mô hình hóa sự phụ thuộc giữa các biến. Các nhà phân tích thường phải làm việc với các phân phối xác suất đa chiều, khi mà không có một phân phối đa biến rõ ràng. Họ muốn khám phá sự phụ thuộc giữa các biến được quan tâm cũng như hành vi biên của chúng. Ý tưởng tách một phân phối thành một phần mô tả cấu trúc phụ thuộc và một phần chỉ mô tả hành vi biên đã dẫn đến khái niệm về copula.
Khái niệm copula được giới thiệu lần đầu bởi Abe Sklar năm 1959, từ “copula” bắt nguồn từ tiếng Latinh “copulare,” có nghĩa là “liên kết” hoặc “kết nối”. Tuy nhiên, phải đến khi bài báo Embrechts et al. (1999) xuất hiện, ứng dụng của copula mới được phổ biến trong tài chính. Copula đã nhanh chóng thu hút được sự quan tâm rất lớn của cộng đồng thống kê thế giới để trở thành một mảng nghiên cứu quan trọng của thống kê nhiều chiều. Nó cũng trở thành một công cụ mạnh, không thể thiếu trong các nghiên cứu liên quan đến kinh tế và tài chính.
Vai trò của copula là cho phép mô hình hóa cấu trúc phụ thuộc của các đại lượng ngẫu nhiên tách rời với các phân phối biên của các biến này hay nói cách khác là tạo ra hàm phân phối đa biến từ các phân phối biên khác nhau một cách độc lập, trong đó cấu trúc phụ thuộc giữa các biến được mô tả bởi copula. . Copula là một hàm phân phối tích lũy đa biến, được xác định trên không gian nhiều chiều, với mọi phân phối biên được xác định trong khoảng [0,1].
Mô hình hóa sự phụ thuộc trong trường hợp có nhiều hơn hai hai biến ngẫu nhiên là một nhiệm vụ đầy thách thức được nhiều nhà nghiên cứu quan tâm. Vì vây phương pháp Copula là một công cụ hữu ích để mô hình hóa quan hệ giữa các biến ngẫu nhiên đa chiều và xác định phân bố chung của chúng.
Lý thuyết copula dần tạo ra được các bước phát triển vượt bậc khi các ứng dụng của nó trở nên phổ biến nhờ vào sự tiến bộ của công nghệ tính toán và phần mềm hỗ trợ. Nhờ những đặc điểm này, copula đã trở thành một công cụ quan trọng trong việc xác định sự phụ thuộc giữa các tài sản tài chính và giữa tài sản tài chính với tài sản thực.

3.2.2 Các họ hàm cơ bản của Copula

Ứng dụng phương pháp copula đã phát triển mạnh mẽ trong những thập kỷ qua, dẫn đến việc phát triển nhiều thêm phương pháp để mở rộng các họ copula hiện có hoặc tạo ra các copula mới. Những nỗ lực này được thúc đẩy bởi mong muốn giới thiệu các mô hình ngẫu nhiên linh hoạt hơn, vượt qua những hạn chế của các giả định truyền thống và đôi khi không thực tiễn về phân phối của các vector ngẫu nhiên đa biến. Nhiều phương pháp đã được sử dụng để giới thiệu các tham số mới vào hoặc các biến thể của các họ copula hiện có, tạo ra một công cụ linh hoạt để hiểu sự phụ thuộc giữa các biến ngẫu nhiên.Để có cái nhìn tổng quan về sự phát triển lịch sử, các phát hiện hiện tại và triển vọng tương lai trong lĩnh vực này, các nghiên cứu của Durante và Sempi và Hofert et al. cung cấp những phân tích sâu sắc, kết hợp các lý thuyết và hiểu biết mới nhất.
Sự xuất hiện của nhiều họ copula trong thời gian gần đây phản ánh nhu cầu khám phá các phụ thuộc cấu trúc trong nhiều lĩnh vực khác nhau như tài chính, khoa học tính toàn bảo hiểm, kỹ thuật nghiên cứu độ tin cậy, khoa học đời sống, khoa học môi trường, thủy văn học và phân tích sống còn.
Copula được phân loại thành nhiều họ hàm khác nhau nhằm phục vụ cho mục đích và tính phù hợp của bộ dữ liệu được thực hành. Hiện nay, copula được xác định chia thành hai nhóm chính là nhóm Elip và nhóm Archimedean.

3.2.2.1 Nhóm Copula họ Archimedean

Nhóm Archimedean bao gồm nhiều loại copula khác nhau, như Clayton, Gumbel, Frank, Joe, và các phiên bản mở rộng của chúng như Rot–Clayton, Rot–Gumbel, BB1, BB6, BB7, và BB8. Mỗi loại biễu diễn một kiểu phụ thuộc đặc biệt của biến ngẫu nhiên. Nhóm Copula họ Archimedean là một yếu tố quan trọng của mô hình phụ thuộc đa biến, xuất hiện lần đầu tiên trong bối cảnh không gian metric mà khoảng cách là một phân phối xác suất (theo “Probabilistic Metric Spaces.North-Holland Series in Probability and Applied Mathematics” của Schweizer, B. and Sklar, A., 1983). Theo tác giả Ling, C.-H, ông cho rằng nhóm Archimedean được biểu diễn tổng quát bởi hàm sau:
\[C\left(u_1,\ ...,u_d\right)\ =\ \varphi\left[\varphi^{-1}\left(u_1\right)\ +...+\varphi^{-1}\left(u_d\right)\right]\]

với \(\left(u_1,\ ...,u_d\right)\in\left[0,1\right]\) là các biến ngẫu nhiên đồng phân phối trong khoảng [0,1].
Nhiều copula họ Archimedean có thể xử lý thống kê đã được xây dựng và sử dụng trong nhiều ứng dụng thực tiễn, bao gồm phân tích sống sót của đa biến, mô hình hóa tổn thất bảo hiểm và phổ biến trong chuyên ngành tài chính định lượng.

3.2.2.2 Nhóm Copula họ Elip

Nhóm Elip bao gồm hai loại chính là copula Gaussian và copula Student-t. Nếu copula Gaussian dưa trên phân phối chuẩn thường được sử dụng để mô hình hóa mối quan hệ giữa các biến trong điều kiện bình thường, khi các biến gần giá trị trung bình và có thể được coi là độc lập khi thị trường ổn định. Ngược lại, copula Student-t phù hợp hơn trong các tình huống thị trường biến động, với mức độ phụ thuộc gia tăng khi số bậc tự do (df) giảm.
Trong thực tế, một trong những copula phổ biến nhất trong việc mô hình hóa dữ liệu tài chính đa biến có thể là copula Student-t, được suy ra từ phân phối student đa biến. Điều này là do sự đơn giản của nó về mặt mô phỏng và hiệu chuẩn kết hợp với khả năng mô hình hóa sự phụ thuộc đuôi, điều thường quan sát thấy trong dữ liệu lợi nhuận tài chính. Thực tế có những trường hợp không thể được xử lí đầy đủ bằng copula Gaussian thường được sử dụng. Vì vậy, các nghiên cứu gần đây của Mashal et al. (2003) và Breymann et al. (2003) đã chứng minh rằng sự phù hợp thực nghiệm của copula student-t thường vượt trội hơn so với copula Gaussian. Tuy nhiên, nó đôi khi bị hạn chế khi chỉ có một tham số cho bậc tự do (dof), điều này có thể giảm đi sự hiệu quả của khả năng mô hình hóa sự phụ thuộc đuôi trong trường hợp đa biến.

3.2.3 Hàm copula và ứng dụng

Hàm Copula có \(F(x_1, x_2, ..., x_n) = C(F_1(x_1), F_2(x_2), ..., F_n(x_n))\) là các biến ngẫu nhiên có hàm phân phối biên liên tục từ \(F_1,\ F_2,\ F_3,...\ F_n\). Trong đó F là hàm phân phối đồng thời, khi đó Copula sẽ tồn tại có dạng \(C:\ [0,1]^d\)
\(F(x_1,\ x_2,\ x_3,...\ x_n)=\ C(F_1(x_1),\ F_2(x_2),\ F_3(x_3),...\ F_n(x_n))\)
Kết quả cơ bản đầu tiên về lý thuyết copula đã được Sklar (1959) công bố. Kết quả này đặt nền móng cho tất cả các nghiên cứu trong lĩnh vực này vì nó cho phép phân tách bất kỳ phân phối hai biến nào thành các phân phối đơn biến cùng với cấu trúc phụ thuộc.
Đối với bất kì hàm phân phối hai biến đồng nhất F với hàm phân phối biến liên tục từ từ \(F_1,\ F_2\), ta được một hàm copula C sao cho:

\(F(x,\ y)=\ C(F_1(x_1),\ F_2(y))\)


với x, y \(\in\ \mathbb{R}\ =\left(-\infty,+\infty\right)\)
Trong nhiều năm, hầu hết các kết quả liên quan đến phương pháp copula đều được dựa trên kết quả nghiên cứu của Schweizer và Sklar (1983).

3.2.4 Hệ số phụ thuộc đuôi

Một trong những đặc điểm nổi bật nhất của phương pháp copula chính là xác định được hệ số phụ thuộc đuôi hay cấu trúc phụ thuộc đuôi. Thường được áp dụng để đo lường sự phụ thuộc giữa các giá trị của các biến ngẫu nhiên đối với các mô hình copula. Bên cạnh đó là mô tả mức độ các biến ngẫu nhiên có xu hướng cũng đạt các giá trị không tích cực. Nói cách khác, sự phụ thuộc đuôi liên quan đến mức độ phụ thuộc ở góc dưới bên trái hoặc góc trên bên phải của phân phối hai biến hay cả hai biến cùng nhau giảm hay tăng. Gần đây, khái niệm sự phụ thuộc đuôi đã được thảo luận trong các ứng dụng tài chính liên quan đến rủi ro thị trường hoặc tín dụng, như Hauksson et al. (2001) và Embrechts et al. (2003). Cụ thể, các phân phối phụ thuộc đuôi được quan tâm trong bối cảnh ước lượng Value at Risk (VaR) cho danh mục tài sản, vì những phân phối này có thể mô hình hóa sự phụ thuộc của các sự kiện tổn thất lớn (sự kiện vỡ nợ) giữa các tài sản khác nhau giúp các nhà đầu tư giảm thiểu rủi ro. Có hai loại phụ thuộc đuôi chính:

  • Phụ thuộc đuôi trên (Upper tail dependence):
knitr::include_graphics("C:/Users/DELL/Pictures/Screenshots/Screenshot 2024-08-09 134921.png")

  • Phụ thuộc đuôi dưới (Lower tail dependence):
knitr::include_graphics("C:/Users/DELL/Pictures/Screenshots/Screenshot 2024-08-09 135027.png")

Trong đó $x_1,\ x_2$ là hai biến ngẫu nhiên với $F_1,\ F_2$ là hàm phân phối biên tương ứng, giá trị \lambda\_U và \lambda\_L thuộc giá trị trong khoảng (0,1), hai hệ số phụ thuộc này đo lường mức độ xác suất để xảy ra tình huống \$x_2 sẽ bùng nổ hay sụp đổ vượt qua một mức độ nào đó khi biết rằng \$x_1 đã bùng nổ hay sụp đổ khi trải qua một mức độ lớn nào đó.

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

3.3.1 Mô hình phân phối biên chuỗi lợi suất

3.3.1.1 Xác định hàm phân phối biến

Hiện nay, có nhiều mô hình được sử dụng để đo lường mô hình biên. Tác giả cho rằng mô hình biến ARMA - GJR - GARCH là lựa chọn thích hợp nhất để xác định phân phối biến của chuỗi lợi suất. Với việc ứng dụng mô hình ARMA để loại bỏ hiện tượng tự tương quan và trung bình trượt của chuỗi lợi suất và mô hình GJR-GARCH xử lí hiện tượng Heteroskedasticity và giảm thiểu hiện tượng bất đối xứng trong biến động cũng như khả năng xem xét đến hiện tượng đòn bẩy.
Để thực hiện hồi quy mô hình ARMA - GRJ - GARCH, tác giả thực hiện các bước sau:

  • Kiểm định Ljung - Box Q test dựa trên đồ thị tương quan của chuỗi lợi suất, được tính bằng công thức sau:
    \(Q_{LB}=\ n\left(n-2\right)\sum_{i=1}^{k}\frac{\rho_i^2}{n-i}\)
    Với n là số quan sát, _i là hệ số tương quan với độ trễ lag i, kiểm định bằng thống kê Chi bình phương với k là bậc tự do. Lúc này giả thuyết \(H_0\) được đặt ra là chuỗi lợi suất có tính tự tương quan không.
  • Kiểm định hiệu ứng ARCH của chuỗi lợi suất bằng phương pháp kiểm định ARCH - LM test. Kiểm định này giúp xác định liệu dữ liệu có hiệu ứng biến động không đều qua thời gian hay không.
  • Tiếp đến là xây dựng mô hình ARMA tối ưu nhất dựa vào các tiêu chuẩn AIC (Akaike Information Criterion) và BIC (Bayesian Information Criterion) nhằm xác định các giá trị p và q được chọn để đặc trưng cho phần tự hồi quy (AR) và phần trung bình chuyển động (MA) của chuỗi lợi suất.
  • Sau đó, xây dựng mô hình ARMA (p,q) – GJR – GARCH (r,m) . Thực hiện trích xuất phần dư và xác định phân phối phù hợp cho mô hình GJR – GARCH. Các phân phối có khả năng lần lượt là Normal, Student-t, Skewed Student-t, GED (Generalized Error Distribution), và SGED (Skewed Generalized Error Distribution). Mô hình sẽ có dạng sau:

\(r_t\ =\ c\ +\ \sum_{i=1}^{p}{\emptyset r_{t-1}\ +\ \varepsilon_t\ +\ \sum_{i=1}^{q}{\theta\varepsilon_{t-i}}}\)

\(\sigma^2\ =\ \omega\ +\ \sum_{i=1}^{r}{\beta_i\sigma^2\ +\ \sum_{i=1}^{m}{\alpha_i\varepsilon_{t-i}^2\ +\ \sum_{i=1}^{m}{\gamma_iS_{t-i}\varepsilon_{t-i}^2}}}\) Trong đó:
\(r_t\): lợi suất tại thời điểm t.
\(\varepsilon_t\): sai số tại thời điểm t.


\(\sigma^2\): phương sai có điều kiện tại thời điểm t.
\(S_{t-i}=1\) khi \(\varepsilon_{t-i}\ <0\), và \(S_{t-i}\ =0\) trong trường hợp ngược lại thể hiện hiệu ứng đòn bẩy.
Sau cùng để lựa chọn mô hình biên phù hợp nhất, ta tiếp tục sử dụng các tiêu chí như AIC, SIC, tìm các giá trị nhỏ nhất và kết quả sẽ được một mô hình biến ARMA – GJR –GARCH hoàn chỉnh mô tả các đặc tính quan trọng của chuỗi lợi suất, bao gồm đuôi dày, đối xứng và bất đối xứng, và hiệu ứng đòn bẩy. Đây là quá trình cần thiết để đảm nảo các đặc tính quan trọng của chuỗi lợi suất được mô tả rõ ràng và chính xác nhất.

3.3.1.2 Kiểm định tính phù hợp của mô hình phân phối biên

Đánh giá sự phù hợp của mô hình biến là cực kì quan trọng bởi vì các dữ liệu ước lượng từ phân phối biến sẽ được sử dụng cho mô hình copula vì vậy khi mô hình biến được xử lí sai lệch thì mô hình copula sẽ tiến đến sự lệch lạc. Vì vậy sau khi xác định mô hình biến tối ưu , tác giả tính toàn phần dự chuẩn hoá của mô hình được kí hiệu lần lượt là bằng cặp dữ liệu s và d tại thời điểm\(\ t\). Sau cũng là chuyển đổi thành giá trị xác suất để mô hình linh hoạt hơn và thích ứng trong điều kiện thay đổi liên tục.
\(u_t\ =\ F_1\left(s\ \middle|\mathrm{\Omega}_{t-1}\right)\)\(k_t\ =\ F_2\left(s\middle|\Omega_{t-1}\right)\)
Có ba kiểm định chính sau:

  • Kiểm định Anderson – Darling (A – D): Kiểm định này giúp đánh giá mức độ phù hợp giữa phân phối biên dự kiến và phân phối biên thực nghiệm. thường được sử dụng trong nhiều lĩnh vực khác nhau như tài chính, kỹ thuật, và khoa học, nơi mà việc xác định tính phù hợp của một mô hình phân phối là quan trọng
  • Kiểm định Cramer – von Mises (Cv – M): Kiểm định này đo lường sự khác biệt giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Trong ngành công nghiệp bảo hiểm, kiểm định này có thể được sử dụng để kiểm tra xem các mô hình phân phối tổn thất có khớp với dữ liệu tổn thất thực tế hay không.
  • Kiểm định Kolmogorov – Smirnov (K – S): Kiểm định này cũng kiểm tra sự khác biệt giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Kiểm định này có lợi thế là đơn giản và dễ hiểu, đồng thời cung cấp một cách tiếp cận mạnh mẽ để đánh giá sự phù hợp của một mô hình phân phối. Trong tài chính, kiểm định K – S có thể được sử dụng để kiểm tra xem liệu lợi nhuận cổ phiếu có tuân theo một phân phối chuẩn hay không.
    Tóm lại, Các kiểm định Anderson – Darling (A – D), Cramer – von Mises (Cv – M), và Kolmogorov – Smirnov (K – S) đều là các phương pháp quan trọng trong việc đánh giá mức độ phù hợp giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Mỗi kiểm định có cách tiếp cận và công thức tính toán riêng, nhưng chúng đều cung cấp các giá trị p quan trọng để xác định xem dữ liệu thực nghiệm có khớp với phân phối dự kiến hay không.

3.3.2 Ước lượng mô hình Copula

Các tham số copula thông thường được ước lượng bằng phương pháp maximum likelihoos - ML sử dụng quy trình gồm hai bước là phương pháp hàm suy luận theo biên (IFM,Joe and Xu, 1996), một kĩ thuật phổ biến và càng hữu ích hơn nếu mô hình có điều kiện phức tạp hơn.
Quá trình IFM được thực hiện như sau:

  1. Ước lượng các tham số của hàm phân phối biên bằng phương pháp MLE: \({\hat{\theta}}_{i\ }=argmaxl\ (\theta_i)\ =agrmax\ \sum_{t=1}^{T}{log\ f_i}(x_t\theta_i),\ i=\ \bar{1,\ n}\) với \(l\) là hàm log-likelihood của hàm phân phối biên \(F_i\)

  2. Ước lượng tham số của copula dựa vào tham số hàm phân phối biên \({\hat{\theta}}_{i\ }\)
    \({\hat{\delta}}_{i\ }=argmaxl^c(\delta)\ =agrmax\ \sum_{t=1}^{T}{log\ (c(}F_1(x_1,{\hat{\theta}}_{1\ }),...\ ,F_n(x_n,{\hat{\theta}}_{n\ })\ ;\ \delta)\) với \(l^c\) là hàm log-likehood của hàm copula.
    Tiếp tục sử dụng tiêu chí AIC, BIC với mong muốn laf tìm được mô hình copula phù hợp. Nếu AIC được chứng minh là đo lường mức độ mất mát thông tin trong một mô hình với mức phù hợp là giá trị AIC nhỏ nhất, thì SIC cố gắng ngăn chặn hiện tượng quá khớp (overfitting) bằng cách ưu tiên các mô hình đơn giản hơn với các giá trị nhỏ hơn.

3.4 Hàm Copula Student-t

3.4.1 Tổng quan về Copula Student-t

Copula Student-t đa biến tương ứng với phân phối t chuẩn (và cũng là phân phối student-t với thuộc tính độc lập và các bậc tự do bằng nhau hoặc không bằng nhau) được xây dựng như sau:

knitr::include_graphics("C:/Users/DELL/Pictures/Screenshots/Screenshot 2024-08-08 144201.png")


với \(f\left(t\right)\) là hàm mật độ phân phối của phân phối.
Hầu hết các thuộc tính của T copula được kế thừa từ các thuộc tính của phân phối Student-t cơ bản. Các đặc tính nổi bật sau: Copula Student-t là hàm copula đối xứng. Không có thuộc tính độc lập. Điều này có nghĩa là không phải mọi cặp biến trong copula Student-t là độc lập. Tuy nhiên, copula dựa trên phân phối Student-t với tính chất độc lập có thể có thuộc tính này. Có một mối quan hệ rõ ràng giữa hệ số tương quan Pearson (\(\rho\)) và hệ số tương quan thứ hạng Kendall (\(τ\)):
\(\rho=\sin{\left(\frac{\pi}{2}\tau\right)}\)
Cho thấy tính phụ thuộc đuôi, nghĩa là có khả năng xảy ra các sự kiện cực đoan đồng thời.

3.4.2 Ứng dụng phương pháp Copula Student-t

Các nhà hoạch định chiến lược, nhà đầu tư và các nhà quản lý rủi ro luôn tìm kiếm những công cụ và phương pháp phân tích hiệu quả để có thể nắm bắt được bản chất và mối tương quan của các rủi ro, từ đó đưa ra các quyết định phù hợp. Vì vậy mô hình Copula đặc biệt được quan tâm và ứng dụng rộng rãi, đặc biệt là Copula Student-t. So với các copula khác như Gaussian Copula, Copula Student-t có khả năng nắm bắt sự phụ thuộc ở các đuôi tốt hơn, điều này rất quan trọng trong quản lý rủi ro, đặc biệt là trong các ngành tài chính và bảo hiểm.
Copula Student-t là một dạng đặc biệt của họ Copula, cho phép mô hình hóa tương quan và phụ thuộc lẫn nhau giữa các biến ngẫu nhiên dựa trên phân phối Student-t đa biến.
Mô hình Copula Student-t là một công cụ phân tích rủi ro mạnh mẽ và đang được ứng dụng ngày càng rộng rãi trong thực tiễn. Ưu điểm chính của phương pháp này là khả năng mô hình hóa chính xác hơn tương quan phi tuyến và đuôi phân phối dày của các biến số, từ đó cải thiện đáng kể độ chính xác trong các bài toán quản lý rủi ro tài chính.
Copula Student-t đang được ứng dụng trong nhiều lĩnh vực như tính toán VaR, quản lý rủi ro tín dụng, định giá phái sinh, tối ưu hóa danh mục đầu tư và quản lý rủi ro hoạt động. Các nghiên cứu thực nghiệm đã chứng minh hiệu quả của phương pháp này trong thực tế, khiến nó trở thành một công cụ phân tích rủi ro ngày càng quan trọng trong thế giới tài chính và kinh doanh hiện đại.
Một nghiên cứu tiêu biểu là của Paul Embrechts, P., Lindskog, F., & McNeil, A. J. “Modeling Dependence with Copula and Applications to Risk Management” (2002). Kết quả nghiên cứu cho thấy Copula Student-t có thể mô hình hóa tương quan phi tuyến và đuôi phân phối dày hiệu quả hơn so với các phương pháp truyền thống, từ đó giúp cải thiện đáng kể độ chính xác trong tính toán giá trị rủi ro.

3.5 Các bài nghiên cứu trước đó của phương pháp Copula

Theo nghiên cứu của Lei (2009), Copula có thể đo lường sự phụ thuộc đuôi trái, đuôi phải rất linh hoạt đối với mô hình tham số và phi tham số.


Lu, Tien và Zhang (2008) đã phân tích rùi ro tỷ giá hồi đoái bằng cách sử dụng hàm copula với giá trị cực hạng (extreme value). Họ tim thấy ba loại copula có thể ứng dụng để đo lường rủi ro ở đuôi và sự phụ thuộc đuôi đổi với chuỗi dữ liệu.
Chollete và cộng sự (2005), Arakelian và Dellaportas (2005) về việc sử dụng côug cụ copula để xem xét sự “lây lan” giữa các thị trường tải chính.
Frey và McNeil (2001), Schonbucher và Schubert (2001), Giesecke (2004) đã ứng dụng phương pháp copula trong việc đo lường rủi ro không trả được nợ (default risk). Ngoài ra, nghiên cứu của Duffie (2004) cho rằng phương pháp copula vẫn còn nhiều hạn chế trong việc đo lường rủi ro tín dụng.
Sukcharoen và Leatham (2017) sử dụng bộ dữ liệu (giá dầu thô, xăng và dầu đốt) của Hoa Kỳ giai đoạn 1986–2015 để nghiên cứu về việc phòng ngừa rủi ro sụt giá ở các nhà máy luyện dầu bằng phương pháp Vine Copula. Các nhà nghiên cứu trên đã đưa ra bằng chứng cho thấy mô hình Dvine Copula là lựa chọn tốt và an toàn để quản lý rủi ro sụt giá của các nhà máy ở Hoa Kỳ.
Gần đây nhất, Aloui và Aïssa (2016) đã nghiên cứu về mối quan hệ giữa giá dầu, chứng khoán và tỷ giá với cách tiếp cận dựa trên cơ sở Vine Copula và đã giải quyết được nút thắt trong việc nghiên cứu mối quan hệ đồng thời cùng lúc nhiều tài sản (High - Dimensional Distributions).
Tại Việt Nam, tiến sĩ Lê Văn Thứ đã sử dụng phương pháp Copula phân tích phản ứng của thị trường chứng khoán Việt Nam đối với biến động của thị trường chứng khoán quốc tế (2022).
Thạc sĩ Trần Thanh Tâm đã sử dụng phương pháp Copula để xem xét vai trò của vàng là kênh trú ẩn an toàn hay công cụ phòng ngừa rủi ro đối với đồng đô la Mỹ (2014).

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

library(readxl)
library(base)
data <- read_excel("C:/Users/DELL/Downloads/mohinh 1.1.xlsx")

VNI1 <- as.numeric(log(data$VNI))
TSX1 <- log(data$TSX)
Date <- data$DATE
adata <- data.frame(Date, VNI1, TSX1)

4.1 Thống kê mô tả

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(moments)
library(knitr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
tk1 <- adata %>% summarise(Min = min(VNI1),
            Max = max(VNI1),
            Mean = mean(VNI1),
            StDev = sd(VNI1),
            Skewness = skewness(VNI1),
            Kurtosis = kurtosis(VNI1))
tk2 <- adata %>% summarise(Min = min(TSX1),
            Max = max(TSX1),
            Mean = mean(TSX1),
            StDev = sd(TSX1),
            Skewness = skewness(TSX1),
            Kurtosis = kurtosis(TSX1))
m <- rbind(tk1,tk2)
rownames(m) <- c('VNI','S&P/TSX')
kable(m, format = 'pandoc', caption = ' Thống kê mô tả chuỗi lợi suất', table.attr = "style='width:100%;'") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed")): Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Thống kê mô tả chuỗi lợi suất
Min Max Mean StDev Skewness Kurtosis
VNI -0.0486002 0.0690762 -0.0001956 0.0124142 0.9736897 7.396153
S&P/TSX -0.1129446 0.1317613 -0.0002281 0.0110743 1.7215907 41.409712

  Bảng 1 cho thấy được kết quả thống kê mô tả của hai chuỗi lợi suất là chỉ số VNI và S&P/TSX lần lượt đại diện cho TTCK Việt Nam và TTCK Canada.Từ giá trị nhỏ nhất, giá trị lớn nhất và giá trijtrungj bình của hai chuỗi lợi suất có thể dàng nhận thấy. Tuy nhiên độ biến động của chỉ số VNI (0.0124142) được ghi nhận là lớn hơn S&P/TSX (0.0110743) cho thấy rằng TTCK Việt Nam đang chịu khá nhiều rủi ro. Bên cạnh đó hệ số Skewness của cả hai chuỗi đều lớn hơn 0(0.9736897 và 1.7215907) tức là đều lệch phía phải với hiện tượng là S&P/TSX có đuôi dài hơn. Sau cùng thì giá trị Kurrtosis của cả hai đều lớn hơn mức ba, cho thấy phân phối của hai chuỗi có đuôi dài và đỉnh nhọn hơn phân phối chuẩn.

library(ggplot2)
library(tidyr)
pivot_longer(adata[,2:3], cols = everything(), names_to = "TSLN", values_to = "Value") %>% ggplot(aes(x = TSLN, y = Value)) +
  geom_boxplot(fill = "lightpink", color = "darkblue") +
  theme_minimal() +
  labs(title = " Biểu đồ hộp của TSLN VNI và S&P/TSX",
       x = "Chỉ số",
       y = "Tỷ suất sinh lợi")

Ta có thể trực quan hóa các mô tả cơ bản của hai chỉ số lợi suất thông qua biểu đồ hộp (Box-plot).

4.2 Biến động của chuỗi lợi suất VNI và S&P/TSX

library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
plot.zoo(adata$VNI1, main= "Hình 2: Biến động của tỷ suất lợi nhuận qua các ngày của VNI", ylab = "Tỷ suất sinh lợi", xlab = "Thời điểm quan sát")

library(zoo)
plot.zoo(adata$TSX1, main= "Hình 3: Biến động của tỷ suất lợi nhuận qua các ngày của S&P-TSX", ylab = "Tỷ suất sinh lợi", xlab = "Thời điểm quan sát")

Biến động của chuỗi tỷ suất sinh lợi ở chỉ số VNINDEX và chỉ số S&P/TSX trong giai đoạn 2018 - 7/2024 được trình bày ở bảng trên. Nhìn chung, chỉ số VNINDEX cho thấy mức độ dao động mạnh hơn chỉ số S&P/TSX, điều này chứng tỏ rằng rủi ro ở TTCK Việt Nam là lớn hơn rất nhiều so với TTCK Canada. ## 4.3 Kiểm định các giả thuyết

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(stats)

#Kiểm định tính dừng
adf_vni <- adf.test(adata$VNI1)
## Warning in adf.test(adata$VNI1): p-value smaller than printed p-value
adf_tsx <- adf.test(adata$TSX1)
## Warning in adf.test(adata$TSX1): p-value smaller than printed p-value
#Kiểm định phân phối chuẩn
jq_vni <- jarque.bera.test(adata$VNI1)
jq_tsx <- jarque.bera.test(adata$TSX1)
#Kiểm định tương quan chuỗi
lj_vni <- Box.test(adata$VNI1, lag =2, type = "Ljung-Box")
lj_tsx <- Box.test(adata$TSX1, lag =2, type = "Ljung-Box")
# Kiểm định hiệu ứng ARCH
library(rugarch)
## Loading required package: parallel
## 
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
## 
##     sigma
Avni <- autoarfima(adata$VNI1,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")

Atsx <- autoarfima(adata$TSX1,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")
library(FinTS)
re_vni <- Avni$fit@fit$residuals
re_tsx <- Atsx$fit@fit$residuals
ar_vni <- ArchTest(re_vni, lags = 1)
ar_tsx <- ArchTest(re_tsx, lags = 1)
#Trình bày kết quả
test_result <- data.frame(
  Test = c("Tính Dừng", "Phân phối Chuẩn", "Tương Quan Chuỗi","Hiệu ứng ARCH"),
  P_value_VNI = c(adf_vni$p.value, jq_vni$p.value, lj_vni$p.value, ar_vni$p.value),
  P_value_S_P_TSX = c(adf_tsx$p.value, jq_tsx$p.value, lj_tsx$p.value, ar_tsx$p.value))
library(kableExtra)
kable(test_result, 
  caption = "Kết quả các kiểm định", 
  format = 'pandoc') %>% kable_styling(
            bootstrap_options = c("striped", "hover", "condensed"), 
            full_width = F)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Kết quả các kiểm định
Test P_value_VNI P_value_S_P_TSX
Tính Dừng 0.0100000 0.01
Phân phối Chuẩn 0.0000000 0.00
Tương Quan Chuỗi 0.0194895 0.00
Hiệu ứng ARCH 0.0000000 0.00
  • KIểm định tính dừng: Kiểm định ADF(Augmented Dickey–Fuller) được sử dụng để kiểm tra xem một chuỗi thời gian có tính dừng hay không. Giả thiết H0 là chuỗi thời gian không có tính dừng.
  • Kiểm định phân phối chuẩn: Kiểm định Jarque-Bera là một phương pháp thống kê được sử dụng để kiểm tra xem một mẫu dữ liệu có tuân theo phân phối chuẩn hay không. Nó dựa trên việc kiểm tra các đặc trưng thống kê của mẫu dữ liệu, như độ lệch và độ nhọn, để nhận xét về tính chuẩn của phân phối. Giả thiết H0 tuân theo phân phối chuẩn.
  • Kiểm định tương quan chuỗi: Kiểm định Ljung-Box được sử dụng để kiểm tra tính tương quan tự do của một chuỗi thời gian và xác định xem chuỗi có phụ thuộc tương quan không gian hay không. Giả thiết H0 là không có tương quan chuỗi Ljung-Box.
    Hiệu ứng ARCH: Kiểm định ARCH-LM được sử dụng để xác định xem có sự tồn tại của hiệu ứng ARCH trong biến động của chuỗi thời gian hay không. Giả thiết H0 là không có hiệu ứng ARCH trong dữ liệu. Giá trị p-value càng nhỏ, càng chứng tỏ tồn tại bằng chứng về hiệu ứng ARCH.
    Thông qua bảng 2, ta có thể thấy rằng cả hai chuỗi lợi suất đều thoả các giả thuyết khi đều có p_value nhỏ hơn mức ý nghĩa 5% rằng cả hai chuỗi đều là chuỗi dừng và không tuân theo phan phối chuẩn cũng như không có hiện tượng tương quan chuỗi và có hiệu ứng ARCH trong hai chuỗi.

4.4 Hệ số tương quan

Hệ số tương quan tuyến tính Pearson
Hệ số tương quan tuyến tính Pearson có vai trò quan trọng trong thống kê và phân tích dữ liệu. Hệ số tương quan Pearson là một số đo mức độ tương quan giữa hai biến số định lượng, cho biết mối quan hệ tuyến tính giữa chúng. được ứng dụng rộng rãi trong nhiều lĩnh vực như kinh tế, xã hội học, tâm lý học và khoa học tự nhiên để hiểu rõ hơn về mối quan hệ giữa các biến số.

test <- cor.test(adata$VNI1, adata$TSX1)
test
## 
##  Pearson's product-moment correlation
## 
## data:  adata$VNI1 and adata$TSX1
## t = 6.4743, df = 1447, p-value = 1.301e-10
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1173040 0.2174054
## sample estimates:
##       cor 
## 0.1677872

Giá trị p-value rất nhỏ (< 0.05), điều này cho thấy tồn tại bằng chứng để bác bỏ giả thuyết H0 (không có tương quan). Hệ số tương quan Pearson là 0.1677872, tức là mức tương quan yếu nhưng vẫn có ý nghĩa thống kê.
Ma trận tương quan của VNI và S&P/TSX

res <- cor(adata[,2:3])
round(res, 2)
##      VNI1 TSX1
## VNI1 1.00 0.17
## TSX1 0.17 1.00

Nhìn vào kết quả, ta thấy mức độ tương quan giữa VNI và S&P/TSX là 0.17 > 0, vậy thì 2 biến này có mối quan hệ thuận, nếu biến S&P/TSX tăng thì VNI cũng tăng. BIểu đồ tương quan (correlation plot)

library(corrplot)
## corrplot 0.92 loaded
corrplot(res, type = "upper", order = "hclust", 
         tl.col = "darkblue", tl.srt = 45)

Biểu đồ tương quan (correlation plot) giúp chúng ta có thể sự tương quan của thị trường chứng khoán của 2 nước Việt Nam và Canada. dựa vừa mô hình thì chúng ta thấy cả 2 thị trường này có sự tương quan chặt chẽ với nhau, nhìn chung thì hệ số hồi quy dương.

library(PerformanceAnalytics)
## Loading required package: xts
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## Attaching package: 'PerformanceAnalytics'
## The following objects are masked from 'package:moments':
## 
##     kurtosis, skewness
## The following object is masked from 'package:graphics':
## 
##     legend
chart.Correlation(adata[,2:3], histogram=TRUE, pch=19)
## Warning in par(usr): argument 1 does not name a graphical parameter

Kết quả tính toán trên cho thấy hệ số tương quan tuyến tính Pearson cho thấy mức độ tương quan lớn nhất với giá trị xấp xỉ 0.17. tuy nhiên hệ số Pearson được thực hiện trên cơ sở rằng các chuỗi lợi suất tuân theo phân phối chuẩn. Vì vậy hệ số tương quan này chưa thực sự minh bạch được sự sự tương quan giữa hai thị trường chứng khoán khác nhau.

library(ggplot2)
library(ggcorrplot)
df <- dplyr::select_if(adata[,2:3], is.numeric)
r <- cor(df, use="complete.obs")
ggcorrplot(r)

Biểu đồ Scatter
Để có thể dễ dàng xác định rõ xu hướng biến động cùng với nhau giữa hai TTCK, chúng ta sẽ sử dụng biểu đồ Scatter với đường hồi quy để biểu diễn mối liên hệ tương quan giữa hai TTCK.

adata %>% ggplot(aes(VNI1, TSX1)) +
              geom_point(col = 'orange',shape = TRUE) + 
              geom_smooth(method = 'lm',se = T, col = 'darkblue') +  
              labs(title = 'Biểu đồ Scatter TSLN của VNI và S&P/TSX', x = 'VNI', y = 'S&P/TSX')
## `geom_smooth()` using formula = 'y ~ x'

Dựa vào hình trên, có thể thấy rằng hều hết các điểm nằm tập trung nhiều nhất gần vị trí 0 và các điểm khác nằm rải rác xung quanh. Với việc đường hồi quy có dấu hiệu đi lên cho thấy mối tương quan dương của hai chuỗi lợi suất nhưng vãn có sự biến động giaữa các giá trị của hai chuỗi lợi suất VNI và S&P/TSX.

4.5 Lựa chọn mô hình biên tối ưu

4.5.1 Mô hình ARMA tối ưu

library(lmtest)
library(fGarch)
## NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
## attached to the search() path when 'fGarch' is attached.
## 
## If needed attach them yourself in your R script by e.g.,
##         require("timeSeries")
## 
## Attaching package: 'fGarch'
## The following objects are masked from 'package:PerformanceAnalytics':
## 
##     ES, VaR
library(rugarch)
arma_vni <- autoarfima(adata[, 2],ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")$fit
arma_vni
## 
## *----------------------------------*
## *          ARFIMA Model Fit        *
## *----------------------------------*
## Mean Model   : ARFIMA(2,0,2)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##        Estimate  Std. Error  t value Pr(>|t|)
## ar1    0.000000          NA       NA       NA
## ar2   -0.462407     0.21233  -2.1777 0.029427
## ma1    0.066472     0.02391   2.7801 0.005434
## ma2    0.499718     0.20310   2.4605 0.013875
## sigma  0.012367     0.00023  53.8332 0.000000
## 
## Robust Standard Errors:
##        Estimate  Std. Error  t value Pr(>|t|)
## ar1    0.000000          NA       NA       NA
## ar2   -0.462407    0.260079  -1.7779 0.075412
## ma1    0.066472    0.033076   2.0097 0.044467
## ma2    0.499718    0.238970   2.0911 0.036516
## sigma  0.012367    0.000410  30.1495 0.000000
## 
## LogLikelihood : 4309.021 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.9421
## Bayes        -5.9275
## Shibata      -5.9421
## Hannan-Quinn -5.9366
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                      0.0109  0.9169
## Lag[2*(p+q)+(p+q)-1][11]    5.2493  0.8974
## Lag[4*(p+q)+(p+q)-1][19]   12.3392  0.1607
## 
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic   p-value
## Lag[1]                      45.39 1.618e-11
## Lag[2*(p+q)+(p+q)-1][2]     68.37 0.000e+00
## Lag[4*(p+q)+(p+q)-1][5]    127.95 0.000e+00
## 
## 
## ARCH LM Tests
## ------------------------------------
##              Statistic DoF P-Value
## ARCH Lag[2]      77.32   2       0
## ARCH Lag[5]     117.31   5       0
## ARCH Lag[10]    151.94  10       0
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.2027
## Individual Statistics:            
## ar2   0.3948
## ma1   0.0466
## ma2   0.3847
## sigma 0.6731
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.07 1.24 1.6
## Individual Statistic:     0.35 0.47 0.75
## 
## 
## Elapsed time : 0.03698707
 arma_tsx <-autoarfima(adata[,3], ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")$fit
arma_tsx
## 
## *----------------------------------*
## *          ARFIMA Model Fit        *
## *----------------------------------*
## Mean Model   : ARFIMA(2,0,2)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##        Estimate  Std. Error  t value Pr(>|t|)
## ar1    0.409216    0.127518   3.2091 0.001332
## ar2   -0.459928    0.084524  -5.4414 0.000000
## ma1   -0.541398    0.114905  -4.7117 0.000002
## ma2    0.613678    0.076657   8.0055 0.000000
## sigma  0.010853    0.000202  53.8331 0.000000
## 
## Robust Standard Errors:
##        Estimate  Std. Error  t value Pr(>|t|)
## ar1    0.409216    0.286530   1.4282 0.153240
## ar2   -0.459928    0.239535  -1.9201 0.054847
## ma1   -0.541398    0.221418  -2.4451 0.014480
## ma2    0.613678    0.162447   3.7777 0.000158
## sigma  0.010853    0.001899   5.7142 0.000000
## 
## LogLikelihood : 4498.221 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -6.2018
## Bayes        -6.1836
## Shibata      -6.2018
## Hannan-Quinn -6.1950
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                     0.05796  0.8097
## Lag[2*(p+q)+(p+q)-1][11]  40.03987  0.0000
## Lag[4*(p+q)+(p+q)-1][19]  64.78468  0.0000
## 
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      238.6       0
## Lag[2*(p+q)+(p+q)-1][2]     375.2       0
## Lag[4*(p+q)+(p+q)-1][5]     667.3       0
## 
## 
## ARCH LM Tests
## ------------------------------------
##              Statistic DoF P-Value
## ARCH Lag[2]      363.4   2       0
## ARCH Lag[5]      404.5   5       0
## ARCH Lag[10]     546.1  10       0
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.4316
## Individual Statistics:             
## ar1   0.26128
## ar2   0.05111
## ma1   0.22739
## ma2   0.04805
## sigma 1.12901
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.28 1.47 1.88
## Individual Statistic:     0.35 0.47 0.75
## 
## 
## Elapsed time : 0.04677796
 #Trình bày kết quả
arma_model <- data.frame(
  rate = c("VNI", "S&P/TSX"),
  Format = c("ARMA(2,2)", "ARMA(2,2)"))
kable(arma_model, col.names = c("Chuỗi lợi suất", "Dạng mô hình ARMA"), 
      caption = " Mô hình ARMA tối ưu", format = "pandoc", 
      table.attr = "style='width:50%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed")): Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Mô hình ARMA tối ưu
Chuỗi lợi suất Dạng mô hình ARMA
VNI ARMA(2,2)
S&P/TSX ARMA(2,2)

Dựa trên tiêu chuẩn giá trị AIC nhỏ nhất, kết quả thu được dạng mô hình ARMA cho tỷ suất sinh lợi của VNI và S&P/TSX lần lượt là mô hình ARMA(2,2) và ARMA(2,2). Điều này sẽ củng cố cho các bước tiếp theo để ướng lượng mô huifnh biên phù hợp nhất. ### 4.5.2 Ước lượng mô hình ARMA-GJR-GARCH tối ưu

4.5.2.1 Mô hình ARMA-GJR-GARCH tối ưu cho chuỗi lợi suất VNI

#GJR-GARCH(1,1)VNI
vni.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
 vni.garch11n.fit <- ugarchfit(spec = vni.garch11n.spec, data = adata[,2])
 vni.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
 vni.garch11t.fit <- ugarchfit(spec = vni.garch11t.spec, data = adata[, 2])

 vni.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
 vni.garch11st.fit <- ugarchfit(spec = vni.garch11st.spec, data = adata[, 2])

 vni.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
 vni.garch11g.fit <- ugarchfit(spec = vni.garch11g.spec, data = adata[, 2])

 vni.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vni.garch11sg.fit <- ugarchfit(spec = vni.garch11sg.spec, data = adata[, 2])

# GJR-GARCH(1,2)VNI

vni.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
 vni.garch12n.fit <- ugarchfit(spec = vni.garch12n.spec, data = adata[, 2])

vni.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
 vni.garch12t.fit <- ugarchfit(spec = vni.garch12t.spec, data = adata[, 2])

 vni.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
 vni.garch12st.fit <- ugarchfit(spec = vni.garch12st.spec, data = adata[, 2])

 vni.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
 vni.garch12g.fit <- ugarchfit(spec = vni.garch12g.spec, data = adata[, 2])

 vni.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
 vni.garch12sg.fit <- ugarchfit(spec = vni.garch12sg.spec, data = adata[, 2])

 #GJR-GARCH(2,1)VNI 
 
 vni.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
 vni.garch21n.fit <- ugarchfit(spec = vni.garch21n.spec, data = adata[,2])

 vni.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
 vni.garch21t.fit <- ugarchfit(spec = vni.garch21t.spec, data = adata[, 2])

 vni.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
 vni.garch21st.fit <- ugarchfit(spec = vni.garch21st.spec, data = adata[, 2])

 vni.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model

= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
 vni.garch21g.fit <- ugarchfit(spec = vni.garch21g.spec, data = adata[, 2])

 vni.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
 vni.garch21sg.fit <- ugarchfit(spec = vni.garch21sg.spec, data = adata[, 2])

 #GJR-GARCH(2,2)VNI
 
vni.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
 vni.garch22n.fit <- ugarchfit(spec = vni.garch22n.spec, data = adata[,2])
 vni.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
 vni.garch22t.fit <- ugarchfit(spec = vni.garch22t.spec, data = adata[, 2])

 vni.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
 vni.garch22st.fit <- ugarchfit(spec = vni.garch22st.spec, data = adata[, 2])

 vni.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model
= list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
 vni.garch22g.fit <- ugarchfit(spec = vni.garch22g.spec, data = adata[, 2])

 vni.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
 vni.garch22sg.fit <- ugarchfit(spec = vni.garch22sg.spec, data = adata[, 2])

 vni.model.list <- list(
   garch11n = vni.garch11n.fit, 
   garch11t = vni.garch11t.fit, 
   garch11st = vni.garch11st.fit,
garch11g = vni.garch11g.fit, 
garch11sg = vni.garch11sg.fit,
 garch12n = vni.garch12n.fit, 
garch12t = vni.garch12t.fit, 
garch12st = vni.garch12st.fit, 
garch12g = vni.garch12g.fit, 
garch12sg = vni.garch12sg.fit,
 garch21n = vni.garch21n.fit,
garch21t = vni.garch21t.fit, 
garch21st = vni.garch21st.fit, 
garch21g = vni.garch21g.fit, 
garch21sg = vni.garch21sg.fit,
 garch22n = vni.garch22n.fit, 
garch22t = vni.garch22t.fit,
garch22st = vni.garch22st.fit, 
garch22g = vni.garch22g.fit, 
garch22sg = vni.garch22sg.fit)

 vni.info.mat <- sapply(vni.model.list, infocriteria)
 rownames(vni.info.mat) <- rownames(infocriteria(vni.garch11n.fit))
vni.info.mat
##               garch11n  garch11t garch11st  garch11g garch11sg  garch12n
## Akaike       -6.230188 -6.306954 -6.308575 -6.317057 -6.318185 -6.230147
## Bayes        -6.197401 -6.270525 -6.268502 -6.280628 -6.278113 -6.193717
## Shibata      -6.230264 -6.307049 -6.308689 -6.317152 -6.318299 -6.230241
## Hannan-Quinn -6.217953 -6.293360 -6.293620 -6.303463 -6.303231 -6.216552
##               garch12t garch12st  garch12g garch12sg  garch21n  garch21t
## Akaike       -6.306063 -6.307685 -6.316154 -6.317299 -6.229149 -6.304775
## Bayes        -6.265990 -6.263969 -6.276081 -6.273584 -6.189077 -6.261059
## Shibata      -6.306177 -6.307820 -6.316268 -6.317435 -6.229263 -6.304910
## Hannan-Quinn -6.291108 -6.291371 -6.301199 -6.300985 -6.214195 -6.288461
##              garch21st  garch21g garch21sg  garch22n  garch22t garch22st
## Akaike       -6.306647 -6.315088 -6.316235 -6.227770 -6.303687 -6.305267
## Bayes        -6.259289 -6.271373 -6.268877 -6.184054 -6.256329 -6.254266
## Shibata      -6.306806 -6.315224 -6.316394 -6.227905 -6.303846 -6.305451
## Hannan-Quinn -6.288974 -6.298774 -6.298562 -6.211456 -6.286014 -6.286234
##               garch22g garch22sg
## Akaike       -6.313708 -6.314854
## Bayes        -6.266349 -6.263853
## Shibata      -6.313867 -6.315039
## Hannan-Quinn -6.296035 -6.295822
 vni.inds <- which(vni.info.mat == min(vni.info.mat), arr.ind=TRUE)
 model.vni <- colnames(vni.info.mat)[vni.inds[,2]]
 model.vni
## [1] "garch11sg"

Dựa trên tiêu chuẩn giá trị AIC nhỏ nhất, BIC, SIC và HQIC. kết quả thu được dạng mô hình phân phối biên cho chuỗi lợi suất VNI là mô hình ARMA(2,2)-GJR-GARCH(1,1)-sGED.

4.5.2.2 Mô hình ARMA-GJR-GARCH cho chuỗi lợi suất SP_TSX

#GJR-GARCH(1,1)SP_TSX 
 tsx.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
tsx.garch11n.fit <- ugarchfit(spec = tsx.garch11n.spec, data = adata[,3])
tsx.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
tsx.garch11t.fit <- ugarchfit(spec = tsx.garch11t.spec, data = adata[, 3])
tsx.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2,2), include.mean = TRUE), distribution.model = "sstd")
 tsx.garch11st.fit <- ugarchfit(spec = tsx.garch11st.spec, data = adata[, 3])
 tsx.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
tsx.garch11g.fit <- ugarchfit(spec = tsx.garch11g.spec, data = adata[, 3])
 tsx.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
tsx.garch11sg.fit <- ugarchfit(spec = tsx.garch11sg.spec, data = adata[, 3])

#GJR-GARCH(1,2)SP_TSX
 
tsx.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
tsx.garch12n.fit <- ugarchfit(spec = tsx.garch12n.spec, data = adata[,3])
tsx.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
tsx.garch12t.fit <- ugarchfit(spec = tsx.garch12t.spec, data = adata[, 3])
tsx.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
tsx.garch12st.fit <- ugarchfit(spec = tsx.garch12st.spec, data = adata[, 3])
tsx.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
tsx.garch12g.fit <- ugarchfit(spec = tsx.garch12g.spec, data = adata[, 3])

tsx.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
tsx.garch12sg.fit <- ugarchfit(spec = tsx.garch12sg.spec, data = adata[, 3])

#  GJR-GARCH(2,1)SP_TSX

tsx.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
tsx.garch21n.fit <- ugarchfit(spec = tsx.garch21n.spec, data = adata[,3])
tsx.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2,2), include.mean = TRUE), distribution.model = "std")
 tsx.garch21t.fit <- ugarchfit(spec = tsx.garch21t.spec, data = adata[, 3])
 tsx.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
 tsx.garch21st.fit <- ugarchfit(spec = tsx.garch21st.spec, data = adata[, 3])
 tsx.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
tsx.garch21g.fit <- ugarchfit(spec = tsx.garch21g.spec, data = adata[, 3])
 tsx.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
tsx.garch21sg.fit <- ugarchfit(spec = tsx.garch21sg.spec, data = adata[, 3])
# GJR-GARCH(2,2)SP_TSX
 tsx.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2,2), include.mean = TRUE), distribution.model = "norm")
tsx.garch22n.fit <- ugarchfit(spec = tsx.garch22n.spec, data = adata[, 3])
tsx.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
tsx.garch22t.fit <- ugarchfit(spec = tsx.garch22t.spec, data = adata[, 3])
tsx.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
tsx.garch22st.fit <- ugarchfit(spec = tsx.garch22st.spec, data = adata[, 3])
tsx.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
tsx.garch22g.fit <- ugarchfit(spec = tsx.garch22g.spec, data = adata[, 3])
tsx.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
tsx.garch22sg.fit <- ugarchfit(spec = tsx.garch22sg.spec, data = adata[, 3])
tsx.model.list <- list(
   garch11n = tsx.garch11n.fit, 
   garch11t = tsx.garch11t.fit, 
   ggarch11st = tsx.garch11st.fit,
garch11g = tsx.garch11g.fit, 
garch11sg = tsx.garch11sg.fit,
garch12n = tsx.garch12n.fit, 
garch12t = tsx.garch12t.fit, 
garch12st = tsx.garch12st.fit, 
garch12g = tsx.garch12g.fit, 
garch12sg = tsx.garch12sg.fit,
 garch21n = tsx.garch21n.fit,
garch21t = tsx.garch21t.fit, 
garch21st = tsx.garch21st.fit, 
garch21g = tsx.garch21g.fit, 
garch21sg = tsx.garch21sg.fit,
garch22n = tsx.garch22n.fit, 
garch22t = tsx.garch22t.fit,
garch22st = tsx.garch22st.fit, 
garch22g = tsx.garch22g.fit, 
garch22sg = tsx.garch22sg.fit)

 tsx.info.mat <- sapply(tsx.model.list, infocriteria)
 rownames(tsx.info.mat) <- rownames(infocriteria(tsx.garch11n.fit))
tsx.info.mat
##               garch11n  garch11t ggarch11st  garch11g garch11sg  garch12n
## Akaike       -6.976754 -6.993167  -6.992872 -6.989679 -6.988502 -6.975374
## Bayes        -6.943967 -6.956738  -6.952800 -6.953250 -6.948430 -6.938944
## Shibata      -6.976831 -6.993261  -6.992986 -6.989774 -6.988617 -6.975468
## Hannan-Quinn -6.964519 -6.979572  -6.977918 -6.976084 -6.973548 -6.961779
##               garch12t garch12st  garch12g garch12sg  garch21n  garch21t
## Akaike       -6.991787 -6.990602 -6.988299 -6.987122 -6.974435 -6.991059
## Bayes        -6.951714 -6.946887 -6.948226 -6.943407 -6.934363 -6.947343
## Shibata      -6.991901 -6.990738 -6.988413 -6.987258 -6.974549 -6.991194
## Hannan-Quinn -6.976832 -6.974289 -6.973345 -6.970808 -6.959481 -6.974745
##              garch21st  garch21g garch21sg  garch22n  garch22t garch22st
## Akaike       -6.990676 -6.987340 -6.986132 -6.978739 -6.994935 -6.988478
## Bayes        -6.943318 -6.943625 -6.938774 -6.935024 -6.947577 -6.937477
## Shibata      -6.990835 -6.987476 -6.986291 -6.978875 -6.995094 -6.988662
## Hannan-Quinn -6.973003 -6.971026 -6.968459 -6.962425 -6.977262 -6.969445
##               garch22g garch22sg
## Akaike       -6.990025 -6.990181
## Bayes        -6.942667 -6.939180
## Shibata      -6.990184 -6.990366
## Hannan-Quinn -6.972352 -6.971149
tsx.inds <- which(tsx.info.mat == min(tsx.info.mat), arr.ind = TRUE)
 model.tsx <- colnames(tsx.info.mat)[tsx.inds[, 2]]
model.tsx
## [1] "garch22t"

Dựa trên tiêu chuẩn giá trị AIC nhỏ nhất, BIC, SIC và HQIC. kết quả thu được dạng mô hình phân phối biên cho chuỗi lợi suất S&P/TSX là mô hình ARMA(2,2)-GJR-GARCH(2,2)-Student t.

4.5.2.3 Tham số ước lượng mô hình biên phù hợp nhất:

Chuỗi lợi suất VNI

#Trình bày kết quả

extract_garch_results <- function(fit) {
  coef <- coef(fit)
  se <- fit@fit$se.coef
  pvalues <- 2 * (1 - pnorm(abs(fit@fit$tval))) # tính giá trị p từ giá trị t
  results <- cbind(coef, se, pvalues)
  colnames(results) <- c("Estimate", "Std. Error", "Pr(>|z|)")
  return(results)
}

fit1 <- extract_garch_results(vni.garch11sg.fit)
fit2 <- extract_garch_results(tsx.garch22t.fit)

kable(as.data.frame(fit1), 
  caption = "Kết quả mô hình ARMA(2,2)-GJR-Garch(1,1)-sGED của VNI", 
  format = 'pandoc') %>% kable_styling(
            bootstrap_options = c("striped", "hover", "condensed"), 
            full_width = F)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Kết quả mô hình ARMA(2,2)-GJR-Garch(1,1)-sGED của VNI
Estimate Std. Error Pr(>|z|)
mu -0.0010324 0.0002018 0.0000003
ar1 -0.1303470 0.0234820 0.0000000
ar2 -0.0991451 0.0860985 0.2495142
ma1 0.1790779 0.0248438 0.0000000
ma2 0.1449769 0.0850796 0.0883786
omega 0.0000037 0.0000032 0.2475227
alpha1 0.0203887 0.0149638 0.1730282
beta1 0.8664353 0.0295788 0.0000000
gamma1 0.2160984 0.0405266 0.0000001
skew 1.0552195 0.0242888 0.0000000
shape 1.1513016 0.0578357 0.0000000

Bảng 6 kết quả mô hình ARMA(2,2)-GJR-Garch(1,1)-sGED cho chuỗi lợi suất chỉ số VNI cho thấy một số đặc điểm quan trọng về cấu trúc và động thái của dữ liệu.

  • Tham số mu: là giá trị trung bình của chuỗi lợi suất sau khi đã loại bỏ ảnh hưởng của các thành phần AR và MA.Giá trị rất nhỏ và âm cho thấy mức trung bình của biến đổi trong một khoảng thời gian là không lớn

  • Tham số ar1:Hệ số âm cho thấy có một sự tương quan ngược chiều giữa giá trị hiện tại và giá trị của kỳ trước.

  • Tham số ar2: Không có ý nghĩa thống kê vì p_value lớn hơn mức ý nghĩa 5%.

  • Tham số ma1:Hệ số dương chỉ ra rằng có một sự kiện tích cực của kỳ trước làm cho chuỗi lợi suất hiện tại tăng theo.

  • Tham số ma2:Không có ý nghĩa thống kê vì p_value lớn hơn mức ý nghĩa 5%.

  • Tham số omega: tuy không có mức ý nghĩa thống kê, nhưng giá trị được ước lượng (0.0000037) cho thấy mức độ biến động cơ bản của chuỗi lợi suất là t, phản ánh rằng trong trường hợp không có cú sốc lớn, lợi suất có xu hướng ổn định với ít biến động.

  • Tham số alpha1: tuy giá trị thống kê không cao, nhưng hệ số ước lượng là dương cho thấy rằng cú sốc ở kỳ trước không có tác động đáng kể đến sự biến động hiện tại.

  • Tham số beta1:Giá trị ước lượng là 0.8664353, có ý nghĩa thống kê cao, cho thấy phương sai điều kiện có sự phụ thuộc lớn vào giá trị của chính nó ở kỳ trước.

  • Tham số gamma1:Giá trị ước lượng là 0.2160984, có ý nghĩa thống kê cao, cho thấy sự hiện diện của hiệu ứng đòn bẩy trong chuỗi lợi suất.

  • Tham số skew: Giá trị ước lượng củalà 1.0552195, cho thấy Phân phối có đuôi bên phải dài hơn và trọng tâm lệch về bên trái, ngụ ý rằng sự biến động tiêu cực có khả năng xảy ra cao hơn.

  • Tham số shape:Giá trị ước lượng của là 1.1513016,có ý nghĩa thống kê rất cao tuy nhiên có khả năng xuất hiện nhiều biến động lớn và không bình thường.

kable(as.data.frame(fit2), 
  caption = "Kết quả mô hình ARMA(2,2)-GJR-Garch(2,2)-Student t của S&P/TSX", 
  format = 'pandoc') %>% kable_styling(
            bootstrap_options = c("striped", "hover", "condensed"), 
            full_width = F)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Kết quả mô hình ARMA(2,2)-GJR-Garch(2,2)-Student t của S&P/TSX
Estimate Std. Error Pr(>|z|)
mu -0.0009092 0.0001600 0.0000000
ar1 0.8056976 0.1011678 0.0000000
ar2 -0.9298446 0.1225249 0.0000000
ma1 -0.8018872 0.0914916 0.0000000
ma2 0.9505605 0.0886974 0.0000000
omega 0.0000039 0.0000023 0.0900501
alpha1 0.0508988 0.0234557 0.0300069
alpha2 0.0450336 0.0231578 0.0518180
beta1 0.0000003 0.0713797 0.9999968
beta2 0.6258906 0.0702138 0.0000000
gamma1 0.2005350 0.0571991 0.0004551
gamma2 0.3538185 0.0650298 0.0000001
shape 10.4085994 2.4022373 0.0000147

Bảng 7: Kết quả mô hình ARMA(2,2)-GJR-Garch(2,2)-Student t chỉ số S&P/TSX cho thấy một số đặc điểm quan trọng về cấu trúc và động thái của dữ liệu.

  • Tham số mu: là giá trị trung bình của chuỗi lợi suất sau khi đã loại bỏ ảnh hưởng của các thành phần AR và MA.Giá trị rất nhỏ và âm cho thấy mức trung bình của biến đổi trong một khoảng thời gian là không lớn.

  • Tham số ar1:Hệ số dương cho thấy ho thấy ảnh hưởng tích cực của giá trị trước đó lên chuỗi lợi suất hiện tại.

  • Tham số ar2: Hệ số âm cho thấy có một sự tương quan ngược chiều giữa giá trị hiện tại và giá trị của kỳ trước.

  • Tham số ma1:Hệ số âm chỉ ra rằng có một sự kiện tiêu cực của kỳ trước làm cho chuỗi lợi suất hiện tại giảm đi.

  • Tham số ma2:Hệ số dương chỉ ra rằng có một sự kiện tích cực của hai kỳ trước làm cho chuỗi lợi suất hiện tại tăng theo.

  • Tham số omega: tuy không có mức ý nghĩa thống kê, nhưng giá trị được ước lượng (0.0000039) cho thấy mức độ biến động cơ bản của chuỗi lợi suất là t, phản ánh rằng trong trường hợp không có cú sốc lớn, lợi suất có xu hướng ổn định với ít biến động.

  • Tham số alpha1: tuy giá trị thống kê không cao, nhưng hệ số ước lượng là dương cho thấy rằng cú sốc ở kỳ trước không có tác động đáng kể đến sự biến động hiện tại.

  • Tham số beta1:Giá trị ước lượng rất nhỏ, không có mức ý nghĩa thống kê, cho thấy biến động của kỳ trước không có tác động đáng kể đến biến động hiện tại trong chuỗi lợi suất S&P/TSX.

  • Tham số gamma1:Giá trị ước lượng là 0.2005350, có ý nghĩa thống kê cao, cho thấy sự hiện diện của hiệu ứng đòn bẩy trong chuỗi lợi suất.

  • Tham số gamma2: có giá trị ước lượng là 0.3538185, cho thấy rằng biến động hiện tại sẽ tăng lên đáng kể nếu có cú sốc tiêu cực trong kỳ trước đó.

  • Tham số shape:Giá trị ước lượng của là 10.4085994 cho thấy phân phối Student t có đuôi dày hơn so với phân phối chuẩn,có ý nghĩa thống kê rất cao và có khả năng mô hình hóa các cú sốc lớn, nhưng không quá cực đoan như khi độ tự do quá thấp.

4.5.3 Kiểm định độ phụ thuộc của mô hình biên

 # Trích xuất chuỗi phần dư  của chuỗi VNI và  SP_TSX
 tsx.res <- residuals(tsx.garch22t.fit)/sigma(tsx.garch22t.fit)
 fitdist(distribution = "std", tsx.res, control = list())$par
##          mu       sigma       shape 
##  0.02500873  1.01200112 10.02507671
t <- pdist(distribution = "std", q = tsx.res, mu = 0.02500873 , sigma = 1.01200112, shape = 10.02507671  )
vni.res <- residuals(vni.garch11sg.fit)/sigma(vni.garch11sg.fit)
 fitdist(distribution = "sged", vni.res, control = list())$par
## Warning in .safefunx(tmpv, .solnp_fun, .env, ...): 
## solnp-->warning: Inf detected in function call...check your function
##         mu      sigma       skew      shape 
## 0.02677876 1.01130189 1.07427893 1.14587528
 v = pdist("sged",vni.res, mu = 0.02677876, sigma = 1.01130189, skew = 1.07427893 , shape = 1.14587528  )
library(dplyr)
library(kableExtra)
# Kiem dinh Anderson-Darling

library(ADGofTest)
ad_tsx <- ad.test(t, punif)
ad_vni <- ad.test(v, punif)

# Kiểm định Cramer-von Mises
library(goftest)
## 
## Attaching package: 'goftest'
## The following object is masked from 'package:ADGofTest':
## 
##     ad.test
cvm_tsx <- cvm.test(t, punif)
cvm_vni <-cvm.test(v, punif)

#Kiểm định ks-test
ks_tsx <- ks.test(t, punif)
ks_vni <- ks.test(v, punif)

#Trình bày kết quả
mytest <- data.frame(test = c('P_value VNI' ,'P_value S&P-TSX'),
                    AD = c(ad_vni$p.value, ad_tsx$p.value),
                    CVM = c(cvm_vni$p.value, cvm_tsx$p.value),
                   KS = c(ks_vni$p.value,ks_tsx$p.value))

kable(mytest, 
  caption = " Kết quả các kiểm định cho mô hình phân phối biên", col.names = c("Các kiểm định","Anderson-Darling", "Cramer-von Mises","Kolmogorov-Smirnov"), 
  format = 'pandoc') %>% kable_styling(
            bootstrap_options = c("striped", "hover", "condensed"), 
            full_width = F)
## Warning in kable_styling(., bootstrap_options = c("striped", "hover",
## "condensed"), : Please specify format in kable. kableExtra can customize either
## HTML or LaTeX outputs. See https://haozhu233.github.io/kableExtra/ for details.
Kết quả các kiểm định cho mô hình phân phối biên
Các kiểm định Anderson-Darling Cramer-von Mises Kolmogorov-Smirnov
P_value VNI 0.8143500 0.8895588 0.9429512
P_value S&P-TSX 0.9785317 0.9379209 0.9548494

Các giá trị P_value cao và lớn hơn mức ý nghĩa từ cả ba kiểm định cho thấy rằng không có bằng chứng thống kê để bác bỏ giả thuyết rằng dữ liệu của các chuỗi tỷ suất VNI và S&P/TSX tuân theo phân phối được giả định trong mô hình. Những kết quả này củng cố kết luận rằng mô hình Copula sẽ là phù hợp với dữ liệu của hai biến này.

4.6 ƯỚC LƯỢNG THAM SỐ COPULA

library(VineCopula)
a <- BiCopSelect(t, v, familyset= 1:9, selectioncrit="AIC",indeptest = FALSE, level = 0.05)
a
## Bivariate copula: t (par = 0.08, par2 = 10.2, tau = 0.05)
 Stu <- BiCopEst(t, v, family = 2, method = "mle", se = T, max.df = 10)
 summary(Stu)
## Family
## ------ 
## No:    2
## Name:  t
## 
## Parameter(s)
## ------------
## par:  0.08  (SE = 0.03)
## par2: 10  (SE = NA)
## Dependence measures
## -------------------
## Kendall's tau:    0.05 (empirical = 0.04, p value = 0.01)
## Upper TD:         0.01 
## Lower TD:         0.01 
## 
## Fit statistics
## --------------
## logLik:  12.62 
## AIC:    -21.24 
## BIC:    -10.68

Khi thực hiện ước lượng Copula ta nhận được kết quả ước lượng là họ Copula Student-t với các giá trị par = 0.08, par2 = 10.2 và tau= 0.05.

  • Tham số par (0.08): Tham số này biểu thị mức độ phụ thuộc tuyến tính giữa VNI và S&P/TSX. Với giá trị 0.08, chúng ta thấy một mức độ tương quan khá yếu giữa hai thị trường trong bối cảnh bình thường. Điều này cho thấy, trong phần lớn thời gian, thị trường chứng khoán Việt Nam và Canada hoạt động tương đối độc lập.

  • Tham số par2 (10.2): Degrees of freedom (df) trong Copula Student-t ảnh hưởng đến “độ dày” của đuôi phân phối. Với df = 10.2, phân phối có đuôi khá dày, cho thấy rằng mặc dù thị trường chứng khoán Việt Nam và Canada không thường xuyên phụ thuộc lẫn nhau, nhưng khi có những cú sốc lớn, sự phụ thuộc giữa hai thị trường này có thể trở nên mạnh mẽ hơn. Điều này phù hợp với thực tế khi các cú sốc kinh tế toàn cầu thường tác động đến nhiều thị trường cùng một lúc.

  • Kendall’s tau (0.05): Giá trị Kendall’s tau thấp cho thấy rằng sự phụ thuộc phi tuyến giữa VNI và S&P/TSX là rất yếu. Điều này có nghĩa là khả năng hai thị trường này cùng di chuyển theo một chiều (lên hoặc xuống) là khá thấp trong các điều kiện bình thường. Tuy nhiên, Copula Student-t vẫn cho phép chúng ta nhận diện những khoảnh khắc đồng biến động mạnh khi các điều kiện thị trường thay đổi đột ngột.

CB <- cbind(t, v)
library(copula)
## 
## Attaching package: 'copula'
## The following object is masked from 'package:VineCopula':
## 
##     pobs
fit <- fitCopula(tCopula(), data = CB, method = "ml")  
# Maximum Likelihood Estimation (MLE)
theta <- coef(fit)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
kde2d_plot <- kde2d(CB[,1], CB[,2], n = 50)

# Vẽ bản đồ nhiệt của hàm mật độ kernel
image(kde2d_plot, main = "Bản đồ nhiệt của hàm mật độ kernel")
# Vẽ các đường đồng mức của hàm mật độ kernel
contour(kde2d_plot, add = TRUE)

Trên bản đồ nhiệt, mỗi điểm đại diện cho một cặp lợi suất của hai thị trường (Canada và Việt Nam) tại một thời điểm nhất định. Màu sắc của các điểm này thể hiện mật độ xuất hiện của các cặp lợi suất trong không gian hai chiều, với:

  • Vùng mật độ cao (màu sắc đậm hơn) nằm ở góc phần tư phía trên bên phải: Nếu có một vùng mật độ cao trong khu vực này, điều đó cho thấy khi thị trường Canada có lợi suất dương, thị trường Việt Nam cũng có xu hướng đạt lợi suất dương tương ứng. Điều này gợi ý một mối quan hệ đồng biến giữa hai thị trường trong giai đoạn này, có thể là do sự lan tỏa của các yếu tố kinh tế toàn cầu hoặc sự tương quan trong các yếu tố thị trường.

  • Vùng mật độ cao (màu sắc đậm hơn) ở góc phần tư phía dưới bên trái: Nếu tồn tại vùng mật độ cao ở khu vực này, nó cho thấy khi thị trường Canada chịu lỗ (lợi suất âm), thị trường Việt Nam cũng có xu hướng giảm lợi suất. Điều này củng cố sự đồng biến giữa hai thị trường trong các giai đoạn thị trường toàn cầu suy yếu.

*Vùng mật độ thấp (màu sắc nhạt hơn) ở góc phần tư phía trên bên trái hoặc phía dưới bên phải: Nếu các vùng này có mật độ thấp, điều này có thể cho thấy rằng khi một thị trường có lợi suất dương, thị trường kia có thể không nhất thiết phải có lợi suất âm và ngược lại.

Đường đồng mức (Contour) này có thể cung cấp manh mối về những phạm vi lợi suất cụ thể mà hai thị trường có xu hướng tương tác mạnh mẽ với nhau:

  • Vùng có đường đồng mức dày đặc trong góc phần tư phía trên bên phải hoặc phía dưới bên trái: Những vùng này trên bản đồ nhiệt thể hiện các khu vực mà lợi suất của hai thị trường có xu hướng đồng biến mạnh. Các đường đồng mức tập trung dày đặc trong góc phần tư phía trên bên phải, điều này có thể ám chỉ rằng khi thị trường chứng khoán Canada đạt được lợi suất tích cực, thị trường Việt Nam cũng có xu hướng phản ứng tương tự với lợi suất dương. Điều này có thể gợi ý rằng hai thị trường chịu tác động từ các yếu tố toàn cầu giống nhau, chẳng hạn như các cú sốc kinh tế hoặc các xu hướng đầu tư quốc tế.

*Kết quả cũng cho thấy có những khu vực mà các đường đồng mức phân tán rộng rãi, chỉ ra sự yếu kém hoặc không rõ ràng trong mối quan hệ giữa lợi suất của hai thị trường. Các khu vực này thể hiện các giá trị lợi suất mà tại đó sự phụ thuộc giữa hai thị trường là không mạnh mẽ, hoặc không có sự tương quan rõ ràng.

library(ggplot2)
ggplot(CB, aes(x = CB[,1], y = CB[,2])) +
  geom_point(color = "blue", size = 1) +
  labs(title = "Biểu đồ mật độ phân tán Copu",
       x = "S&P/TSX",
       y = "VNI")

Đồ thị phân tán này là một công cụ quan trọng để trực quan hóa sự phân bố của cặp lợi suất từ hai thị trường chứng khoán, và cũng giúp ta hiểu rõ hơn về cách thức mà hai TTCK Việt Nam và Canada này có thể phụ thuộc lẫn nhau.

  • Đồ thị cho thấy sự tập trung của các điểm lợi suất tại vùng trung tâm, đặc biệt trong khoảng từ 0.2 đến 0.8 trên cả hai trục. Điều này gợi ý rằng có một mức độ phụ thuộc nhất định giữa hai thị trường tại các mức lợi suất trung bình. Sự phân bố này thể hiện rằng khi lợi suất của thị trường Canada nằm trong khoảng trung bình, lợi suất của thị trường Việt Nam cũng có xu hướng tương tự.

  • Các vùng phân tán rời rạc ở hai đầu của đồ thị cho thấy rằng khi lợi suất của TTCK Canada nằm ở các mức cực đại hoặc cực tiểu, mối liên hệ giữa hai thị trường có thể trở nên yếu hoặc không rõ ràng. Cụ thể, điều này thể hiện rằng các cú sốc lớn trên thị trường Canada không phải lúc nào cũng kéo theo những biến động tương ứng trên thị trường Việt Nam. Đây là dấu hiệu của sự độc lập tương đối trong một số tình huống kinh tế cụ thể, có thể do các yếu tố nội tại của Việt Nam hoặc sự khác biệt trong phản ứng của hai thị trường đối với các yếu tố quốc tế.

  • Một điểm đáng chú ý là sự phân bố các điểm không hoàn toàn đối xứng quanh trục trung tâm. Điều này có thể chỉ ra rằng tác động của thị trường Canada lên thị trường Việt Nam không phải lúc nào cũng đồng nhất, và có thể thay đổi tùy thuộc vào các điều kiện kinh tế cụ thể. Chảng hạn, trong một số giai đoạn, khi thị trường Canada tăng trưởng mạnh, thị trường Việt Nam có thể không phản ứng tương ứng với cùng một mức độ tăng trưởng, và ngược lại.

kde2d_plot <- kde2d(CB[,1], CB[,2], n = 55)
persp(kde2d_plot, phi = 50, theta = coef(fit), main = " Đồ thị mật độ của copula Student-t")

Các khu vực của mặt đồ thị có độ cao lớn cho thấy sự phụ thuộc mạnh giữa biến động của thị trường chứng khoán Canada và Việt Nam. Điều này có thể báo hiệu rằng khi có biến động lớn ở một thị trường, thị trường kia cũng có khả năng biến động mạnh theo.
Những khu vực có độ cao thấp trên mặt đồ thị cho thấy sự phụ thuộc yếu giữa hai thị trường. Điều này có thể được xem như cơ hội để đa dạng hóa danh mục đầu tư, giảm thiểu rủi ro khi một thị trường gặp biến động mạnh nhưng không kéo theo thị trường kia.

library(copula)
persp(tCopula(param = Stu$par), dCopula, 
      col = "lightblue", border = "black", main = " Đồ thị mô phỏng của copula Student-t")

Đồ thị hiển thị mật độ phân bố xác suất liên kết giữa hai biến, tạo nên một hình ảnh đa chiều về mối quan hệ phức tạp giữa hai TTCK Việt Nam và Canada. Mỗi điểm trên mặt đồ thị đại diện cho một cặp giá trị của hai biến t và v, cho thấy xác suất xuất hiện của cặp giá trị đó dưới sự phụ thuộc của nhau.
Mặc dù mức độ phụ thuộc là 0.08 cho thấy sự tương quan giữa hai thị trường không quá cao, nhưng vẫn có những khu vực trong đồ thị cho thấy mức độ tương quan cao hơn bình thường.Đây có thể là thời điểm mà các yếu tố kinh tế, chính trị hoặc xã hội đặc thù ảnh hưởng đến cả hai thị trường, dẫn đến mức độ tương quan cao hơn bình thường.
Những khu vực mật độ cao cũng có thể chỉ ra những biến động đột ngột và bất thường trong mối quan hệ giữa hai thị trường. Việc này là hết sức quan trọng đối với các nhà đầu tư và nhà quản lý rủi ro khi cần phải nhận biết và phản ứng kịp thời trước những biến động lớn.
Các khu vực có mật độ cao hơn không chỉ là dấu hiệu của rủi ro mà còn là cơ hội. Khi hai thị trường có sự tương quan cao trong một khoảng thời gian nhất định, điều đó có thể báo hiệu cơ hội đầu tư sinh lời cao nếu nhà đầu tư có thể nhận diện và tận dụng được sự phụ thuộc đó. Những khu vực này cần được chú ý đặc biệt vì chúng có thể báo hiệu rủi ro hoặc cơ hội đầu tư mà các nhà đầu tư cần lưu ý.

Chương V: KẾT LUẬN VÀ GIẢI PHÁP

5.1 Kết luận

Bài tiểu luận đã nghiên cứu được mức biến động của TTCK Việt Nam khi bị tác động bởi TTCK Canada dựa trên hai chuỗi lợi suất là VNI cho Việt Nam và S&P/TSX cho Canada. Trong giai đoạn năm 2018 đến tháng 7 năm 2024, kết quả nghiên cứu cho thấy mô hình Copula phù hợp là t với hệ số Kendall là 0.05 cho thấy sự phụ thuộc không đáng kể có nghĩa là khi thị trường chứng khoán Canada biến động, ảnh hưởng của nó đến thị trường chứng khoán Việt Nam là không đáng kể. Với giá trị đuôi trên bằng đuôi dưới là 0.01 cho thấy rằng không chỉ có sự tương quan yếu giữa hai thị trường trong các điều kiện bình thường, mà ngay cả trong các trường hợp cực đoan, khả năng hai thị trường cùng trải qua biến động mạnh (dù là tăng hay giảm) cũng rất thấp.
Điều này có thể giải thích bởi:

  • Sự khác biệt về mặt kinh tế: Canada là một quốc gia phát triển với nền kinh tế ổn định và đa dạng, trong khi Việt Nam là một quốc gia đang phát triển với nền kinh tế chủ yếu dựa vào nông nghiệp, sản xuất công nghiệp nhẹ, và xuất khẩu. Sự khác biệt lớn về cơ cấu kinh tế này khiến cho các yếu tố tác động lên thị trường chứng khoán của hai quốc gia là khác nhau. Các sự kiện kinh tế tại Canada, chẳng hạn như biến động về giá dầu mỏ (Canada là nước xuất khẩu dầu mỏ lớn) hay thay đổi chính sách tiền tệ, có thể không ảnh hưởng mạnh đến thị trường chứng khoán Việt Nam, nơi mà các yếu tố nội tại như chính sách nội địa và nhu cầu tiêu dùng trong nước có thể đóng vai trò quan trọng hơn.

  • Sự khác biệt về mức độ phát triển thị trường: Thị trường chứng khoán Canada đã phát triển và hội nhập vào hệ thống tài chính toàn cầu, với sự tham gia của nhiều nhà đầu tư quốc tế. Ngược lại, thị trường chứng khoán Việt Nam vẫn còn đang trong quá trình phát triển và có tính nội địa hóa cao hơn.
    May mắn thay, các nhà quản lý rủi ro có thể ít lo lắng về khả năng các sự kiện tài chính bất thường tại Canada sẽ kéo theo các sự kiện tương tự tại Việt Nam. Điều này có thể tạo ra cơ hội để nhà đầu tư tăng cường đa dạng hóa danh mục đầu tư giữa hai thị trường này mà không phải lo ngại nhiều về sự phụ thuộc đuôi.
    Mặc dù sự phụ thuộc giữa hai thị trường là yếu, điều này không có nghĩa là không có rủi ro. Bằng chứng cụ thể là trong các giai đoạn khủng hoảng tài chính toàn cầu, như cuộc khủng hoảng tài chính năm 2008, các thị trường tài chính có thể trở nên liên kết chặt chẽ hơn do tác động lan tỏa. Sự gia tăng đồng thời của các yếu tố rủi ro trên toàn cầu có thể làm tăng sự phụ thuộc giữa các thị trường mà trong điều kiện bình thường không có sự liên quan chặt chẽ.

5.2 Giải pháp

Việc tăng cường hợp tác kinh tế, thương mại, và đầu tư giữa Việt Nam và Canada sẽ tạo ra nhiều cơ hội mới cho cả hai thị trường chứng khoán. Các chính sách hỗ trợ đầu tư song phương và các hiệp định thương mại tự do có thể giúp tăng cường luồng vốn đầu tư giữa hai quốc gia, làm tăng sự tương tác giữa các nhà đầu tư của hai nước. Khi dòng vốn đầu tư tăng lên, sự liên kết giữa hai thị trường chứng khoán cũng có thể tăng, từ đó thay đổi cấu trúc phụ thuộc giữa chúng.
Để tăng cường sự hấp dẫn của thị trường chứng khoán Việt Nam đối với các nhà đầu tư quốc tế, cần cải thiện tính minh bạch và hiệu quả của thị trường. Điều này bao gồm việc hoàn thiện khung pháp lý, tăng cường giám sát và kiểm soát, và đảm bảo tính chính xác và kịp thời của thông tin tài chính. Việc tạo ra một môi trường đầu tư minh bạch và công bằng sẽ giúp thu hút thêm nguồn vốn từ nước ngoài, đồng thời tăng cường mối liên kết với các thị trường quốc tế khác.
Trong bối cảnh thị trường chứng khoán thường xuyên biến động, các nhà đầu tư nên tập trung vào các chiến lược đầu tư dài hạn. Sự phân tích bằng phương pháp Copula cho thấy rằng các yếu tố vĩ mô có thể ảnh hưởng đến mối quan hệ giữa các thị trường trong dài hạn, do đó, việc nhận diện sớm các xu hướng dài hạn sẽ giúp tối ưu hóa lợi nhuận và giảm thiểu rủi ro. Các chiến lược đầu tư dài hạn không chỉ giúp bảo vệ danh mục đầu tư trước các biến động ngắn hạn mà còn tạo cơ hội tận dụng các xu hướng phát triển bền vững trong nền kinh tế và thị trường tài chính.
Phương pháp Copula, đặc biệt là Copula Student-t, là một công cụ mạnh mẽ trong phân tích mối quan hệ giữa các thị trường tài chính. Việc tiếp tục nghiên cứu và ứng dụng phương pháp này sẽ giúp cải thiện khả năng dự báo và quản lý rủi ro. Các tổ chức tài chính và học viện nghiên cứu cần đầu tư vào việc phát triển các mô hình Copula phức tạp hơn như Archimax copula, có khả năng mô tả tốt hơn mối quan hệ phi tuyến tính và sự phụ thuộc đuôi giữa các thị trường. Điều này không chỉ giúp nâng cao chất lượng phân tích mà còn tạo ra các công cụ mới cho quản lý rủi ro và đầu tư.

TÀI LIỆU THAM KHẢO

  1. Le Van Thu, “PHẢN ỨNG CỦA THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM ĐỐI VỚI BIẾN ĐỘNG CỦA THỊ TRƯỜNG CHỨNG KHOÁN QUỐC TẾ”(2022).
  2. Trần Thanh Tâm, “SỬ DỤNG MÔ HÌNH COPULA ĐỂ XEM XÉT VAI TRÒ CỦA VÀNG LÀ KÊNH TRÚ ẨN AN TOÀN HAY CÔNG CỤ PHÒNG NGỪA RỦI RO ĐỐI VỚI ĐỒNG ĐÔ LA MỸ”(2014).
  3. Phan Thị Hằng Nga, “NGHIÊN CỨU SỰ PHỤ THUỘC LỢI NHUẬN CỦA TIỀN KỸ THUẬT SỐ: TIẾP CẬN PHƯƠNG PHÁP COPULA CÓ ĐIỀU KIỆN”(2024).
  4. Embrechts, P., Lindskog, F., & McNeil, A. J.,“MODELING DEPENDENCE WITH COPULAS AND APPLICATIONS TO RISK MANAGEMENT”(2003).
  5. Joshua Grober, Ostap Okhrin, “COPULAE: AN OVERVIEW AND RECENT DEVELOPMENTS”(2021).
  6. Xiaolin Luo,Pavel V. Shevchenko “THE T COPULA WITH MULTIPLE PARAMETERS OF DEGREES OF FREEDOM: BIVARIATE CHARACTERISTICS AND APPLICATION TO RISK MANAGEMENT” (2009).
  7. Umberto Cherubini,Elisa Luciano ” VALUE-AT-RISK TRADE-OFF AND CAPITAL ALLOCATION WITH COPULAS”, Economic Notes, volume 30, issue 2.
  8. Marius Galabe Sampid, Haslifah M. Hasim “ESTIMATING VALUE-AT-RISK USING A MULTIVARIATE COPULA-BASED VOLATILITY MODEL: EVIDENCE FROM EUROPEAN BANKS”(2018).
LS0tDQp0aXRsZTogIlRMQ01ITk4iDQphdXRob3I6ICJOTlRVQU5IIg0KZGF0ZTogIjIwMjQtMDctMjciDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0b2M6IHRydWUNCiAgd29yZF9kb2N1bWVudDoNCiAgICAgdG9jOiB0cnVlDQogICAgIHRvY19kZXB0aDogJzInDQogIHBkZl9kb2N1bWVudDoNCiAgICBsYXRleF9lbmdpbmU6IHhlbGF0ZQ0KLS0tDQoNCmBgYHtyfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkM6L1VzZXJzL0RFTEwvUGljdHVyZXMvU2NyZWVuc2hvdHMvU2NyZWVuc2hvdCAyMDI0LTA4LTA3IDIzNDcwOC5wbmciKQ0KYGBgDQoNCiMgIEzhu5xJIEPhuqJNIMagTg0KDQpFbSB4aW4gZ+G7rWkgbOG7nWkgY+G6o20gxqFuIHPDonUgc+G6r2MgxJHhur9uIFBHUy5UUyBOZ3V54buFbiBUdeG6pW4gRHV5IMSRw6MgdHJhbyBlbSBjxqEgaOG7mWkgxJHGsOG7o2MgbmdoacOqbiBj4bupdSDEkeG7gSB0w6BpICLhu6hORyBE4bukTkcgUEjGr8agTkcgUEjDgVAgQ09QVUxBIFBIw4JOIFTDjUNIIFPhu7AgQknhur5OIMSQ4buYTkcgQ+G7pkEgVEjhu4ogVFLGr+G7nE5HIENI4buoTkcgS0hPw4FOIFZJ4buGVCBOQU0gQuG7iiDhuqJOSCBIxq/hu55ORyBC4bueSSBUSOG7iiBUUsav4bucTkcgQ0jhu6hORyBLSE/DgU4gQ0FOQURBIiBjxaluZyBuaMawIMSRw6MgZ2nDoG5oIG5oaeG7gXUgdGjhu51pIGdpYW4gdsOgIGPDtG5nIHPhu6ljIMSR4buDIHRyYW5nIGLhu4sgY2hvIGVtIG5o4buvbmcga2nhur9uIHRo4bupYyBjaHV5w6puIG3DtG4sIGvEqSBuxINuZyBj4bqnbiB0aGnhur90IHRo4buxYyBow6BuaCwgZ2nDunAgZW0gY8OzIGdp4bqjaSDEkcOhcCBuaGnhu4F1IHRo4bqvYyBt4bqvYyB0cm9uZyBtw7RuIGjhu41jIHbDoCBob8OgbiB0aGnhu4duIMSRxrDhu6NjIGLDoGkgdGnhu4N1IGx14bqtbi5cDQpEbyBjaHV5w6puIG3DtG4gY+G7p2EgZW0gY8OybiBuaGnhu4F1IHRoaeG6v3Ugc8OzdCB2w6AgdGhp4bq/dSBraW5oIG5naGnhu4dtIHLhuqV0IG5oaeG7gXUgdsOsIHbhuq15IGLDoGkgYsOhbyBjw6FvIHbhuqtuIGPDsm4gbmhp4buBdSBo4bqhbiBjaOG6vyBuw6puIGVtIHLhuqV0IG1vbmcgxJHGsOG7o2MgxJHDs24gbmjhuq1uIGPDoWMgZ8OzcCDDvSDEkeG6v24gdOG7qyB0aOG6p3ksIGPDtCDEkeG7gyBlbSBjw7MgdGjhu4Mga2jhuq9jIHBo4bulYyDEkcaw4bujYyBjw6FjIGtodXnhur90IMSRaeG7g20gdsOgIGhvw6BuIHRoaeG7h24gYsOgaSBiw6FvIGPDoW8gdOG7kXQgaMahbiBu4buvYS5cDQpFbSB4aW4gY2jDom4gdGjDoG5oIGPhuqNtIMahbiENCg0KIyAgTOG7nEkgQ0FNIEvhur5UDQoNClTDtGkgeGluIGNhbSDEkW9hbiDEkeG7gSB0w6BpICLhu6hORyBE4bukTkcgUEjGr8agTkcgUEjDgVAgQ09QVUxBIFBIw4JOIFTDjUNIIFPhu7AgQknhur5OIMSQ4buYTkcgQ+G7pkEgVEjhu4ogVFLGr+G7nE5HIENI4buoTkcgS0hPw4FOIFZJ4buGVCBOQU0gQuG7iiDhuqJOSCBIxq/hu55ORyBC4bueSSBUSOG7iiBUUsav4bucTkcgQ0jhu6hORyBLSE/DgU4gQ0FOQURBIiBsw6AgdGnhu4N1IGx14bqtbiBjw7Mgc+G7kSBsaeG7h3UgdsOgIGvhur90IHF14bqjIG5naGnDqm4gY+G7qXUgaG/DoG4gdG/DoG4gdHJ1bmcgdGjhu7FjIHbDoCBjw7Mgbmd14buTbiBn4buRYyByw7UgcsOgbmcgLCDEkcaw4bujYyB0w7RpIHRyw6xuaCBiw6B5IHLDtSByw6BuZyB0cm9uZyBiw6BpIHRp4buDdSBsdeG6rW4uDQoNCiMgQ0jGr8agTkcgSTogR0nhu5pJIFRISeG7hlUNCg0KIyMgMS4xIMSQ4bq3dCB24bqlbiDEkeG7gQ0KDQpUaOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gxJHDs25nIHZhaSB0csOyIG5nw6B5IGPDoG5nIHF1YW4gdHLhu41uZyB0cm9uZyBu4buBbiBraW5oIHThur8gaGnhu4duIMSR4bqhaS4gVGjhu4sgdHLGsOG7nW5nIG7DoHkgcGjhuqNuIMOhbmggc+G7sSB24bqtbiDEkeG7mW5nIHbDoCB0w6xuaCBow6xuaCB0w6BpIGNow61uaCAtIGtpbmggdOG6vyB2xKkgbcO0LCBsw6Aga8OqbmggaHV5IMSR4buZbmcgduG7kW4gcXVhbiB0cuG7jW5nIGNobyBjw6FjIGRvYW5oIG5naGnhu4dwIHbDoCBsw6Aga8OqbmggxJHhuqd1IHTGsCBoaeG7h3UgcXXhuqMgY2hvIGPDoWMgbmjDoCDEkeG6p3UgdMawLiBT4buxIGJp4bq/biDEkeG7mW5nIGPhu6dhIGPDoWMgY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiB24bubaSB2aeG7h2MgaGnhu4N1IHLDtSBt4buRaSBxdWFuIGjhu4cgdMawxqFuZyBxdWFuIGdp4buvYSBjw6FjIGNo4buJIHPhu5EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIMSRw7NuZyB2YWkgdHLDsiBxdWFuIHRy4buNbmcg4bqjbmggaMaw4bufbmcgdHLhu7FjIHRp4bq/cCDEkeG6v24gdMOibSBsw70sIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawIGPhu6dhIG5ow6AgxJHhuqd1IHTGsCwgY8WpbmcgbmjGsCBob+G6oXQgxJHhu5luZyBz4bqjbiB4deG6pXQga2luaCBkb2FuaCBj4bunYSBjw6FjIGRvYW5oIG5naGnhu4dwIG5pw6ptIHnhur90LixcDQpOaOG6pXQgbMOgIGtoaSB0cm9uZyBi4buRaSBj4bqjbmggdG/DoG4gY+G6p3UgaMOzYSB2w6AgaOG7mWkgbmjhuq1wIGtpbmggdOG6vyBxdeG7kWMgdOG6vyBuZ8OgeSBjw6BuZyBzw6J1IHLhu5luZywgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vyB0cuG7nyBuw6puIG5nw6B5IGPDoG5nIGNo4bq3dCBjaOG6vS4gQ8OhYyBjaOG7iSBz4buRIGNo4bunIGNo4buRdCBj4bunYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBs4bubbiBuaMawIFMmUCA1MDAsIE5BU0RBUSwgRlRTRSAxMDAsIERBWCwgTmlra2VpIDIyNSBoYXkgSGFuZyBTZW5nIEluZGV4Li4uIHRoxrDhu51uZyDEkcaw4bujYyB0aGVvIGTDtWkgcuG6pXQgc8OhdCBzYW8gYuG7n2kgY8OhYyBuaMOgIMSR4bqndSB0xrAgdHLDqm4gdG/DoG4gdGjhur8gZ2nhu5tpLiBOaMOsbiBjaHVuZywgY8OhYyBjaOG7iSBz4buRIHRyb25nIGPDuW5nIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiB0aMaw4budbmcgY8OzIHPhu7EgdMawxqFuZyBxdWFuIGNhbywgdsOsIGNow7puZyBwaOG6o24gw6FuaCBz4buxIGJp4bq/biDEkeG7mW5nIGNodW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyB2w6AgbmfGsOG7o2MgbOG6oWkgY8OhYyBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIGPhu6dhIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGtow6FjIG5oYXUgdGjGsOG7nW5nIGPDsyBz4buxIHTGsMahbmcgcXVhbiB0aOG6pXAgaMahbiwgdsOsIGNow7puZyBwaOG6o24gw6FuaCBu4buBbiBraW5oIHThur8gdsOgIGPDoWMgeeG6v3UgdOG7kSB2xKkgbcO0IHJpw6puZyBj4bunYSB04burbmcgcXXhu5FjIGdpYS4gVsOsIHRo4bq/IHTDoWMgZ2nhuqMgbOG7sWEgY2jhu41uIHBow6JuIHTDrWNoIG3hu5FpIHTGsMahbmcgcXVhbiBj4bunYSBoYWkgxJHhu5FpIHTGsMahbmcgbMOgIFZOSSAoVmlldCBOYW0gSW5kZXgpIGzDoCBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIGNow61uaCBj4bunYSBT4bufIEdpYW8gZOG7i2NoIENo4bupbmcga2hvw6FuIFRow6BuaCBwaOG7kSBI4buTIENow60gTWluaCAoSE9TRSkgdsOgIFMmUC9UU1ggKFMmUC9Ub3JvbnRvIFN0b2NrIEV4Y2hhbmdlIENvbXBvc2l0ZSBJbmRleCkgbMOgIGNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4gY2jDrW5oIGPhu6dhIFPhu58gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gVG9yb250byAoVFNYKSwgQ2FuYWRhIG5o4bqxbSBuZ2hpw6puIGPhu6l1IMSR4buBIHTDoGkgIuG7qE5HIEThu6RORyBQSMavxqBORyBQSMOBUCBDT1BVTEEgUEjDgk4gVMONQ0ggU+G7sCBCSeG6vk4gxJDhu5hORyBD4bumQSBUSOG7iiBUUsav4bucTkcgQ0jhu6hORyBLSE/DgU4gVknhu4ZUIE5BTSBC4buKIOG6ok5IIEjGr+G7nk5HIELhu55JIFRI4buKIFRSxq/hu5xORyBDSOG7qE5HIEtIT8OBTiBDQU5BREEiLiBWaeG7h2MgbmdoacOqbiBj4bupdSBz4buxIHTGsMahbmcgcXVhbiBj4bunYSBoYWkgY2jhu4kgc+G7kSBjaOG7qW5nIGtob+G6o24gxJHhu5ljIGzhuq1wIHRyw6puIHPhur0gY3VuZyBj4bqlcCBjaG8gY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIGNodXnDqm4gZ2lhIG3hu5l0IGPDoWkgbmjDrG4gdG/DoG4gZGnhu4duIGjGoW4ga2hpIMSRxrBhIHJhIGPDoWMgY2hp4bq/biBsxrDhu6NjIMSR4bqndSB0xrAgdsOgIHRow7RuZyB0aW4gaOG7r3Ugw61jaCBjaG8gZOG7sSDDoW4gxJFhIGThuqFuZyBow7NhIGRhbmggbeG7pWMgxJHhuqd1IHTGsCBxdeG7kWMgdOG6vy5cDQpUcm9uZyBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeSwgdMOhYyBnaeG6oyBs4buxYSBjaOG7jW4ga2h1bmcgdGjhu51pIGdpYW4gdOG7qyAyNy8wNy8yMDE4IMSR4bq/biB0aMOhbmcgNyBuxINtIDIwMjQgxJHhu4MgbmdoacOqbiBj4bupdS4gVHJvbmcgZ2lhaSDEkW/huqFuIG7DoHksIGtow7RuZyBjaOG7iSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/huqNuIGPhu6dhIG3hu5l0IHF14buRYyBnaWEgbcOgIGzDoCBj4bqjIHF14buRYyB04bq/IG7Ds2kgY2h1bmcgxJHDoyB0cuG6o2kgcXVhIG5oaeG7gXUgY8O6IHPhu5FjIGtpbmggdOG6vyBi4bufaSBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIGPDoWMgY2jDrW5oIHPDoWNoIGtpbmggdOG6vywgYmnhur9uIMSR4buZbmcgduG7gSBsw6NpIHN14bqldCBjxaluZyBuaMawIGPDoWMgYmnhur9uIMSR4buZbmcgdHJvbmcgeMOjIGjhu5lpIG5oxrAgZOG7i2NoIGLhu4duaCBoYXkgc+G7sSBraeG7h24gbWFuZyB0w61uaCBjaMOtbmggdHLhu4suDQoNCiMjIDEuMiBN4bulYyB0acOqdSBuZ2hpw6puIGPhu6l1DQoNCiMjIyAxLjIuMSBYw6FjIMSR4buLbmggxJHGsOG7o2Mgc+G7sSB0xrDGoW5nIHF1YW4gZ2nhu69hIGhhaSBjaOG7iSBz4buRIGNo4bupbmcga2hv4bqjbiDEkeG7mWMgbOG6rXANCg0KQ3VuZyBj4bqlcCB0aMO0bmcgdGluIGjhu691IMOtY2ggY2hvIGPDoWMgbmjDoCDEkeG6p3UgdMawIHRyb25nIHZp4buHYyDEkcOhbmggZ2nDoSBy4bunaSBybyB2w6AgY8ahIGjhu5lpIMSR4bqndSB0xrAgZ2nhu69hIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIHbDoCBDYW5hZGEuIEtoaSDEkcOzIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIHbDoCBjw6FjIHRo4buLIHRyxrDhu51uZyBxdeG7kWMgdOG6vywgdOG7qyDEkcOzIMSR4buBIHJhIGPDoWMgY2jDrW5oIHPDoWNoIHBow7kgaOG7o3AgbmjhurFtIOG7lW4gxJHhu4tuaCB2w6AgcGjDoXQgdHJp4buDbiB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbS4gTMOgIHRp4buBbiDEkeG7gSDEkeG7gyBuZ2hpw6puIGPhu6l1IHPDonUgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gduG7m2kgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4ga2jDoWMsIGfDs3AgcGjhuqduIGhvw6BuIHRoaeG7h24gbmdoacOqbiBj4bupdSB24buBIHTDrWNoIGjhu6NwIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vy4NCg0KIyMjIDEuMi4yIOG7qG5nIGThu6VuZyDEkcaw4bujYyBuZ8O0biBuZ+G7ryBSIHbDoCBwaMawxqFuZyBwaMOhcCBDb3B1bGENCg0K4buobmcgZOG7pW5nIGPDoWMgY8O0bmcgY+G7pSBwaMOibiB0w61jaCBk4buvIGxp4buHdSBt4bqhbmggbeG6vSBuaMawIG5nw7RuIG5n4buvIFIgbmfDoHkgY8OgbmcgdHLhu58gbsOqbiBxdWFuIHRy4buNbmcsIMSR4bq3YyBiaeG7h3QgdHJvbmcgbMSpbmggduG7sWMgdMOgaSBjaMOtbmguIELDqm4gY+G6oW5oIMSRw7MsIHBoxrDGoW5nIHBow6FwIENvcHVsYSBsw6AgbeG7mXQgY8O0bmcgY+G7pSB0b8OhbiBo4buNYyDEkcaw4bujYyBz4butIGThu6VuZyBy4buZbmcgcsOjaSB0cm9uZyBwaMOibiB0w61jaCBy4bunaSBybyB0w6BpIGNow61uaCwgY2hvIHBow6lwIG3DtCBow6xuaCBow7NhIHbDoCDEkW8gbMaw4budbmcgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biBz4buRIHTDoGkgY2jDrW5oIG3hu5l0IGPDoWNoIGxpbmggaG/huqF0LCBi4bqldCBr4buDIHBow6JuIHBo4buRaSBiaeG6v24gc+G7kS4gVmnhu4djIOG7qW5nIGThu6VuZyDEkcaw4bujYyBwaMawxqFuZyBwaMOhcCBDb3B1bGEgdHLDqm4gcGjhuqduIG3hu4FtIFIgbMOgIG1pbmggY2jhu6luZyBjaG8gc+G7sSBoaeG7h3UgcXXhuqMgY8WpbmcgbmjGsCBz4buxIHBob25nIHBow7ogY+G7p2EgbmfDtG4gbmfhu68gUiB0cm9uZyBsxKluaCB24buxYyB0w6BpIGNow61uaCBraGkgY8OzIHRo4buDIGN1bmcgY+G6pXAgY8OhYyBnw7NpIHBow6JuIHTDrWNoIGThu68gbGnhu4d1LCB04burIGPGoSBi4bqjbiDEkeG6v24gbsOibmcgY2FvLCBnacO6cCB44butIGzDvSB2w6AgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgbeG7mXQgY8OhY2ggaGnhu4d1IHF14bqjLg0KDQojIyAxLjMgxJDhu5FpIHTGsOG7o25nIG5naGnDqm4gY+G7qXUgdsOgIHBo4bqhbSB2aSBuZ2hpw6puIGPhu6l1DQoNCiMjIyAxLjMuMSDEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdQ0KDQrEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSDEkcaw4bujYyBs4buxYSBjaOG7jW4gbMOgIFZOSSAoVmlldCBOYW0gSW5kZXgpIGzDoCBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIGNow61uaCBj4bunYSBT4bufIEdpYW8gZOG7i2NoIENo4bupbmcga2hvw6FuIFRow6BuaCBwaOG7kSBI4buTIENow60gTWluaCAoSE9TRSkgdsOgIFMmUC9UU1ggKFMmUC9Ub3JvbnRvIFN0b2NrIEV4Y2hhbmdlIENvbXBvc2l0ZSBJbmRleCkgbMOgIGNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4gY2jDrW5oIGPhu6dhIFPhu58gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gVG9yb250byAoVFNYKSwgQ2FuYWRhLiBWaeG7h2MgcGjDom4gdMOtY2ggY3VuZyBj4bqlcCBt4buZdCBi4buRaSBj4bqjbmggduG7gSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hv4bqjbiDEkeG7mWMgbOG6rXAgY+G7p2EgaGFpIHF14buRYyBnaWEga2jDoWMgbmhhdSBjxaluZyBuaMawIMSR4buRaSBt4bq3dCBjw6FjIGJp4bq/biDEkeG7mW5nIHnhur91IHThu5Ega2luaCB04bq/IGtow6FjIG5oYXUuDQoNCiMjIyAxLjMuMiBE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1DQoNClTDoWMgZ2nhuqMgc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgZ2nDoSBjdeG7kWkgbmfDoHkgY+G7p2EgaGFpIGNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4gdOG6oWkgaGFpIHF14buRYyBnaWEgdOG7qyAyNy8wNy8yMDE4IMSR4bq/biAyNy8wNy8yMDI0LiBOZ3Xhu5NuIGfhu5FjIGLhu5kgZOG7ryBsaeG7h3UgxJHGsOG7o2MgbOG6pXkgdOG7qyB0cmFuZyBjaMOtbmggdGjhu5FuZyB3d3cuaW52ZXN0aW5nLmNvbSDEkeG7k25nIHRo4budaSDEkcaw4bujYyBzbyBzw6FuaCB24bubaSBjw6FjIHRyYW5nIGtow6FjIG5o4bqnbSBt4bulYyDEkcOtY2ggdMSDbmcgxJHhu5kgY2jDrW5oIHjDoWMgY+G7p2EgZOG7ryBsaeG7h3UgaGnhu4duIGPDsy4gROG7ryBsaeG7h3UgY+G7p2EgZ2nDoSDEkcaw4bujYyB0w61uaCB0aGVvIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gduG7m2kgUF90IGzDoCBnacOhIGPhu5UgcGhp4bq/dCB04bqhaSB0aOG7nWkgxJFp4buDbSB0LiAkJFJfdD0xMDBsblxsZWZ0XHtcZnJhY3tQX3R9e1Bfe3QtMX19XHJpZ2h0XH0kJA0KDQojIyAxLjQgUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdQ0KDQpDw7MgY8ahIGLhuqNuIDQgYsaw4bubYyDEkeG7gyB4w6J5IGThu6VuZyBtw7QgaMOsbmggY29wdWxhOg0KDQoxXC4gWMOhYyDEkeG7i25oIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnhur9uDQoNCjJcLiBLaeG7g20gxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnhur9uDQoNCjNcLiDGr+G7m2MgbMaw4bujbmcgdGhhbSBz4buRIG3DtCBow6xuaCBjb3B1bGENCg0KNFwuIEzhu7FhIGNo4buNbiBtw7QgaMOsbmggY29wdWxhIHBow7kgaOG7o3ANCg0KIyBDSMavxqBORyBJSTogU8agIEzGr+G7okMgVuG7gCBDSOG7iCBT4buQIENI4buoTkcgS0hP4bqiTiBWTkkgVsOAIFMmUC9UU1gNCg0KIyMgMi4xIFThu5VuZyBxdWFuIHbhu4EgY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiBTJlAvVFNYIChUb3JvbnRvIFN0b2NrIEV4Y2hhbmdlIEluZGV4KQ0KDQpUU1ggaGF5IFMmUC9UU1ggQ29tcG9zaXRlIChUb3JvbnRvIFN0b2NrIEV4Y2hhbmdlIEluZGV4KSBsw6AgY2jhu4kgc+G7kSB0aGVvIGTDtWkgaGnhu4d1IHN14bqldCBj4bunYSBraG/huqNuZyAyMzAgLSAyNTAgY8O0bmcgdHkgxJHhuqFpIGNow7puZyBs4bubbiBuaOG6pXQgxJHGsOG7o2MgbmnDqm0geeG6v3QgdHLDqm4gU+G7nyBnaWFvIGThu4tjaCBjaOG7qW5nIGtob8OhbiBUb3JvbnRvLiDEkMOieSDEkcaw4bujYyB4ZW0gbMOgIGNo4buJIHPhu5EgY2h14bqpbiBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4sIGPFqW5nIG5oxrAgbuG7gW4ga2luaCB04bq/IENhbmFkYSwgdMawxqFuZyB04buxIG5oxrAgUyZQIDUwMCDhu58gSG9hIEvhu7MsIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyBuaMawIG3hu5l0IGNo4buJIHPhu5EgxJFvIGzGsOG7nW5nIHPhu6ljIGto4buPZSBj4bunYSBu4buBbiBraW5oIHThur8gQ2FuYWRhLlwNClbhu4EgbeG6t3QgduG7kW4gaMOzYSB0aOG7iyB0csaw4budbmcsIGNo4buJIHPhu5EgdOG7lW5nIGjhu6NwIFRTWCBjaGnhur9tIGjGoW4gNzAlIHRvw6BuIGLhu5kgduG7kW4gaMOzYSBj4bunYSBT4bufIGdpYW8gZOG7i2NoIGNo4bupbmcga2hvw6FuIFRvcm9udG8uIENo4buJIHPhu5EgbsOgeSBob+G6oXQgxJHhu5luZyBuaMawIG3hu5l0IHBob25nIHbFqSBiaeG7g3UgKEJhcm9tZXRlcikgY+G7p2EgbuG7gW4ga2luaCB04bq/IENhbmFkYS4gRG8gxJHDsywgVFNYIEluZGV4IMSRxrDhu6NjIHRoZW8gZMO1aSBy4bqldCBjaOG6t3QgY2jhur0gYuG7n2kgY8OhYyBuaMOgIMSR4bqndSB0xrAg4bufIGPhuqMgQ2FuYWRhIHbDoCB0csOqbiB0b8OgbiB0aOG6vyBnaeG7m2kuXA0KR2nDoSB0cuG7iyBj4bunYSBUU1ggSW5kZXggxJHGsOG7o2MgdMOtbmggdG/DoW4gZOG7sWEgdHLDqm4gYsOsbmggcXXDom4gZ2lhIHF1eeG7gW4gduG7kW4gaMOzYSB0aOG7iyB0csaw4budbmcgY+G7p2EgY8OhYyBjw7RuZyB0eSB0aMOgbmggcGjhuqduLiBOaOG7r25nIGPDtG5nIHR5IGPDsyB24buRbiBow7NhIGNhbyBz4bq9IGNoaeG6v20gdOG7tyB0cuG7jW5nIGzhu5tuIHbDoCBjw7Mg4bqjbmggaMaw4bufbmcgbeG6oW5oIG3hur0gxJHhur9uIGdpw6EgdHLhu4sgY+G7p2EgVFNYIEluZGV4LlwNCkNo4buJIHPhu5EgdGjhu4sgdHLGsOG7nW5nIG7DoHkgYmFvIGfhu5NtIGPDoWMgY8O0bmcgdHkgaMOgbmcgxJHhuqd1IHRyb25nIG5oaeG7gXUgbmfDoG5oIGPDtG5nIG5naGnhu4dwIGtow6FjIG5oYXUsIHThu6sgY8O0bmcgbmdo4buHLCB0w6BpIGNow61uaCwgxJHhur9uIHRpw6p1IGTDuW5nIHbDoCBuxINuZyBsxrDhu6NuZy4gTeG7mXQgc+G7kSBjw7RuZyB0eSBu4buVaSBi4bqtdCBjw7MgduG7kW4gaMOzYSB0aOG7iyB0csaw4budbmcgbOG7m24gbmjhuqV0IHRyb25nIGNo4buJIHPhu5EgVFNYIENvbXBvc2l0ZSBiYW8gZ+G7k20gUm95YWwgQmFuayBvZiBDYW5hZGEgKFJZKSB2w6AgVG9yb250by1Eb21pbmlvbiBCYW5rIChURCkgdGh14buZYyBsxKluaCB24buxYyB0w6BpIGNow61uaCwgQ2FuYWRpYW4gTmF0aW9uYWwgUmFpbHdheSBDb21wYW55IChDTlIpIHbDoCBUaG9tc29uIFJldXRlcnMgQ29ycG9yYXRpb24gKFRSSSkgdGh14buZYyBsxKluaCB24buxYyBjw7RuZyBuZ2hp4buHcCwgaGF5IEVuYnJpZGdlIEluYy4gKEVOQikgdsOgIENhbmFkaWFuIE5hdHVyYWwgUmVzb3VyY2VzIExpbWl0ZWQgKENOUSkgdGh14buZYyBsxKluaCB24buxYyBuxINuZyBsxrDhu6NuZywg4oCmDQoNCiMjIyAyLjEuMSBM4buLY2ggc+G7rSBow6xuaCB0aMOgbmggdsOgIHBow6F0IHRyaeG7g24gY+G7p2EgY2jhu4kgc+G7kSBTJlAvVFNYDQoNCkNo4buJIHPhu5EgUyZQL1RTWCBwaMOhdCB0cmnhu4NuIHThu6sgbeG7mXQgY2jhu4kgc+G7kSB0csaw4bubYyDEkcOzLCBUU0UgMzAwLiBUU0UgMzAwIMSRxrDhu6NjIHJhIG3huq90IGLhu59pIFPhu58gZ2lhbyBk4buLY2ggVG9yb250byB2w6BvIG7Eg20gMTk3NyAoVFNFIGzDoCBjaOG7ryB2aeG6v3QgdOG6r3QgdHLGsOG7m2MgxJHDsyBj4bunYSBz4bufIGdpYW8gZOG7i2NoKS4gTcO0IGjDrG5oIHRoZW8gQ2jhu4kgc+G7kSBTJlAgNTAwLCBuw7MgYmFvIGfhu5NtIG3hu5l0IHPhu5EgY+G7kSDEkeG7i25oIGPDoWMgY+G7lSBwaGnhur91OiBjaMOtbmggeMOhYyBsw6AgMzAwLiBOxINtIDIwMDIsIFN0YW5kYXJkICYgUG9vcidzIChTJlApLCBt4buZdCB0cm9uZyBuaOG7r25nIGPDtG5nIHR5IGN1bmcgY+G6pXAgY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiBow6BuZyDEkeG6p3UgdGjhur8gZ2nhu5tpLCBo4bujcCB0w6FjIHbhu5tpIFRTWCDEkeG7gyBxdeG6o24gbMO9IHbDoCB0w61uaCB0b8OhbiBjaOG7iSBz4buRLiBDaOG7iSBz4buRIFRTRSAzMDAgQ29tcG9zaXRlIMSRxrDhu6NjIMSR4buVaSB0w6puIHRow6BuaCBTJlAvVFNYIENvbXBvc2l0ZSBJbmRleC5cDQpUcm9uZyBzdeG7kXQgbmjhu69uZyBuxINtIHF1YSwgc+G7kSBsxrDhu6NuZyBjaMOtbmggeMOhYyBjw6FjIGPDtG5nIHR5IHRyb25nIGNo4buJIHPhu5EgxJHDoyBkYW8gxJHhu5luZywgdsOgIHPhu7EgdGjDoG5oIHBo4bqnbiBj4bunYSBjaOG7iSBz4buRIMSRw6MgdGhheSDEkeG7lWkuIEJhbiDEkeG6p3UsIGPDoWMgY8O0bmcgdHkga2hhaSB0aMOhYyBt4buPIHbDoCBk4bqndSBt4buPIGNoaeG6v20gxrB1IHRo4bq/4oCUcGjhuqNuIMOhbmggc+G7sSBnacOgdSB0w6BpIG5ndXnDqm4gY+G7p2EgQ2FuYWRhLiBWw6BvIHRo4bq/IGvhu7cgMjEsIMSRaeG7gXUgxJHDsyBi4bqvdCDEkeG6p3UgdGhheSDEkeG7lWksIHbDoCBraGkgY2jhu4kgc+G7kSBTJlAvVFNYIHjDs2EgYuG7jyAxNyBjw7RuZyB0eSB0w6BpIG5ndXnDqm4gdsOgbyBuxINtIDIwMTQgdsOgIHRow6ptIDE2IGPDtG5nIHR5IGNo4bunIHnhur91IGtow7RuZyBwaOG6o2kgdMOgaSBuZ3V5w6puIHbDoG8gbsSDbSAyMDE1LCBuw7MgxJHDoyBnw6J5IHRp4bq/bmcgdmFuZy4gVsOgbyBuxINtIDIwMTYsIGPDoWMgY8O0bmcgdHkgdMOgaSBjaMOtbmggY2jhu4kgY2hp4bq/bSBt4buZdCBwaOG6p24gbmjhu48gY+G7p2EgY2jhu4kgc+G7kTsgxJHhur9uIG7Eg20gMjAyNCwgY2jDum5nIGNoaeG6v20gMzAuOSXigJRsw6AgbmfDoG5oIGzhu5tuIG5o4bqldC5cDQpDaOG7iSBz4buRIMSRw6MgxJHEg25nIGvDvSBz4buxIHTEg25nIHRyxrDhu59uZyDhu5VuIMSR4buLbmgga+G7gyB04burIGtoaSByYSBt4bqvdCB2w6BvIG7Eg20gMTk3Ny4gVHJvbmcgbmjhu69uZyBuxINtIGfhuqduIMSRw6J5LCBuw7MgY8WpbmcgdHLhuqNpIHF1YSBt4buZdCBz4buRIHPhu6VwIMSR4buVIGzhu5tuLCDEkeG6t2MgYmnhu4d0IGzDoCB2w6BvIMSR4bqndSBuxINtIDIwMjAsIHRyb25nIMSR4bujdCBiw7luZyBwaMOhdCDEkeG6oWkgZOG7i2NoIENPVklELTE5LiBDaOG7iSBz4buRIFMmUC9UU1ggQ29tcG9zaXRlLCBnaeG7kW5nIG5oxrAgbmhp4buBdSBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIHRvw6BuIGPhuqd1LCDEkcOjIHRy4bqjaSBxdWEgbeG7mXQgxJHhu6N0IHPhu6V0IGdp4bqjbSBt4bqhbmggbeG6vSBraGkgxJHhuqFpIGThu4tjaCBDT1ZJRC0xOSBiw7luZyBwaMOhdCwgZ8OieSByYSBz4buxIGhv4bqjbmcgbG/huqFuIHRyw6puIHRo4buLIHRyxrDhu51uZyB0w6BpIGNow61uaC4gVHV5IG5oacOqbiwgduG7m2kgY8OhYyBiaeG7h24gcGjDoXAga8OtY2ggdGjDrWNoIGtpbmggdOG6vyB04burIGNow61uaCBwaOG7pyBDYW5hZGEgdsOgIE5nw6JuIGjDoG5nIFRydW5nIMawxqFuZyBDYW5hZGEsIGPDuW5nIHbhu5tpIGPDoWMgYmnhu4duIHBow6FwIGtp4buDbSBzb8OhdCBk4buLY2ggYuG7h25oLCBjaOG7iSBz4buRIG7DoHkgxJHDoyBi4bqvdCDEkeG6p3UgcGjhu6VjIGjhu5NpIG5oYW5oIGNow7NuZy4gVOG7qyBuxINtIDIwMjMgdHLhu58gxJFpIGNo4buJIHPhu5EgbsOgeSB0aeG6v3AgdOG7pWMgcGjhuqNuIMOhbmggc+G7sSDhu5VuIMSR4buLbmggdsOgIHTEg25nIHRyxrDhu59uZyBj4bunYSBu4buBbiBraW5oIHThur8gQ2FuYWRhLCBt4bq3YyBkw7kgduG6q24gY8OzIG3hu5l0IHPhu5EgYmnhur9uIMSR4buZbmcgZG8gY8OhYyB54bq/dSB04buRIHRvw6BuIGPhuqd1IG5oxrAgdMOsbmggaMOsbmggY2jDrW5oIHRy4buLIHbDoCBiaeG6v24gxJHhu5VpIGtow60gaOG6rXUuXA0KQ2jhu4kgc+G7kSBTJlAvVFNYIMSRw6MgY2hvIHRo4bqleSBraOG6oyBuxINuZyBwaOG7pWMgaOG7k2kgbeG6oW5oIG3hur0gc2F1IMSR4bqhaSBk4buLY2ggQ09WSUQtMTksIHBo4bqjbiDDoW5oIHPhu7EgbGluaCBob+G6oXQgdsOgIHPhu6ljIG3huqFuaCBj4bunYSBjw6FjIGPDtG5nIHR5IG5pw6ptIHnhur90IHRyw6puIHPDoG4gZ2lhbyBk4buLY2ggVG9yb250by4gR2nhu5FuZyBuaMawIGjhuqd1IGjhur90IGPDoWMgY2jhu4kgc+G7kSB0aGFtIGNoaeG6v3UsIGNo4buJIHPhu5EgUyZQL1RTWCBjw7MgYmEgY2jhu6ljIG7Eg25nIGNow61uaDogY3VuZyBj4bqlcCBt4buZdCBi4bupYyB0cmFuaCB04buVbmcgcXVhbiBk4buFIGhp4buDdSB24buBIGPDoWNoIGPDoWMgY8O0bmcgdHkgbmnDqm0geeG6v3QgY+G7p2EgbeG7mXQgcXXhu5FjIGdpYSDEkWFuZyB0aOG7sWMgaGnhu4duLCBjdW5nIGPhuqVwIG3hu5l0IHRpw6p1IGNodeG6qW4gxJHhu4MgY8OhYyBxdeG6o24gbMO9IHF14bu5IHNvIHPDoW5oIGvhur90IHF14bqjIGPhu6dhIGjhu40gdsOgIGN1bmcgY+G6pXAgbeG7mXQgY+G6pXUgdHLDumMgaMOsbmggdGjhu6ljIG3DoCBjw6FjIHF14bu5IGdpYW8gZOG7i2NoIHRyYW8gxJHhu5VpIChFVEZzKSB2w6AgcXXhu7kgY2jhu4kgc+G7kSBjw7MgdGjhu4MgdGhlbyBkw7VpLlwNCkhp4buHbiBuYXksIGNo4buJIHPhu5EgUyZQL1RTWCB0aeG6v3AgdOG7pWMgbMOgIGNo4buJIHPhu5EgY2jDrW5oIHBo4bqjbiDDoW5oIHTDrG5oIGjDrG5oIGtpbmggdOG6vyB2w6AgdMOgaSBjaMOtbmggY+G7p2EgQ2FuYWRhLiBDaOG7iSBz4buRIG7DoHkgxJHDs25nIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgdGh1IGjDunQgY8OhYyBuaMOgIMSR4bqndSB0xrAgcXXhu5FjIHThur8gdsOgIG7hu5lpIMSR4buLYSwgY8WpbmcgbmjGsCBnacO6cCBjw6FjIG5ow6AgcXXhuqNuIGzDvSBxdeG7uSDEkcOhbmggZ2nDoSBoaeG7h3Ugc3XhuqV0IGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBDYW5hZGEuDQoNCiMjIyAyLjEuMiBWYWkgdHLDsiBj4bunYSBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIFMmUC9UU1ggdHJvbmcgbuG7gW4ga2luaCB04bq/IENhbmFkYSB2w6AgdG/DoG4gY+G6p3UNCg0KVFNYIGzDoCBzw6BuIGdpYW8gZOG7i2NoIGNo4bupbmcga2hvw6FuIGzhu5tuIG5o4bqldCB2w6AgcXVhbiB0cuG7jW5nIG5o4bqldCB04bqhaSBDYW5hZGEuIE7DsyDEkcOzbmcgdmFpIHRyw7IgbMOgIHRydW5nIHTDom0gdMOgaSBjaMOtbmggY2jDrW5oIGPhu6dhIHF14buRYyBnaWEgbsOgeSwgdGh1IGjDunQgY8OhYyBjw7RuZyB0eSBs4bubbiwgY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIGPDoWMgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggaMOgbmcgxJHhuqd1LiBT4buxIGhp4buHbiBkaeG7h24gdsOgIGhv4bqhdCDEkeG7mW5nIHPDtGkgbuG7lWkgY+G7p2EgVFNYIMSRw6MgZ8OzcCBwaOG6p24geMOieSBk4buxbmcgdsOgIHBow6F0IHRyaeG7g24gdGjhu4sgdHLGsOG7nW5nIHbhu5FuIHThuqFpIENhbmFkYS5cDQpDaOG7iSBz4buRIFMmUC9UU1ggQ29tcG9zaXRlLCBsw6AgY2jhu4kgc+G7kSDEkeG6oWkgZGnhu4duIGNobyB0b8OgbiB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gQ2FuYWRhLCBwaOG6o24gw6FuaCB0w6xuaCBow6xuaCB0w6BpIGNow61uaCwga2luaCB04bq/IHbEqSBtw7QgY+G7p2EgcXXhu5FjIGdpYSBuw6B5LiBCaeG6v24gxJHhu5luZyBj4bunYSBjaOG7iSBz4buRIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIHRoxrDhu5tjIMSRbyBxdWFuIHRy4buNbmcgduG7gSBuaeG7gW0gdGluLCBr4buzIHbhu41uZyBj4bunYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCDEkeG7kWkgduG7m2kgbuG7gW4ga2luaCB04bq/IENhbmFkYS5cDQpLaGkgbuG7gW4ga2luaCB04bq/IENhbmFkYSBwaMOhdCB0cmnhu4NuLCB0xINuZyB0csaw4bufbmcgbeG6oW5oIG3hur0sIGNo4buJIHPhu5EgUyZQL1RTWCBDb21wb3NpdGUgdGjGsOG7nW5nIHTEg25nLCBjaG8gdGjhuqV5IHPhu7EgbOG6oWMgcXVhbiB2w6Agbmnhu4FtIHRpbiBj4bunYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6BvIHRyaeG7g24gduG7jW5nIGtpbmggdOG6vy4gTmfGsOG7o2MgbOG6oWksIGtoaSBu4buBbiBraW5oIHThur8gc3V5IHRob8OhaSwgY2jhu4kgc+G7kSBuw6B5IHRoxrDhu51uZyBnaeG6o20sIHBo4bqjbiDDoW5oIHTDom0gbMO9IGJpIHF1YW4gdsOgIGxvIG5n4bqhaSBj4bunYSBuaMOgIMSR4bqndSB0xrAuIENo4buJIHPhu5EgUyZQL1RTWCBDb21wb3NpdGUga2jDtG5nIGNo4buJIHBo4bqjbiDDoW5oIHTDrG5oIGjDrG5oIGtpbmggdOG6vywgbcOgIGPDsm4g4bqjbmggaMaw4bufbmcgdHLhu7FjIHRp4bq/cCDEkeG6v24gY8OhYyBjaMOtbmggc8OhY2gga2luaCB04bq/IHbEqSBtw7QgY+G7p2EgQ2FuYWRhLiBLaGkgY2jhu4kgc+G7kSBuw6B5IGJp4bq/biDEkeG7mW5nIG3huqFuaCwgTmfDom4gaMOgbmcgVHJ1bmcgxrDGoW5nIENhbmFkYSAoQmFuayBvZiBDYW5hZGEpIHRoxrDhu51uZyBz4bq9IMSRaeG7gXUgY2jhu4luaCBjaMOtbmggc8OhY2ggdGnhu4FuIHThu4csIG5oxrAgdGhheSDEkeG7lWkgbMOjaSBzdeG6pXQsIMSR4buDIGjhu5cgdHLhu6MgaG/hurdjIGtp4buBbSBjaOG6vyBz4buxIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi5cDQpDYW5hZGEgY8OzIG7hu4FuIGtpbmggdOG6vyBwaMOhdCB0cmnhu4NuLCBu4bqxbSB0cm9uZyBjw6FjIG7GsOG7m2MgRzcsIGRvIMSRw7Mgc+G7sSBiaeG6v24gxJHhu5luZyBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gQ2FuYWRhIHPhur0gdMOhYyDEkeG7mW5nIMSR4bq/biB0w6JtIGzDvSB2w6AgaMOgbmggdmkgxJHhuqd1IHTGsCBj4bunYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCBxdeG7kWMgdOG6vy4gS2hpIGNo4buJIHPhu5EgUyZQL1RTWCBDb21wb3NpdGUgdMSDbmcgbeG6oW5oLCBjw6FjIG5ow6AgxJHhuqd1IHTGsCBxdeG7kWMgdOG6vyB0aMaw4budbmcgc+G6vSBnaWEgdMSDbmcgxJHhuqd1IHTGsCB2w6BvIENhbmFkYSwgdsOgIG5nxrDhu6NjIGzhuqFpLlwNCg0KXA0KTmjDrG4gY2h1bmcsIGNo4buJIHPhu5EgUyZQL1RTWCBraMO0bmcgY2jhu4kgbMOgIG3hu5l0IHRoxrDhu5tjIMSRbyBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gbcOgIGPDsm4gbMOgIG3hu5l0IGJp4buDdSB0xrDhu6NuZyBj4bunYSBu4buBbiBraW5oIHThur8gQ2FuYWRhLCBwaOG6o24gw6FuaCBz4buxIHRoxINuZyB0cuG6p20gdsOgIHRp4buBbSBuxINuZyBwaMOhdCB0cmnhu4NuIGPhu6dhIGPDoWMgY8O0bmcgdHkgaMOgbmcgxJHhuqd1IHRyb25nIG7hu4FuIGtpbmggdOG6vyBs4bubbiBuaOG6pXQgdGjhur8gZ2nhu5tpLg0KDQojIyAyLjIgVOG7lW5nIHF1YW4gduG7gSBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIFZOSSAoVmlldCBOYW0gSW5kZXgpDQoNCkNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4gVk5JIGzDoCBjaOG7iSBz4buRIHRo4buDIGhp4buHbiB4dSBoxrDhu5tuZyBiaeG6v24gxJHhu5luZyBnacOhIGPhu6dhIHThuqV0IGPhuqMgY+G7lSBwaGnhur91IG5pw6ptIHnhur90IHbDoCBnaWFvIGThu4tjaCB0csOqbiBzw6BuIGdpYW8gZOG7i2NoIGNo4bupbmcgSE9TRSAoU+G7nyBHaWFvIGThu4tjaCBDaOG7qW5nIGtob8OhbiBUaMOgbmggcGjhu5EgSOG7kyBDaMOtIE1pbmgpIGzDoCBt4buZdCB0cm9uZyBoYWkgc8OgbiBnaWFvIGThu4tjaCBjaOG7qW5nIGtob8OhbiBxdWFuIHRy4buNbmcgdOG6oWkgVmnhu4d0IE5hbS4gxJDGsOG7o2MgdGjDoG5oIGzhuq1wIG5o4bqxbSBt4bulYyDEkcOtY2ggcGjDoXQgdHJp4buDbiB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4g4bufIGtodSB24buxYyBtaeG7gW4gTmFtLCBWTkkgaOG7lyB0cuG7oyBjw6FjIGRvYW5oIG5naGnhu4dwIHbhu6thIHbDoCBuaOG7jyB0cm9uZyB2aeG7h2MgaHV5IMSR4buZbmcgduG7kW4uXA0KQ2jhu4kgc+G7kSBuw6B5IMSRxrDhu6NjIHhlbSBsw6AgY2jhu4kgYsOhbyBxdWFuIHRy4buNbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0sIMSRxrDhu6NjIHRoZW8gZMO1aSB2w6AgcGjDom4gdMOtY2ggc8OhdCBzYW8gYuG7n2kgY8OhYyBuaMOgIMSR4bqndSB0xrAsIGNodXnDqm4gZ2lhIHBow6JuIHTDrWNoIHbDoCBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIHRyb25nIHbDoCBuZ2/DoGkgbsaw4bubYy4gQmnhur9uIMSR4buZbmcgY+G7p2EgVk5JIMSRxrDhu6NjIHhlbSBsw6AgdGjGsOG7m2MgxJFvIHBo4bqjbiDDoW5oIHTDom0gbMO9IHbDoCBr4buzIHbhu41uZyBj4bunYSB0aOG7iyB0csaw4budbmcgduG7gSB0w6xuaCBow6xuaCBraW5oIHThur8gdsSpIG3DtCwgY8OhYyBjaMOtbmggc8OhY2ggxJFp4buBdSBow6BuaCBj4bunYSBDaMOtbmggcGjhu6csIGPFqW5nIG5oxrAgaGnhu4d1IHF14bqjIGhv4bqhdCDEkeG7mW5nIGPhu6dhIGPDoWMgZG9hbmggbmdoaeG7h3AgbmnDqm0geeG6v3QuDQoNCiMjIyAyLjIuMSBM4buLY2ggc+G7rSBow6xuaCB0aMOgbmggdsOgIHBow6F0IHRyaeG7g24gY+G7p2EgY2jhu4kgc+G7kSBWTkkNCg0KU+G7sSBt4bufIMSR4bqndSBjaG8gY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiBWTkkgxJFpIMSRw7RpIHbhu5tpIHPhu7EgcmEgxJHhu51pIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiB04bqhaSBWaeG7h3QgTmFtLiBN4bufIMSR4bqndSBsw6Agc+G7sSB0aMOgbmggbOG6rXAgY+G7p2EgVeG7tyBiYW4gY2jhu6luZyBraG/DoW4gTmjDoCBOxrDhu5tjIFZp4buHdCBOYW0g4oCTIDI4LzExLzE5OTYgbmjGsG5nIHBo4bqjaSDEkeG6v24gbmfDoHkgMTEvMDcvMTk5OCB0aMOsIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIG3hu5tpIMSRxrDhu6NjIGtoYWkgc2luaC4gxJDhur9uIG5nw6B5IDI4LzA3LzIwMDAsIHBoacOqbiBnaWFvIGThu4tjaCDEkeG6p3UgdGnDqm4gxJHGsOG7o2MgZGnhu4VuIHJhLiBUdXkgbmhpw6puIGzDumMgxJHDsyBjaOG7iSBjw7MgMiBtw6MgY+G7lSBwaGnhur91IMSRxrDhu6NjIGdpYW8gZOG7i2NoIGzDoCBSRUUgKEPDtG5nIHR5IGPhu5UgcGjhuqduIGPGoSDEkWnhu4duIGzhuqFuaCkgdsOgIFNBTSAoQ8O0bmcgdHkgY+G7lSBwaOG6p24gU0FNIEhvbGRpbmdzKS4gQ8OhYyBj4buZdCBt4buRYyDEkcOhbmcgbmjhu5sgdOG7qyBuxINtIDIwMDEgxJHhur9uIGhp4buHbiBuYXkgdGhlbyB0aOG7kW5nIGvDqiBjaOG7iSBz4buRIFZOSToNCg0KLSAgIDIwMDEtMjAwNTogR2lhaSDEkW/huqFuIG7DoHkgY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIGRvYW5oIG5naGnhu4dwIMSRYW5nIHRyb25nIGdpYWkgxJFv4bqhbiBsw6BtIHF1ZW4gbsOqbiBraMO0bmcgY8OzIG5oaeG7gXUgY2h1eeG7g24gYmnhur9uLiBW4buRbiBob8OhIHRo4buLIHRyxrDhu51uZyBsw7pjIG7DoHkgY2jhu4kgY2hp4bq/bSAxJSBHRFAuDQoNCi0gICAyMDA2OiBD4bulIHRo4buDIHbDoG8gdGjDoW5nIDEvMjAwNiwgVklOQU1JTEsgZ2nDunAgZ2nDoSB0cuG7iyB24buRbiBob8OhIHPDoG4gSE9TRSB0xINuZyBn4bqlcCDEkcO0aSB0cm9uZyBuZ8OgeS4gxJDhu5NuZyB0aOG7nWkgNzQgZG9hbmggbmdoaeG7h3AgY8WpbmcgbmnDqm0geeG6v3QgdHLDqm4gc8OgbiBIT1NFIHRyb25nIG7Eg20gbsOgeSB2w6AgZ2nDunAgY2hvIGNo4buJIHPhu5EgVk5JIHTEg25nIDE0NCUgY2jhu4kgdHJvbmcgMSBuxINtLg0KDQotICAgMjAwNzogVsOgbyBuZ8OgeSAxMi8wMy8yMDA3IGNo4buJIHPhu5EgVk5pbmRleCDEkeG6oXQgbOG7i2NoIHPhu60ga+G6v3QgcGhpw6puIG3hu58gdsOgIGNhbyBoxqFuIDMsNiBs4bqnbiBzbyB24bubaSB0aOG7nWkgxJFp4buDbSDEkeG6p3UgbsSDbSAyMDA2Lg0KDQotICAgMjAwODogxJDDonkgbMOgIHRo4budaSDEkWnhu4NtIGto4bunbmcgaG/huqNuZyBraW5oIHThur8gZGnhu4VuIHJhIHRvw6BuIGPhuqd1LCBjaOG7iSBz4buRIFZOSSBnaeG6o20gNjYlIHbDoCBnacOhIHRy4buLIHbhu5FuIGjDs2EgdHLDqm4gc8OgbiBIT1NFIGPFqW5nIGJheSBoxqFpIDE5NSB04bu3IMSR4buTbmcuDQoNCi0gICBDaG8gxJHhur9uIG7Eg20gMjAxOSwgdGjhu4sgdHLGsOG7nW5nIFZp4buHdCBOYW0gxJHhuqF0IG3hu5FjIHTEg25nIMSRaeG7g20gY2FvIG5o4bqldCB0cm9uZyBraHUgduG7sWMgxJDDtG5nIE5hbSDDgS4NCg0KLSAgIE7Eg20gMjAyMCDigJMgMjAyMSBsw6AgdGjhu51pIGvhu7MgZOG7i2NoIGLhu4duaCBuw6puIGPDoWMgbmjDoCDEkeG6p3UgdMawIGPDsyB4dSBoxrDhu5tuZyB0w6xtIMSR4bq/biBjaOG7qW5nIGtob8OhbiDEkeG7gyB0xINuZyB0w6BpIHPhuqNuIG5oaeG7gXUgaMahbi4gxJDhurdjIGJp4buHdCB0w61uaCBjaHVuZyBj4bqjIG7Eg20gMjAyMSwgVk5JIHTEg25nIGfhuqduIDM1LDc0JSwgbeG7qWMgdMSDbmcgbsOgeSDEkcOjIGdpw7pwIFZp4buHdCBOYW0gbOG7jXQgdsOgbyB0b3AgNyBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIHTEg25nIG3huqFuaCBuaOG6pXQgdGjhur8gZ2nhu5tpLg0KDQotICAgVHV5IG5oacOqbiwga+G7gyB04burIMSR4bqndSBuxINtIDIwMjIsIGRvIOG6o25oIGjGsOG7n25nIGPhu6dhIHTDrG5oIGjDrG5oIHRo4bq/IGdp4bubaSwgbOG6oW0gcGjDoXQgdMSDbmcgY2FvLCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gxJHDoyBjw7Mgc+G7sSBz4buldCBnaeG6o20gbeG6oW5oLg0KDQotICAgVOG7lW5nIGvhur90IGPhuqMgbsSDbSAyMDIzLCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gduG6q24gbWFuZyB24buBIHRow6BuaCBxdeG6oyB0w61jaCBj4buxYywgZ2hpIG5ow6JuIGNo4buJIHPhu5EgVk5JIG7Eg20gMjAyMyB0xINuZyAxMi4yJS4NCg0KUXVhIGfhuqduIGhhaSB0aOG6rXAga+G7tyBwaMOhdCB0cmnhu4NuLCBIT1NFIHbDoCBjaOG7iSBz4buRIFZOSSDEkcOjIGNo4bupbmcga2nhur9uIHPhu7EgdMSDbmcgdHLGsOG7n25nIHbGsOG7o3QgYuG6rWMgY+G6oyB24buBIHPhu5EgbMaw4bujbmcgY8O0bmcgdHkgbmnDqm0geeG6v3QgdsOgIGdpw6EgdHLhu4sgZ2lhbyBk4buLY2guIMSQaeG7gXUgbsOgeSBraOG6s25nIMSR4buLbmggdmFpIHRyw7IgY+G7p2EgY2jhu4kgc+G7kSBWTkkgbmjGsCBt4buZdCB0cuG7pSBj4buZdCBxdWFuIHRy4buNbmcgdHJvbmcgaOG7hyB0aOG7kW5nIHTDoGkgY2jDrW5oIFZp4buHdCBOYW0sIMSRw7NuZyBnw7NwIHTDrWNoIGPhu7FjIHbDoG8gc+G7sSBwaMOhdCB0cmnhu4NuIGLhu4FuIHbhu69uZyBj4bunYSBu4buBbiBraW5oIHThur8gxJHhuqV0IG7GsOG7m2MuDQoNCiMjIyAyLjIuMiBWYWkgdHLDsiBj4bunYSBjaOG7iSBz4buRIFZOSSDEkeG7kWkgduG7m2kgbuG7gW4ga2luaCB04bq/IFZp4buHdCBOYW0NCg0KVk5JIMSRxrDhu6NjIHhlbSBuaMawIG3hu5l0ICJ0aMaw4bubYyDEkW8iIGPhu6dhIG7hu4FuIGtpbmggdOG6vyBWaeG7h3QgTmFtLiBCaeG6v24gxJHhu5luZyBj4bunYSBWTkkgcGjhuqNuIMOhbmggdHLhu7FjIHRp4bq/cCB0w6xuaCBow6xuaCBraW5oIHThur8gdsSpIG3DtCwgYmFvIGfhu5NtIHTEg25nIHRyxrDhu59uZyBHRFAsIGzhuqFtIHBow6F0LCBsw6NpIHN14bqldCwgY2jDrW5oIHPDoWNoIHTDoGkga2jDs2EgdsOgIHRp4buBbiB04buHLCB2LnYuIEtoaSBu4buBbiBraW5oIHThur8gdMSDbmcgdHLGsOG7n25nLCBob+G6oXQgxJHhu5luZyBz4bqjbiB4deG6pXQgdsOgIGtpbmggZG9hbmggY+G7p2EgY8OhYyBkb2FuaCBuZ2hp4buHcCB0aHXhuq1uIGzhu6NpLCBWTkkgdGjGsOG7nW5nIHPhur0gdMSDbmcgbMOqbi4gTmfGsOG7o2MgbOG6oWksIGtoaSBu4buBbiBraW5oIHThur8gZ+G6t3Aga2jDsyBraMSDbiwgVk5JIHPhur0gZ2nhuqNtIMSRaeG7g20uXA0KVGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gbsOzaSBjaHVuZyB2w6AgY2jhu4kgc+G7kSBWTkkgbsOzaSByacOqbmcgxJHDs25nIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgdGh1IGjDunQgduG7kW4gxJHhuqd1IHTGsCwgY+G6oyB0cm9uZyB2w6Agbmdvw6BpIG7GsOG7m2MsIHbDoG8gbuG7gW4ga2luaCB04bq/LiBLaGkgVk5JIHTEg25nLCBuw7MgdOG6oW8gdMOibSBsw70gdMOtY2ggY+G7sWMgY2hvIG5ow6AgxJHhuqd1IHTGsCwga2h1eeG6v24ga2jDrWNoIGjhu40gxJHhuqd1IHTGsCB2w6BvIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtLiDEkGnhu4F1IG7DoHkgZ8OzcCBwaOG6p24gYuG7lSBzdW5nIG5ndeG7k24gduG7kW4gxJHhuqd1IHTGsCBjaG8gY8OhYyBkb2FuaCBuZ2hp4buHcCwgaOG7lyB0cuG7oyBz4buxIHBow6F0IHRyaeG7g24gY+G7p2EgbuG7gW4ga2luaCB04bq/LlwNCkPDsm4gxJHGsOG7o2Mgc+G7rSBk4bulbmcgbmjGsCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggxJHhu4MgxJHDoW5oIGdpw6EgdsOgIMSRaeG7gXUgY2jhu4luaCBjw6FjIGNow61uaCBzw6FjaCBraW5oIHThur8gdsSpIG3DtCBj4bunYSBDaMOtbmggcGjhu6cuIEPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHRoxrDhu51uZyB0aGVvIGTDtWkgc8OhdCBkaeG7hW4gYmnhur9uIGPhu6dhIFZOSSDEkeG7gyDEkcawYSByYSBjw6FjIHF1eeG6v3QgxJHhu4tuaCB24buBIGNow61uaCBzw6FjaCB0aeG7gW4gdOG7hywgdMOgaSBraMOzYSwgbmjhurFtIHTDoWMgxJHhu5luZyDEkeG6v24gdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHbDoCBo4buXIHRy4bujIHPhu7EgcGjDoXQgdHJp4buDbiBj4bunYSBu4buBbiBraW5oIHThur8uXA0KU+G7sSBiaeG6v24gxJHhu5luZyBj4bunYSBjaOG7iSBz4buRIFZOSSBjw7JuIHThuqFvIHJhIGhp4buHdSDhu6luZyBsYW4gdOG7j2EgxJHhur9uIGPDoWMgbMSpbmggduG7sWMga2jDoWMgY+G7p2EgbuG7gW4ga2luaCB04bq/LiBLaGkgVk5JIHTEg25nLCBuw7MgZ2nDunAgdMSDbmcgZ2nDoSB0cuG7iyB0w6BpIHPhuqNuLCB04bqhbyBj4bqjbSBnacOhYyBnacOgdSBjw7MgY2hvIG5nxrDhu51pIGTDom4sIHThu6sgxJHDsyB0aMO6YyDEkeG6qXkgdGnDqnUgZMO5bmcgdsOgIMSR4bqndSB0xrAgdsOgIG5nxrDhu6NjIGzhuqFpLg0KDQojIENIxq/GoE5HIElJSTogQ8agIFPhu54gTMOdIFRIVVnhur5UIFbDgCBUw5RORyBRVUFOIE5HSEnDik4gQ+G7qFUNCg0KIyMgMy4xIEPGoSBz4bufIGzDvSB0aHV54bq/dCB24buBIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbg0KDQojIyMgMy4xLjEgVGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuDQoNClRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBsw6AgbeG7mXQgdGjhu4sgdHLGsOG7nW5nIG3DoCDhu58gbsahaSDEkcOzIG5nxrDhu51pIHRhIG11YSBiw6FuLCBjaHV54buDbiBuaMaw4bujbmcsIHRyYW8gxJHhu5VpIGNo4bupbmcga2hvw6FuIG5o4bqxbSBt4bulYyDEkcOtY2gga2nhur9tIGzhu51pLiBUdXkgbmhpw6puLCDEkcOzIGPDsyB0aOG7gyBsw6AgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hv4bqjbiB04bqtcCB0cnVuZyBob+G6t2MgcGhpIHThuq1wIHRydW5nLlwNClTDrW5oIHThuq1wIHRydW5nIOG7nyDEkcOieSBsw6AgbXXhu5FuIG7Ds2kgxJHhur9uIHZp4buHYyBjw6FjIGdpYW8gZOG7i2NoIMSRxrDhu6NjIHThu5UgY2jhu6ljIHThuq1wIHRydW5nIHRoZW8gbeG7mXQgxJHhu4thIMSRaeG7g20gduG6rXQgY2jhuqV0LiBIw6xuaCB0aMOhaSDEkWnhu4NuIGjDrG5oIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiB04bqtcCB0cnVuZyBsw6AgU+G7nyBnaWFvIGThu4tjaCBjaOG7qW5nIGtob8OhbiAoU3RvY2sgZXhjaGFuZ2UpLiBU4bqhaSBT4bufIGdpYW8gZOG7i2NoIGNo4bupbmcga2hvw6FuIChTR0RDSyksIGPDoWMgZ2lhbyBk4buLY2ggxJHGsOG7o2MgdOG6rXAgdHJ1bmcgdOG6oWkgbeG7mXQgxJHhu4thIMSRaeG7g207IGPDoWMgbOG7h25oIMSRxrDhu6NjIGNodXnhu4NuIHThu5tpIHPDoG4gZ2lhbyBk4buLY2ggdsOgIHRoYW0gZ2lhIHbDoG8gcXXDoSB0csOsbmggZ2jDqXAgbOG7h25oIMSR4buDIGjDrG5oIHRow6BuaCBuw6puIGdpw6EgZ2lhbyBk4buLY2guIC4gQ8OhYyBnaWFvIGThu4tjaCB0csOqbiB0aOG7iyB0csaw4budbmcgbsOgeSBjaOG7i3Ugc+G7sSDEkWnhu4F1IHBo4buRaSBj4bunYSBsdeG6rXQgY2jhu6luZyBraG/DoW4gdsOgIGPGoSBxdWFuIOG7pnkgYmFuIENo4bupbmcga2hvw6FuIE5ow6Agbsaw4bubYyBkbyDEkcOzIHLhu6dpIHJvIGPhu6dhIG7DsyBz4bq9IHRo4bqlcCBoxqFuLlwNClRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBwaGkgdOG6rXAgdHJ1bmcgY8OybiBn4buNaSBsw6AgdGjhu4sgdHLGsOG7nW5nIE9UQyAob3ZlciB0aGUgY291bnRlcikuIFRyw6puIHRo4buLIHRyxrDhu51uZyBPVEMsIGPDoWMgZ2lhbyBk4buLY2gga2jDtG5nIGPhu5EgxJHhu4tuaCBtw6AgxJHGsOG7o2MgdGnhur9uIGjDoG5oIHF1YSBt4bqhbmcgbMaw4bubaSBjw6FjIGPDtG5nIHR5IGNo4bupbmcga2hvw6FuIHBow6JuIHTDoW4gdHLDqm4ga2jhuq9wIHF14buRYyBnaWEgdsOgIMSRxrDhu6NjIG7hu5FpIHbhu5tpIG5oYXUgYuG6sW5nIG3huqFuZyDEkWnhu4duIHThu60uIEdpw6EgdHLDqm4gdGjhu4sgdHLGsOG7nW5nIG7DoHkgxJHGsOG7o2MgaMOsbmggdGjDoG5oIHRoZW8gcGjGsMahbmcgdGjhu6ljIHRob+G6oyB0aHXhuq1uLg0KDQojIyMgMy4xLjIgQ2jhu6ljIG7Eg25nIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbg0KDQpUaOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gcmEgxJHhu51pIGPDsyA1IGNo4bupYyBuxINuZyBjaMOtbmg6DQoNCi0gICBIdXkgxJHhu5luZyB24buRbiDEkeG6p3UgdMawIGNobyBu4buBbiBraW5oIHThur8NCg0KLSAgIEN1bmcgY+G6pXAgbcO0aSB0csaw4budbmcgxJHhuqd1IHTGsCBjaG8gY8O0bmcgY2jDum5nDQoNCi0gICBU4bqhbyB0w61uaCB0aGFuaCBraG/huqNuIGNobyBjw6FjIGNo4bupbmcga2hvw6FuDQoNCi0gICDEkMOhbmggZ2nDoSBob+G6oXQgxJHhu5luZyBj4bunYSBkb2FuaCBuZ2hp4buHcA0KDQotICAgVOG6oW8gbcO0aSB0csaw4budbmcgZ2nDunAgQ2jDrW5oIHBo4bunIHRo4buxYyBoaeG7h24gY8OhYyBjaMOtbmggc8OhY2gga2luaCB04bq/IHbEqSBtw7QuDQoNClRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiDEkcOzbmcgdmFpIHRyw7IgdGhlbiBjaOG7kXQgdHJvbmcgdmnhu4djIGh1eSDEkeG7mW5nIHbhu5FuLCBjdW5nIGPhuqVwIGvDqm5oIMSR4bqndSB0xrAsIMSR4buLbmggZ2nDoSBkb2FuaCBuZ2hp4buHcCB2w6AgaOG7lyB0cuG7oyB0aOG7sWMgaGnhu4duIGNow61uaCBzw6FjaCBraW5oIHThur8gdsSpIG3DtC4gU+G7sSBwaMOhdCB0cmnhu4NuIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBnw7NwIHBo4bqnbiB0aMO6YyDEkeG6qXkgdMSDbmcgdHLGsOG7n25nIGtpbmggdOG6vywgZ2lhIHTEg25nIGhp4buHdSBxdeG6oyDEkeG6p3UgdMawIHbDoCBxdeG6o24gdHLhu4sgZG9hbmggbmdoaeG7h3AsIMSR4buTbmcgdGjhu51pIHThuqFvIHJhIG3hu5l0IGjhu4cgdGjhu5FuZyB0w6BpIGNow61uaCB24buvbmcgbeG6oW5oIGNobyBz4buxIHBow6F0IHRyaeG7g24gYuG7gW4gduG7r25nIGPhu6dhIG7hu4FuIGtpbmggdOG6vy4NCg0KIyMjIDMuMS4zIE5ndXnDqm4gdOG6r2MgaG/huqF0IMSR4buZbmcNCg0KVHJvbmcgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGPDsyBt4buZdCBz4buRIG5ndXnDqm4gdOG6r2MgxJHGsOG7o2MgY29pIGzDoCBuZ3V5w6puIGzDvSBjxqEgYuG6o24gxJHhu4MgdGjhu4sgdHLGsOG7nW5nIG7DoHkgY8OzIHRo4buDIGhv4bqhdCDEkeG7mW5nIG5oxrA6IG5ndXnDqm4gdOG6r2MgY+G6oW5oIHRyYW5oLCBuZ3V5w6puIHThuq9jIGPDtG5nIGtoYWksIG5ndXnDqm4gdOG6r2MgY8O0bmcgYuG6sW5nLCBuZ3V5w6puIHThuq9jIHThuq1wIHRydW5nIHbDoCBuZ3V5w6puIHThuq9jIHRydW5nIGdpYW4uIE5oxrBuZyDEkeG7k25nIHRo4budaSBuZ3V5w6puIHThuq9jIGNo4bunIGNo4buRdCBjaG8gY+G6pXUgdHLDumMgaG/huqF0IMSR4buZbmcgdHLDqm4gdGjhu4sgdHLGsOG7nW5nLlwNCk5ndXnDqm4gdOG6r2MgY+G6oW5oIHRyYW5oOiBnacOhIGPhuqMgdHLDqm4gVFRDSyBwaOG6o24gw6FuaCBxdWFuIGjhu4cgY3VuZyBj4bqndSB24buBIGNo4bupbmcga2hvw6FuIHbDoCB0aOG7gyBoaeG7h24gdMawxqFuZyBxdWFuIGPhuqFuaCB0cmFuaCBnaeG7r2EgY8OhYyBjw7RuZyB0eS4gQ8OhYyBuaMOgIHBow6F0IGjDoG5oIGPhuqFuaCB0cmFuaCB24bubaSBuaGF1IMSR4buDIGLDoW4gY2jhu6luZyBraG/DoW4gY+G7p2EgbcOsbmggY2hvIGPDoWMgbmjDoCDEkeG6p3UgdMawLCBjw6FjIG5ow6AgxJHhuqd1IHTGsCDEkcaw4bujYyB04buxIGRvIGzhu7FhIGNo4buNbiBjw6FjIGNo4bupbmcga2hvw6FuIHRoZW8gY8OhYyBt4bulYyB0acOqdSBj4bunYSBtw6xuaC4gS2jDtG5nIG5o4buvbmcgdGjhur8gY8OhYyBuaMOgIMSR4bqndSB0xrAgY8OybiBj4bqhbmggdHJhbmggdMOsbSBrw61tIG3hu6ljIGdpw6EgcGjDuSBo4bujcCBjaG8gY8OhYyBjaOG7qW5nIGtob8OhbiBtw6AgYuG6o24gdGjDom4gxJFhbmcgbuG6r20gZ2nhu69hIG5o4bqxbSBt4bulYyDEkcOtY2ggdGh1IHbhu4EgbOG7o2kgbmh14bqtbiBjYW8gbmjhuqV0LlwNCk5ndXnDqm4gdOG6r2MgY8O0bmcgYuG6sW5nOiBjw7RuZyBi4bqxbmcgY8OzIG5naMSpYSBsw6AgbeG7jWkgbmfGsOG7nWkgdGhhbSBnaWEgdGjhu4sgdHLGsOG7nW5nIMSR4buBdSBwaOG6o2kgdHXDom4gdGjhu6cgbmjhu69uZyBxdXkgxJHhu4tuaCBjaHVuZywgxJHGsOG7o2MgYsOsbmggxJHhurNuZyB0cm9uZyB2aeG7h2MgY2hpYSBz4bq7IHRow7RuZyB0aW4gdsOgIHRyb25nIHZp4buHYyBjaOG6pXAgaMOgbmggY8OhYyBow6xuaCB0aOG7qWMgeOG7rSBwaOG6oXQgbuG6v3UgdmkgcGjhuqFtIHbDoG8gbmjhu69uZyBxdXkgxJHhu4tuaCDEkcOzLlwNCk5ndXnDqm4gdOG6r2MgY8O0bmcga2hhaTogQ2jhu6luZyBraG/DoW4gbMOgIGxv4bqhaSBow6BuZyBob8OhIG1hbmcgdMOtbmggdHLhu6t1IHTGsOG7o25nIG7Dqm4gVFRDSyBwaOG6o2kgxJHGsOG7o2MgeMOieSBk4buxbmcgdHLDqm4gY8ahIHPhu58gaOG7hyB0aOG7kW5nIGPDtG5nIGLhu5EgdGjDtG5nIHRpbiByw7UgcsOgbmcuIEPDoWMgdOG7lSBjaOG7qWMgcGjDoXQgaMOgbmggY8OzIG5naMSpYSB24bulIHBo4bqjaSBjdW5nIGPhuqVwIHRow7RuZyB0aW4gxJHhuqd5IMSR4bunIG5oYW5oIGNow7NuZyB2w6Aga+G7i3AgdGjhu51pIHRow7RuZyBxdWEgY8OhYyBwaMawxqFuZyB0aeG7h24gdGjDtG5nIHRpbiDEkeG6oWkgY2jDum5nLCBT4bufIGdpYW8gZOG7i2NoLCBjw6FjIGPDtG5nIHR5IGNo4bupbmcga2hvw6FuIHbDoCBjw6FjIHThu5UgY2jhu6ljIGPDsyBsacOqbiBxdWFuLlwNCk5ndXnDqm4gdOG6r2MgdHJ1bmcgZ2lhbjogY8OhYyBnaWFvIGThu4tjaCBjaOG7qW5nIGtob8OhbiDEkcaw4bujYyB0aOG7sWMgaGnhu4duIHRow7RuZyBxdWEgdOG7lSBjaOG7qWMgdHJ1bmcgZ2lhbiBsw6AgY8OhYyBjw7RuZyB0eSBjaOG7qW5nIGtob8Ohbi4gVOG6oWkgY8OhYyB0aOG7iyB0csaw4budbmcgcGjDom4gY+G6pXAga2jDoWMgbmhhdSwgY8OhYyBuaMOgIMSR4bqndSB0xrAga2jDtG5nIG11YSB0cuG7sWMgdGnhur9wIGPhu6dhIG5ow6AgcGjDoXQgaMOgbmggbcOgIG11YSB04burIGPDoWMgbmjDoCBi4bqjbyBsw6NuaCBwaMOhdCBow6BuaC4gSG/hurdjIMSRw7RpIGtoaSB0aMO0bmcgcXVhIGPDoWMgbmdoaeG7h3AgduG7pSBtw7RpIGdp4bubaSwga2luaCBkb2FuaCwgY8OhYyBjw7RuZyB0eSBjaOG7qW5nIGtob8OhbiBtdWEsIGLDoW4gY2jhu6luZyBraG/DoW4gZ2nDunAgY8OhYyBraMOhY2ggaMOgbmcuXA0KTmd1ecOqbiB04bqvYyB04bqtcCB0cnVuZzogbmdoxKlhIGzDoCBjw6FjIGdpYW8gZOG7i2NoIGNo4bupbmcga2hvw6FuIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gdOG6oWkgdGjhu4sgdHLGsOG7nW5nIMSRxrDhu6NjIGNo4buJIMSR4buLbmggbMOgIGjhu6NwIHBow6FwLg0KDQojIyAzLjIgQ8ahIHPhu58gbMO9IHRodXnhur90IHbhu4EgcGjGsMahbmcgcGjDoXAgQ09QVUxBDQoNCiMjIyAzLjIuMSBU4buVbmcgcXVhbiB24buBIHBoxrDGoW5nIHBow6FwIENvcHVsYQ0KDQpUcm9uZyBuaOG7r25nIHRo4bqtcCBr4buJIGfhuqduIMSRw6J5LCBDb3B1bGEgxJHDoyB0cuG7nyB0aMOgbmggbeG7mXQgY8O0bmcgY+G7pSBwaOG7lSBiaeG6v24gdHJvbmcgbcO0IGjDrG5oIGjDs2EgcuG7p2kgcm8sIGLhuqNvIGhp4buDbSB2w6AgdMOgaSBjaMOtbmggbmjhu50ga2jhuqMgbsSDbmcgbcO0IGjDrG5oIGjDs2Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGJp4bq/bi4gQ8OhYyBuaMOgIHBow6JuIHTDrWNoIHRoxrDhu51uZyBwaOG6o2kgbMOgbSB2aeG7h2MgduG7m2kgY8OhYyBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgxJFhIGNoaeG7gXUsIGtoaSBtw6Aga2jDtG5nIGPDsyBt4buZdCBwaMOibiBwaOG7kWkgxJFhIGJp4bq/biByw7UgcsOgbmcuIEjhu40gbXXhu5FuIGtow6FtIHBow6Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGJp4bq/biDEkcaw4bujYyBxdWFuIHTDom0gY8WpbmcgbmjGsCBow6BuaCB2aSBiacOqbiBj4bunYSBjaMO6bmcuIMOdIHTGsOG7n25nIHTDoWNoIG3hu5l0IHBow6JuIHBo4buRaSB0aMOgbmggbeG7mXQgcGjhuqduIG3DtCB04bqjIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgdsOgIG3hu5l0IHBo4bqnbiBjaOG7iSBtw7QgdOG6oyBow6BuaCB2aSBiacOqbiDEkcOjIGThuqtuIMSR4bq/biBraMOhaSBuaeG7h20gduG7gSBjb3B1bGEuXA0KS2jDoWkgbmnhu4dtIGNvcHVsYSDEkcaw4bujYyBnaeG7m2kgdGhp4buHdSBs4bqnbiDEkeG6p3UgYuG7n2kgQWJlIFNrbGFyIG7Eg20gMTk1OSwgdOG7qyAiY29wdWxhIiBi4bqvdCBuZ3Xhu5NuIHThu6sgdGnhur9uZyBMYXRpbmggImNvcHVsYXJlLCIgY8OzIG5naMSpYSBsw6AgImxpw6puIGvhur90IiBob+G6t2MgImvhur90IG7hu5FpIi4gVHV5IG5oacOqbiwgcGjhuqNpIMSR4bq/biBraGkgYsOgaSBiw6FvIEVtYnJlY2h0cyBldCBhbC4gKDE5OTkpIHh14bqldCBoaeG7h24sIOG7qW5nIGThu6VuZyBj4bunYSBjb3B1bGEgbeG7m2kgxJHGsOG7o2MgcGjhu5UgYmnhur9uIHRyb25nIHTDoGkgY2jDrW5oLiBDb3B1bGEgxJHDoyBuaGFuaCBjaMOzbmcgdGh1IGjDunQgxJHGsOG7o2Mgc+G7sSBxdWFuIHTDom0gcuG6pXQgbOG7m24gY+G7p2EgY+G7mW5nIMSR4buTbmcgdGjhu5FuZyBrw6ogdGjhur8gZ2nhu5tpIMSR4buDIHRy4bufIHRow6BuaCBt4buZdCBt4bqjbmcgbmdoacOqbiBj4bupdSBxdWFuIHRy4buNbmcgY+G7p2EgdGjhu5FuZyBrw6ogbmhp4buBdSBjaGnhu4F1LiBOw7MgY8WpbmcgdHLhu58gdGjDoG5oIG3hu5l0IGPDtG5nIGPhu6UgbeG6oW5oLCBraMO0bmcgdGjhu4MgdGhp4bq/dSB0cm9uZyBjw6FjIG5naGnDqm4gY+G7qXUgbGnDqm4gcXVhbiDEkeG6v24ga2luaCB04bq/IHbDoCB0w6BpIGNow61uaC5cDQpWYWkgdHLDsiBj4bunYSBjb3B1bGEgbMOgIGNobyBwaMOpcCBtw7QgaMOsbmggaMOzYSBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGPhu6dhIGPDoWMgxJHhuqFpIGzGsOG7o25nIG5n4bqrdSBuaGnDqm4gdMOhY2ggcuG7nWkgduG7m2kgY8OhYyBwaMOibiBwaOG7kWkgYmnDqm4gY+G7p2EgY8OhYyBiaeG6v24gbsOgeSBoYXkgbsOzaSBjw6FjaCBraMOhYyBsw6AgdOG6oW8gcmEgaMOgbSBwaMOibiBwaOG7kWkgxJFhIGJp4bq/biB04burIGPDoWMgcGjDom4gcGjhu5FpIGJpw6puIGtow6FjIG5oYXUgbeG7mXQgY8OhY2ggxJHhu5ljIGzhuq1wLCB0cm9uZyDEkcOzIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgYmnhur9uIMSRxrDhu6NjIG3DtCB04bqjIGLhu59pIGNvcHVsYS4gLiBDb3B1bGEgbMOgIG3hu5l0IGjDoG0gcGjDom4gcGjhu5FpIHTDrWNoIGzFqXkgxJFhIGJp4bq/biwgxJHGsOG7o2MgeMOhYyDEkeG7i25oIHRyw6puIGtow7RuZyBnaWFuIG5oaeG7gXUgY2hp4buBdSwgduG7m2kgbeG7jWkgcGjDom4gcGjhu5FpIGJpw6puIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCB0cm9uZyBraG/huqNuZyBbMCwxXS5cDQpNw7QgaMOsbmggaMOzYSBz4buxIHBo4bulIHRodeG7mWMgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGPDsyBuaGnhu4F1IGjGoW4gaGFpIGhhaSBiaeG6v24gbmfhuqt1IG5oacOqbiBsw6AgbeG7mXQgbmhp4buHbSB24bulIMSR4bqneSB0aMOhY2ggdGjhu6ljIMSRxrDhu6NjIG5oaeG7gXUgbmjDoCBuZ2hpw6puIGPhu6l1IHF1YW4gdMOibS4gVsOsIHbDonkgcGjGsMahbmcgcGjDoXAgQ29wdWxhIGzDoCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggxJHhu4MgbcO0IGjDrG5oIGjDs2EgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIMSRYSBjaGnhu4F1IHbDoCB4w6FjIMSR4buLbmggcGjDom4gYuG7kSBjaHVuZyBj4bunYSBjaMO6bmcuXA0KTMO9IHRodXnhur90IGNvcHVsYSBk4bqnbiB04bqhbyByYSDEkcaw4bujYyBjw6FjIGLGsOG7m2MgcGjDoXQgdHJp4buDbiB2xrDhu6N0IGLhuq1jIGtoaSBjw6FjIOG7qW5nIGThu6VuZyBj4bunYSBuw7MgdHLhu58gbsOqbiBwaOG7lSBiaeG6v24gbmjhu50gdsOgbyBz4buxIHRp4bq/biBi4buZIGPhu6dhIGPDtG5nIG5naOG7hyB0w61uaCB0b8OhbiB2w6AgcGjhuqduIG3hu4FtIGjhu5cgdHLhu6MuIE5o4budIG5o4buvbmcgxJHhurdjIMSRaeG7g20gbsOgeSwgY29wdWxhIMSRw6MgdHLhu58gdGjDoG5oIG3hu5l0IGPDtG5nIGPhu6UgcXVhbiB0cuG7jW5nIHRyb25nIHZp4buHYyB4w6FjIMSR4buLbmggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHTDoGkgc+G6o24gdMOgaSBjaMOtbmggdsOgIGdp4buvYSB0w6BpIHPhuqNuIHTDoGkgY2jDrW5oIHbhu5tpIHTDoGkgc+G6o24gdGjhu7FjLg0KDQojIyMgMy4yLjIgQ8OhYyBo4buNIGjDoG0gY8ahIGLhuqNuIGPhu6dhIENvcHVsYQ0KDQrhu6huZyBk4bulbmcgcGjGsMahbmcgcGjDoXAgY29wdWxhIMSRw6MgcGjDoXQgdHJp4buDbiBt4bqhbmggbeG6vSB0cm9uZyBuaOG7r25nIHRo4bqtcCBr4bu3IHF1YSwgZOG6q24gxJHhur9uIHZp4buHYyBwaMOhdCB0cmnhu4NuIG5oaeG7gXUgdGjDqm0gcGjGsMahbmcgcGjDoXAgxJHhu4MgbeG7nyBy4buZbmcgY8OhYyBo4buNIGNvcHVsYSBoaeG7h24gY8OzIGhv4bq3YyB04bqhbyByYSBjw6FjIGNvcHVsYSBt4bubaS4gTmjhu69uZyBu4buXIGzhu7FjIG7DoHkgxJHGsOG7o2MgdGjDumMgxJHhuql5IGLhu59pIG1vbmcgbXXhu5FuIGdp4bubaSB0aGnhu4d1IGPDoWMgbcO0IGjDrG5oIG5n4bqrdSBuaGnDqm4gbGluaCBob+G6oXQgaMahbiwgdsaw4bujdCBxdWEgbmjhu69uZyBo4bqhbiBjaOG6vyBj4bunYSBjw6FjIGdp4bqjIMSR4buLbmggdHJ1eeG7gW4gdGjhu5FuZyB2w6AgxJHDtGkga2hpIGtow7RuZyB0aOG7sWMgdGnhu4VuIHbhu4EgcGjDom4gcGjhu5FpIGPhu6dhIGPDoWMgdmVjdG9yIG5n4bqrdSBuaGnDqm4gxJFhIGJp4bq/bi4gTmhp4buBdSBwaMawxqFuZyBwaMOhcCDEkcOjIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGdp4bubaSB0aGnhu4d1IGPDoWMgdGhhbSBz4buRIG3hu5tpIHbDoG8gaG/hurdjIGPDoWMgYmnhur9uIHRo4buDIGPhu6dhIGPDoWMgaOG7jSBjb3B1bGEgaGnhu4duIGPDsywgdOG6oW8gcmEgbeG7mXQgY8O0bmcgY+G7pSBsaW5oIGhv4bqhdCDEkeG7gyBoaeG7g3Ugc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puLsSQ4buDIGPDsyBjw6FpIG5ow6xuIHThu5VuZyBxdWFuIHbhu4Egc+G7sSBwaMOhdCB0cmnhu4NuIGzhu4tjaCBz4butLCBjw6FjIHBow6F0IGhp4buHbiBoaeG7h24gdOG6oWkgdsOgIHRyaeG7g24gduG7jW5nIHTGsMahbmcgbGFpIHRyb25nIGzEqW5oIHbhu7FjIG7DoHksIGPDoWMgbmdoacOqbiBj4bupdSBj4bunYSBEdXJhbnRlIHbDoCBTZW1waSB2w6AgSG9mZXJ0IGV0IGFsLiBjdW5nIGPhuqVwIG5o4buvbmcgcGjDom4gdMOtY2ggc8OidSBz4bqvYywga+G6v3QgaOG7o3AgY8OhYyBsw70gdGh1eeG6v3QgdsOgIGhp4buDdSBiaeG6v3QgbeG7m2kgbmjhuqV0LlwNClPhu7EgeHXhuqV0IGhp4buHbiBj4bunYSBuaGnhu4F1IGjhu40gY29wdWxhIHRyb25nIHRo4budaSBnaWFuIGfhuqduIMSRw6J5IHBo4bqjbiDDoW5oIG5odSBj4bqndSBraMOhbSBwaMOhIGPDoWMgcGjhu6UgdGh14buZYyBj4bqldSB0csO6YyB0cm9uZyBuaGnhu4F1IGzEqW5oIHbhu7FjIGtow6FjIG5oYXUgbmjGsCB0w6BpIGNow61uaCwga2hvYSBo4buNYyB0w61uaCB0b8OgbiBi4bqjbyBoaeG7g20sIGvhu7kgdGh14bqtdCBuZ2hpw6puIGPhu6l1IMSR4buZIHRpbiBj4bqteSwga2hvYSBo4buNYyDEkeG7nWkgc+G7kW5nLCBraG9hIGjhu41jIG3DtGkgdHLGsOG7nW5nLCB0aOG7p3kgdsSDbiBo4buNYyB2w6AgcGjDom4gdMOtY2ggc+G7kW5nIGPDsm4uXA0KQ29wdWxhIMSRxrDhu6NjIHBow6JuIGxv4bqhaSB0aMOgbmggbmhp4buBdSBo4buNIGjDoG0ga2jDoWMgbmhhdSBuaOG6sW0gcGjhu6VjIHbhu6UgY2hvIG3hu6VjIMSRw61jaCB2w6AgdMOtbmggcGjDuSBo4bujcCBj4bunYSBi4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIHRo4buxYyBow6BuaC4gSGnhu4duIG5heSwgY29wdWxhIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBjaGlhIHRow6BuaCBoYWkgbmjDs20gY2jDrW5oIGzDoCBuaMOzbSBFbGlwIHbDoCBuaMOzbSBBcmNoaW1lZGVhbi4NCg0KIyMjIyAzLjIuMi4xIE5ow7NtIENvcHVsYSBo4buNIEFyY2hpbWVkZWFuDQoNCk5ow7NtIEFyY2hpbWVkZWFuIGJhbyBn4buTbSBuaGnhu4F1IGxv4bqhaSBjb3B1bGEga2jDoWMgbmhhdSwgbmjGsCBDbGF5dG9uLCBHdW1iZWwsIEZyYW5rLCBKb2UsIHbDoCBjw6FjIHBoacOqbiBi4bqjbiBt4bufIHLhu5luZyBj4bunYSBjaMO6bmcgbmjGsCBSb3TigJNDbGF5dG9uLCBSb3TigJNHdW1iZWwsIEJCMSwgQkI2LCBCQjcsIHbDoCBCQjguIE3hu5dpIGxv4bqhaSBiaeG7hXUgZGnhu4VuIG3hu5l0IGtp4buDdSBwaOG7pSB0aHXhu5ljIMSR4bq3YyBiaeG7h3QgY+G7p2EgYmnhur9uIG5n4bqrdSBuaGnDqm4uIE5ow7NtIENvcHVsYSBo4buNIEFyY2hpbWVkZWFuIGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyBj4bunYSBtw7QgaMOsbmggcGjhu6UgdGh14buZYyDEkWEgYmnhur9uLCB4deG6pXQgaGnhu4duIGzhuqduIMSR4bqndSB0acOqbiB0cm9uZyBi4buRaSBj4bqjbmgga2jDtG5nIGdpYW4gbWV0cmljIG3DoCBraG/huqNuZyBjw6FjaCBsw6AgbeG7mXQgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0ICh0aGVvICJQcm9iYWJpbGlzdGljIE1ldHJpYyBTcGFjZXMuTm9ydGgtSG9sbGFuZCBTZXJpZXMgaW4gUHJvYmFiaWxpdHkgYW5kIEFwcGxpZWQgTWF0aGVtYXRpY3MiIGPhu6dhIFNjaHdlaXplciwgQi4gYW5kIFNrbGFyLCBBLiwgMTk4MykuIFRoZW8gdMOhYyBnaeG6oyBMaW5nLCBDLi1ILCDDtG5nIGNobyBy4bqxbmcgbmjDs20gQXJjaGltZWRlYW4gxJHGsOG7o2MgYmnhu4N1IGRp4buFbiB04buVbmcgcXXDoXQgYuG7n2kgaMOgbSBzYXU6XA0KJCRDXGxlZnQodV8xLFwgLi4uLHVfZFxyaWdodClcID1cIFx2YXJwaGlcbGVmdFtcdmFycGhpXnstMX1cbGVmdCh1XzFccmlnaHQpXCArLi4uK1x2YXJwaGleey0xfVxsZWZ0KHVfZFxyaWdodClccmlnaHRdJCQNCg0KduG7m2kgJFxsZWZ0KHVfMSxcIC4uLix1X2RccmlnaHQpXGluXGxlZnRbMCwxXHJpZ2h0XSQgbMOgIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gxJHhu5NuZyBwaMOibiBwaOG7kWkgdHJvbmcga2hv4bqjbmcgWzAsMV0uXA0KTmhp4buBdSBjb3B1bGEgaOG7jSBBcmNoaW1lZGVhbiBjw7MgdGjhu4MgeOG7rSBsw70gdGjhu5FuZyBrw6ogxJHDoyDEkcaw4bujYyB4w6J5IGThu7FuZyB2w6Agc+G7rSBk4bulbmcgdHJvbmcgbmhp4buBdSDhu6luZyBk4bulbmcgdGjhu7FjIHRp4buFbiwgYmFvIGfhu5NtIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0IGPhu6dhIMSRYSBiaeG6v24sIG3DtCBow6xuaCBow7NhIHThu5VuIHRo4bqldCBi4bqjbyBoaeG7g20gdsOgIHBo4buVIGJp4bq/biB0cm9uZyBjaHV5w6puIG5nw6BuaCB0w6BpIGNow61uaCDEkeG7i25oIGzGsOG7o25nLg0KDQojIyMjIDMuMi4yLjIgTmjDs20gQ29wdWxhIGjhu40gRWxpcA0KDQpOaMOzbSBFbGlwIGJhbyBn4buTbSBoYWkgbG/huqFpIGNow61uaCBsw6AgY29wdWxhIEdhdXNzaWFuIHbDoCBjb3B1bGEgU3R1ZGVudC10LiBO4bq/dSBjb3B1bGEgR2F1c3NpYW4gZMawYSB0csOqbiBwaMOibiBwaOG7kWkgY2h14bqpbiB0aMaw4budbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgbcO0IGjDrG5oIGjDs2EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biB0cm9uZyDEkWnhu4F1IGtp4buHbiBiw6xuaCB0aMaw4budbmcsIGtoaSBjw6FjIGJp4bq/biBn4bqnbiBnacOhIHRy4buLIHRydW5nIGLDrG5oIHbDoCBjw7MgdGjhu4MgxJHGsOG7o2MgY29pIGzDoCDEkeG7mWMgbOG6rXAga2hpIHRo4buLIHRyxrDhu51uZyDhu5VuIMSR4buLbmguIE5nxrDhu6NjIGzhuqFpLCBjb3B1bGEgU3R1ZGVudC10IHBow7kgaOG7o3AgaMahbiB0cm9uZyBjw6FjIHTDrG5oIGh14buRbmcgdGjhu4sgdHLGsOG7nW5nIGJp4bq/biDEkeG7mW5nLCB24bubaSBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIGdpYSB0xINuZyBraGkgc+G7kSBi4bqtYyB04buxIGRvIChkZikgZ2nhuqNtLlwNClRyb25nIHRo4buxYyB04bq/LCBt4buZdCB0cm9uZyBuaOG7r25nIGNvcHVsYSBwaOG7lSBiaeG6v24gbmjhuqV0IHRyb25nIHZp4buHYyBtw7QgaMOsbmggaMOzYSBk4buvIGxp4buHdSB0w6BpIGNow61uaCDEkWEgYmnhur9uIGPDsyB0aOG7gyBsw6AgY29wdWxhIFN0dWRlbnQtdCwgxJHGsOG7o2Mgc3V5IHJhIHThu6sgcGjDom4gcGjhu5FpIHN0dWRlbnQgxJFhIGJp4bq/bi4gxJBp4buBdSBuw6B5IGzDoCBkbyBz4buxIMSRxqFuIGdp4bqjbiBj4bunYSBuw7MgduG7gSBt4bq3dCBtw7QgcGjhu49uZyB2w6AgaGnhu4d1IGNodeG6qW4ga+G6v3QgaOG7o3AgduG7m2kga2jhuqMgbsSDbmcgbcO0IGjDrG5oIGjDs2Egc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSwgxJFp4buBdSB0aMaw4budbmcgcXVhbiBzw6F0IHRo4bqleSB0cm9uZyBk4buvIGxp4buHdSBs4bujaSBuaHXhuq1uIHTDoGkgY2jDrW5oLiBUaOG7sWMgdOG6vyBjw7Mgbmjhu69uZyB0csaw4budbmcgaOG7o3Aga2jDtG5nIHRo4buDIMSRxrDhu6NjIHjhu60gbMOtIMSR4bqneSDEkeG7pyBi4bqxbmcgY29wdWxhIEdhdXNzaWFuIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZy4gVsOsIHbhuq15LCBjw6FjIG5naGnDqm4gY+G7qXUgZ+G6p24gxJHDonkgY+G7p2EgTWFzaGFsIGV0IGFsLiAoMjAwMykgdsOgIEJyZXltYW5uIGV0IGFsLiAoMjAwMykgxJHDoyBjaOG7qW5nIG1pbmggcuG6sW5nIHPhu7EgcGjDuSBo4bujcCB0aOG7sWMgbmdoaeG7h20gY+G7p2EgY29wdWxhIHN0dWRlbnQtdCB0aMaw4budbmcgdsaw4bujdCB0cuG7mWkgaMahbiBzbyB24bubaSBjb3B1bGEgR2F1c3NpYW4uIFR1eSBuaGnDqm4sIG7DsyDEkcO0aSBraGkgYuG7iyBo4bqhbiBjaOG6vyBraGkgY2jhu4kgY8OzIG3hu5l0IHRoYW0gc+G7kSBjaG8gYuG6rWMgdOG7sSBkbyAoZG9mKSwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBnaeG6o20gxJFpIHPhu7EgaGnhu4d1IHF14bqjIGPhu6dhIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIHPhu7EgcGjhu6UgdGh14buZYyDEkXXDtGkgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIMSRYSBiaeG6v24uDQoNCiMjIyAzLjIuMyBIw6BtIGNvcHVsYSB2w6Ag4bupbmcgZOG7pW5nDQoNCkjDoG0gQ29wdWxhIGPDsyAkRih4XzEsIHhfMiwgLi4uLCB4X24pID0gQyhGXzEoeF8xKSwgRl8yKHhfMiksIC4uLiwgRl9uKHhfbikpJCBsw6AgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gbGnDqm4gdOG7pWMgdOG7qyAkRl8xLFwgRl8yLFwgRl8zLC4uLlwgRl9uJC4gVHJvbmcgxJHDsyBGIGzDoCBow6BtIHBow6JuIHBo4buRaSDEkeG7k25nIHRo4budaSwga2hpIMSRw7MgQ29wdWxhIHPhur0gdOG7k24gdOG6oWkgY8OzIGThuqFuZyAkQzpcIFswLDFdXmQkXA0KJEYoeF8xLFwgeF8yLFwgeF8zLC4uLlwgeF9uKT1cIEMoRl8xKHhfMSksXCBGXzIoeF8yKSxcIEZfMyh4XzMpLC4uLlwgRl9uKHhfbikpJFwNCkvhur90IHF14bqjIGPGoSBi4bqjbiDEkeG6p3UgdGnDqm4gduG7gSBsw70gdGh1eeG6v3QgY29wdWxhIMSRw6MgxJHGsOG7o2MgU2tsYXIgKDE5NTkpIGPDtG5nIGLhu5EuIEvhur90IHF14bqjIG7DoHkgxJHhurd0IG7hu4FuIG3Ds25nIGNobyB04bqldCBj4bqjIGPDoWMgbmdoacOqbiBj4bupdSB0cm9uZyBsxKluaCB24buxYyBuw6B5IHbDrCBuw7MgY2hvIHBow6lwIHBow6JuIHTDoWNoIGLhuqV0IGvhu7MgcGjDom4gcGjhu5FpIGhhaSBiaeG6v24gbsOgbyB0aMOgbmggY8OhYyBwaMOibiBwaOG7kWkgxJHGoW4gYmnhur9uIGPDuW5nIHbhu5tpIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMuXA0KxJDhu5FpIHbhu5tpIGLhuqV0IGvDrCBow6BtIHBow6JuIHBo4buRaSBoYWkgYmnhur9uIMSR4buTbmcgbmjhuqV0IEYgduG7m2kgaMOgbSBwaMOibiBwaOG7kWkgYmnhur9uIGxpw6puIHThu6VjIHThu6sgdOG7qyAkRl8xLFwgRl8yJCwgdGEgxJHGsOG7o2MgbeG7mXQgaMOgbSBjb3B1bGEgQyBzYW8gY2hvOg0KDQokRih4LFwgeSk9XCBDKEZfMSh4XzEpLFwgRl8yKHkpKSQNCg0KXA0KduG7m2kgeCwgeSAkXGluXCBcbWF0aGJie1J9XCA9XGxlZnQoLVxpbmZ0eSwrXGluZnR5XHJpZ2h0KSRcDQpUcm9uZyBuaGnhu4F1IG7Eg20sIGjhuqd1IGjhur90IGPDoWMga+G6v3QgcXXhuqMgbGnDqm4gcXVhbiDEkeG6v24gcGjGsMahbmcgcGjDoXAgY29wdWxhIMSR4buBdSDEkcaw4bujYyBk4buxYSB0csOqbiBr4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1IGPhu6dhIFNjaHdlaXplciB2w6AgU2tsYXIgKDE5ODMpLg0KDQojIyMgMy4yLjQgSOG7hyBz4buRIHBo4bulIHRodeG7mWMgxJF1w7RpDQoNCk3hu5l0IHRyb25nIG5o4buvbmcgxJHhurdjIMSRaeG7g20gbuG7lWkgYuG6rXQgbmjhuqV0IGPhu6dhIHBoxrDGoW5nIHBow6FwIGNvcHVsYSBjaMOtbmggbMOgIHjDoWMgxJHhu4tuaCDEkcaw4bujYyBo4buHIHPhu5EgcGjhu6UgdGh14buZYyDEkXXDtGkgaGF5IGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgxJF1w7RpLiBUaMaw4budbmcgxJHGsOG7o2Mgw6FwIGThu6VuZyDEkeG7gyDEkW8gbMaw4budbmcgc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGdpw6EgdHLhu4sgY+G7p2EgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiDEkeG7kWkgduG7m2kgY8OhYyBtw7QgaMOsbmggY29wdWxhLiBCw6puIGPhuqFuaCDEkcOzIGzDoCBtw7QgdOG6oyBt4bupYyDEkeG7mSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGPDsyB4dSBoxrDhu5tuZyBjxaluZyDEkeG6oXQgY8OhYyBnacOhIHRy4buLIGtow7RuZyB0w61jaCBj4buxYy4gTsOzaSBjw6FjaCBraMOhYywgc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSBsacOqbiBxdWFuIMSR4bq/biBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIOG7nyBnw7NjIGTGsOG7m2kgYsOqbiB0csOhaSBob+G6t2MgZ8OzYyB0csOqbiBiw6puIHBo4bqjaSBj4bunYSBwaMOibiBwaOG7kWkgaGFpIGJp4bq/biBoYXkgY+G6oyBoYWkgYmnhur9uIGPDuW5nIG5oYXUgZ2nhuqNtIGhheSB0xINuZy4gR+G6p24gxJHDonksIGtow6FpIG5p4buHbSBz4buxIHBo4bulIHRodeG7mWMgxJF1w7RpIMSRw6MgxJHGsOG7o2MgdGjhuqNvIGx14bqtbiB0cm9uZyBjw6FjIOG7qW5nIGThu6VuZyB0w6BpIGNow61uaCBsacOqbiBxdWFuIMSR4bq/biBy4bunaSBybyB0aOG7iyB0csaw4budbmcgaG/hurdjIHTDrW4gZOG7pW5nLCBuaMawIEhhdWtzc29uIGV0IGFsLiAoMjAwMSkgdsOgIEVtYnJlY2h0cyBldCBhbC4gKDIwMDMpLiBD4bulIHRo4buDLCBjw6FjIHBow6JuIHBo4buRaSBwaOG7pSB0aHXhu5ljIMSRdcO0aSDEkcaw4bujYyBxdWFuIHTDom0gdHJvbmcgYuG7kWkgY+G6o25oIMaw4bubYyBsxrDhu6NuZyBWYWx1ZSBhdCBSaXNrIChWYVIpIGNobyBkYW5oIG3hu6VjIHTDoGkgc+G6o24sIHbDrCBuaOG7r25nIHBow6JuIHBo4buRaSBuw6B5IGPDsyB0aOG7gyBtw7QgaMOsbmggaMOzYSBz4buxIHBo4bulIHRodeG7mWMgY+G7p2EgY8OhYyBz4buxIGtp4buHbiB04buVbiB0aOG6pXQgbOG7m24gKHPhu7Ega2nhu4duIHbhu6EgbuG7oykgZ2nhu69hIGPDoWMgdMOgaSBz4bqjbiBraMOhYyBuaGF1IGdpw7pwIGPDoWMgbmjDoCDEkeG6p3UgdMawIGdp4bqjbSB0aGnhu4N1IHLhu6dpIHJvLiBDw7MgaGFpIGxv4bqhaSBwaOG7pSB0aHXhu5ljIMSRdcO0aSBjaMOtbmg6DQoNCi0gICBQaOG7pSB0aHXhu5ljIMSRdcO0aSB0csOqbiAoVXBwZXIgdGFpbCBkZXBlbmRlbmNlKToNCg0KYGBge3J9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiQzovVXNlcnMvREVMTC9QaWN0dXJlcy9TY3JlZW5zaG90cy9TY3JlZW5zaG90IDIwMjQtMDgtMDkgMTM0OTIxLnBuZyIpDQpgYGANCg0KLSAgIFBo4bulIHRodeG7mWMgxJF1w7RpIGTGsOG7m2kgKExvd2VyIHRhaWwgZGVwZW5kZW5jZSk6DQoNCmBgYHtyfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkM6L1VzZXJzL0RFTEwvUGljdHVyZXMvU2NyZWVuc2hvdHMvU2NyZWVuc2hvdCAyMDI0LTA4LTA5IDEzNTAyNy5wbmciKQ0KYGBgDQoNCmBgYCAgICAgICAgIA0KVHJvbmcgxJHDsyAkeF8xLFwgeF8yJCBsw6AgaGFpIGJp4bq/biBuZ+G6q3Ugbmhpw6puIHbhu5tpICRGXzEsXCBGXzIkIGzDoCBow6BtIHBow6JuIHBo4buRaSBiacOqbiB0xrDGoW5nIOG7qW5nLCBnacOhIHRy4buLIFxsYW1iZGFcX1UgdsOgIFxsYW1iZGFcX0wgdGh14buZYyBnacOhIHRy4buLIHRyb25nIGtob+G6o25nICgwLDEpLCBoYWkgaOG7hyBz4buRIHBo4bulIHRodeG7mWMgbsOgeSDEkW8gbMaw4budbmcgbeG7qWMgxJHhu5kgeMOhYyBzdeG6pXQgxJHhu4MgeOG6o3kgcmEgdMOsbmggaHXhu5FuZyBcJHhfMiBz4bq9IGLDuW5nIG7hu5UgaGF5IHPhu6VwIMSR4buVIHbGsOG7o3QgcXVhIG3hu5l0IG3hu6ljIMSR4buZIG7DoG8gxJHDsyBraGkgYmnhur90IHLhurFuZyBcJHhfMSDEkcOjIGLDuW5nIG7hu5UgaGF5IHPhu6VwIMSR4buVIGtoaSB0cuG6o2kgcXVhIG3hu5l0IG3hu6ljIMSR4buZIGzhu5tuIG7DoG8gxJHDsy4NCmBgYA0KDQojIyAzLjMgTcO0IGjDrG5oIG5naGnDqm4gY+G7qXUNCg0KIyMjIDMuMy4xIE3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gY2h14buXaSBs4bujaSBzdeG6pXQNCg0KIyMjIyAzLjMuMS4xIFjDoWMgxJHhu4tuaCBow6BtIHBow6JuIHBo4buRaSBiaeG6v24NCg0KSGnhu4duIG5heSwgY8OzIG5oaeG7gXUgbcO0IGjDrG5oIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRbyBsxrDhu51uZyBtw7QgaMOsbmggYmnDqm4uIFTDoWMgZ2nhuqMgY2hvIHLhurFuZyBtw7QgaMOsbmggYmnhur9uIEFSTUEgLSBHSlIgLSBHQVJDSCBsw6AgbOG7sWEgY2jhu41uIHRow61jaCBo4bujcCBuaOG6pXQgxJHhu4MgeMOhYyDEkeG7i25oIHBow6JuIHBo4buRaSBiaeG6v24gY+G7p2EgY2h14buXaSBs4bujaSBzdeG6pXQuIFbhu5tpIHZp4buHYyDhu6luZyBk4bulbmcgbcO0IGjDrG5oIEFSTUEgxJHhu4MgbG/huqFpIGLhu48gaGnhu4duIHTGsOG7o25nIHThu7EgdMawxqFuZyBxdWFuIHbDoCB0cnVuZyBiw6xuaCB0csaw4bujdCBj4bunYSBjaHXhu5dpIGzhu6NpIHN14bqldCB2w6AgbcO0IGjDrG5oIEdKUi1HQVJDSCB44butIGzDrSBoaeG7h24gdMaw4bujbmcgSGV0ZXJvc2tlZGFzdGljaXR5IHbDoCBnaeG6o20gdGhp4buDdSBoaeG7h24gdMaw4bujbmcgYuG6pXQgxJHhu5FpIHjhu6luZyB0cm9uZyBiaeG6v24gxJHhu5luZyBjxaluZyBuaMawIGto4bqjIG7Eg25nIHhlbSB4w6l0IMSR4bq/biBoaeG7h24gdMaw4bujbmcgxJHDsm4gYuG6qXkuXA0KxJDhu4MgdGjhu7FjIGhp4buHbiBo4buTaSBxdXkgbcO0IGjDrG5oIEFSTUEgLSBHUkogLSBHQVJDSCwgdMOhYyBnaeG6oyB0aOG7sWMgaGnhu4duIGPDoWMgYsaw4bubYyBzYXU6DQoNCi0gICBLaeG7g20gxJHhu4tuaCBManVuZyAtIEJveCBRIHRlc3QgZOG7sWEgdHLDqm4gxJHhu5MgdGjhu4sgdMawxqFuZyBxdWFuIGPhu6dhIGNodeG7l2kgbOG7o2kgc3XhuqV0LCDEkcaw4bujYyB0w61uaCBi4bqxbmcgY8O0bmcgdGjhu6ljIHNhdTpcDQogICAgJFFfe0xCfT1cIG5cbGVmdChuLTJccmlnaHQpXHN1bV97aT0xfV57a31cZnJhY3tccmhvX2leMn17bi1pfSRcDQogICAgVuG7m2kgbiBsw6Agc+G7kSBxdWFuIHPDoXQsIFxyaG9cX2kgbMOgIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gduG7m2kgxJHhu5kgdHLhu4UgbGFnIGksIGtp4buDbSDEkeG7i25oIGLhurFuZyB0aOG7kW5nIGvDqiBDaGkgYsOsbmggcGjGsMahbmcgduG7m2kgayBsw6AgYuG6rWMgdOG7sSBkby4gTMO6YyBuw6B5IGdp4bqjIHRodXnhur90ICRIXzAkIMSRxrDhu6NjIMSR4bq3dCByYSBsw6AgY2h14buXaSBs4bujaSBzdeG6pXQgY8OzIHTDrW5oIHThu7EgdMawxqFuZyBxdWFuIGtow7RuZy4NCi0gICBLaeG7g20gxJHhu4tuaCBoaeG7h3Ug4bupbmcgQVJDSCBj4bunYSBjaHXhu5dpIGzhu6NpIHN14bqldCBi4bqxbmcgcGjGsMahbmcgcGjDoXAga2nhu4NtIMSR4buLbmggQVJDSCAtIExNIHRlc3QuIEtp4buDbSDEkeG7i25oIG7DoHkgZ2nDunAgeMOhYyDEkeG7i25oIGxp4buHdSBk4buvIGxp4buHdSBjw7MgaGnhu4d1IOG7qW5nIGJp4bq/biDEkeG7mW5nIGtow7RuZyDEkeG7gXUgcXVhIHRo4budaSBnaWFuIGhheSBraMO0bmcuDQotICAgVGnhur9wIMSR4bq/biBsw6AgeMOieSBk4buxbmcgbcO0IGjDrG5oIEFSTUEgdOG7kWkgxrB1IG5o4bqldCBk4buxYSB2w6BvIGPDoWMgdGnDqnUgY2h14bqpbiBBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pIHbDoCBCSUMgKEJheWVzaWFuIEluZm9ybWF0aW9uIENyaXRlcmlvbikgbmjhurFtIHjDoWMgxJHhu4tuaCBjw6FjIGdpw6EgdHLhu4sgcCB2w6AgcSDEkcaw4bujYyBjaOG7jW4gxJHhu4MgxJHhurdjIHRyxrBuZyBjaG8gcGjhuqduIHThu7EgaOG7k2kgcXV5IChBUikgdsOgIHBo4bqnbiB0cnVuZyBiw6xuaCBjaHV54buDbiDEkeG7mW5nIChNQSkgY+G7p2EgY2h14buXaSBs4bujaSBzdeG6pXQuDQotICAgU2F1IMSRw7MsIHjDonkgZOG7sW5nIG3DtCBow6xuaCBBUk1BIChwLHEpIOKAkyBHSlIg4oCTIEdBUkNIIChyLG0pIC4gVGjhu7FjIGhp4buHbiB0csOtY2ggeHXhuqV0IHBo4bqnbiBkxrAgdsOgIHjDoWMgxJHhu4tuaCBwaMOibiBwaOG7kWkgcGjDuSBo4bujcCBjaG8gbcO0IGjDrG5oIEdKUiDigJMgR0FSQ0guIEPDoWMgcGjDom4gcGjhu5FpIGPDsyBraOG6oyBuxINuZyBs4bqnbiBsxrDhu6N0IGzDoCBOb3JtYWwsIFN0dWRlbnQtdCwgU2tld2VkIFN0dWRlbnQtdCwgR0VEIChHZW5lcmFsaXplZCBFcnJvciBEaXN0cmlidXRpb24pLCB2w6AgU0dFRCAoU2tld2VkIEdlbmVyYWxpemVkIEVycm9yIERpc3RyaWJ1dGlvbikuIE3DtCBow6xuaCBz4bq9IGPDsyBk4bqhbmcgc2F1Og0KDQokcl90XCA9XCBjXCArXCBcc3VtX3tpPTF9XntwfXtcZW1wdHlzZXQgcl97dC0xfVwgK1wgXHZhcmVwc2lsb25fdFwgK1wgXHN1bV97aT0xfV57cX17XHRoZXRhXHZhcmVwc2lsb25fe3QtaX19fSQNCg0KJFxzaWdtYV4yXCA9XCBcb21lZ2FcICtcIFxzdW1fe2k9MX1ee3J9e1xiZXRhX2lcc2lnbWFeMlwgK1wgXHN1bV97aT0xfV57bX17XGFscGhhX2lcdmFyZXBzaWxvbl97dC1pfV4yXCArXCBcc3VtX3tpPTF9XnttfXtcZ2FtbWFfaVNfe3QtaX1cdmFyZXBzaWxvbl97dC1pfV4yfX19JCBUcm9uZyDEkcOzOlwNCiRyX3QkOiBs4bujaSBzdeG6pXQgdOG6oWkgdGjhu51pIMSRaeG7g20gdC5cDQokXHZhcmVwc2lsb25fdCQ6IHNhaSBz4buRIHThuqFpIHRo4budaSDEkWnhu4NtIHQuXA0KDQpcDQokXHNpZ21hXjIkOiBwaMawxqFuZyBzYWkgY8OzIMSRaeG7gXUga2nhu4duIHThuqFpIHRo4budaSDEkWnhu4NtIHQuXA0KJFNfe3QtaX09MSQga2hpICRcdmFyZXBzaWxvbl97dC1pfVwgPDAkLMKgdsOgICRTX3t0LWl9XCA9MCQgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIG5nxrDhu6NjIGzhuqFpIHRo4buDIGhp4buHbiBoaeG7h3Ug4bupbmcgxJHDsm4gYuG6qXkuXA0KU2F1IGPDuW5nIMSR4buDIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggYmnDqm4gcGjDuSBo4bujcCBuaOG6pXQsIHRhIHRp4bq/cCB04bulYyBz4butIGThu6VuZyBjw6FjIHRpw6p1IGNow60gbmjGsCBBSUMsIFNJQywgdMOsbSBjw6FjIGdpw6EgdHLhu4sgbmjhu48gbmjhuqV0IHbDoCBr4bq/dCBxdeG6oyBz4bq9IMSRxrDhu6NjIG3hu5l0IG3DtCBow6xuaCBiaeG6v24gQVJNQSDigJMgR0pSIOKAk0dBUkNIIGhvw6BuIGNo4buJbmggbcO0IHThuqMgY8OhYyDEkeG6t2MgdMOtbmggcXVhbiB0cuG7jW5nIGPhu6dhIGNodeG7l2kgbOG7o2kgc3XhuqV0LCBiYW8gZ+G7k20gxJF1w7RpIGTDoHksIMSR4buRaSB44bupbmcgdsOgIGLhuqV0IMSR4buRaSB44bupbmcsIHbDoCBoaeG7h3Ug4bupbmcgxJHDsm4gYuG6qXkuIMSQw6J5IGzDoCBxdcOhIHRyw6xuaCBj4bqnbiB0aGnhur90IMSR4buDIMSR4bqjbSBu4bqjbyBjw6FjIMSR4bq3YyB0w61uaCBxdWFuIHRy4buNbmcgY+G7p2EgY2h14buXaSBs4bujaSBzdeG6pXQgxJHGsOG7o2MgbcO0IHThuqMgcsO1IHLDoG5nIHbDoCBjaMOtbmggeMOhYyBuaOG6pXQuDQoNCiMjIyMgMy4zLjEuMiBLaeG7g20gxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4NCg0KxJDDoW5oIGdpw6Egc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBiaeG6v24gbMOgIGPhu7FjIGvDrCBxdWFuIHRy4buNbmcgYuG7n2kgdsOsIGPDoWMgZOG7ryBsaeG7h3UgxrDhu5tjIGzGsOG7o25nIHThu6sgcGjDom4gcGjhu5FpIGJp4bq/biBz4bq9IMSRxrDhu6NjIHPhu60gZOG7pW5nIGNobyBtw7QgaMOsbmggY29wdWxhIHbDrCB24bqteSBraGkgbcO0IGjDrG5oIGJp4bq/biDEkcaw4bujYyB44butIGzDrSBzYWkgbOG7h2NoIHRow6wgbcO0IGjDrG5oIGNvcHVsYSBz4bq9IHRp4bq/biDEkeG6v24gc+G7sSBs4buHY2ggbOG6oWMuIFbDrCB24bqteSBzYXUga2hpIHjDoWMgxJHhu4tuaCBtw7QgaMOsbmggYmnhur9uIHThu5FpIMawdSAsIHTDoWMgZ2nhuqMgdMOtbmggdG/DoG4gcGjhuqduIGThu7EgY2h14bqpbiBob8OhIGPhu6dhIG3DtCBow6xuaCDEkcaw4bujYyBrw60gaGnhu4d1IGzhuqduIGzGsOG7o3QgbMOgIGLhurFuZyBj4bq3cCBk4buvIGxp4buHdSBzIHbDoCBkIHThuqFpIHRo4budaSDEkWnhu4NtJFwgdCQuIFNhdSBjxaluZyBsw6AgY2h1eeG7g24gxJHhu5VpIHRow6BuaCBnacOhIHRy4buLIHjDoWMgc3XhuqV0IMSR4buDIG3DtCBow6xuaCBsaW5oIGhv4bqhdCBoxqFuIHbDoCB0aMOtY2gg4bupbmcgdHJvbmcgxJFp4buBdSBraeG7h24gdGhheSDEkeG7lWkgbGnDqm4gdOG7pWMuXA0KJHVfdFwgPVwgRl8xXGxlZnQoc1wgXG1pZGRsZXxcbWF0aHJte1xPbWVnYX1fe3QtMX1ccmlnaHQpJCB2w6AgJGtfdFwgPVwgRl8yXGxlZnQoc1xtaWRkbGV8XE9tZWdhX3t0LTF9XHJpZ2h0KSRcDQpDw7MgYmEga2nhu4NtIMSR4buLbmggY2jDrW5oIHNhdToNCg0KLSAgIEtp4buDbSDEkeG7i25oIEFuZGVyc29uIOKAkyBEYXJsaW5nIChBIOKAkyBEKTogS2nhu4NtIMSR4buLbmggbsOgeSBnacO6cCDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBwaMO5IGjhu6NwIGdp4buvYSBwaMOibiBwaOG7kWkgYmnDqm4gZOG7sSBraeG6v24gdsOgIHBow6JuIHBo4buRaSBiacOqbiB0aOG7sWMgbmdoaeG7h20uIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBuaGnhu4F1IGzEqW5oIHbhu7FjIGtow6FjIG5oYXUgbmjGsCB0w6BpIGNow61uaCwga+G7uSB0aHXhuq10LCB2w6Aga2hvYSBo4buNYywgbsahaSBtw6Agdmnhu4djIHjDoWMgxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIG3hu5l0IG3DtCBow6xuaCBwaMOibiBwaOG7kWkgbMOgIHF1YW4gdHLhu41uZw0KLSAgIEtp4buDbSDEkeG7i25oIENyYW1lciDigJMgdm9uIE1pc2VzIChDdiDigJMgTSk6IEtp4buDbSDEkeG7i25oIG7DoHkgxJFvIGzGsOG7nW5nIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBwaMOibiBwaOG7kWkgYmnDqm4gZOG7sSBraeG6v24gdsOgIHBow6JuIHBo4buRaSBiacOqbiB0aOG7sWMgbmdoaeG7h20uIFRyb25nIG5nw6BuaCBjw7RuZyBuZ2hp4buHcCBi4bqjbyBoaeG7g20sIGtp4buDbSDEkeG7i25oIG7DoHkgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSB0cmEgeGVtIGPDoWMgbcO0IGjDrG5oIHBow6JuIHBo4buRaSB04buVbiB0aOG6pXQgY8OzIGto4bubcCB24bubaSBk4buvIGxp4buHdSB04buVbiB0aOG6pXQgdGjhu7FjIHThur8gaGF5IGtow7RuZy4NCi0gICBLaeG7g20gxJHhu4tuaCBLb2xtb2dvcm92IOKAkyBTbWlybm92IChLIOKAkyBTKTogS2nhu4NtIMSR4buLbmggbsOgeSBjxaluZyBraeG7g20gdHJhIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBwaMOibiBwaOG7kWkgYmnDqm4gZOG7sSBraeG6v24gdsOgIHBow6JuIHBo4buRaSBiacOqbiB0aOG7sWMgbmdoaeG7h20uIEtp4buDbSDEkeG7i25oIG7DoHkgY8OzIGzhu6NpIHRo4bq/IGzDoCDEkcahbiBnaeG6o24gdsOgIGThu4UgaGnhu4N1LCDEkeG7k25nIHRo4budaSBjdW5nIGPhuqVwIG3hu5l0IGPDoWNoIHRp4bq/cCBj4bqtbiBt4bqhbmggbeG6vSDEkeG7gyDEkcOhbmggZ2nDoSBz4buxIHBow7kgaOG7o3AgY+G7p2EgbeG7mXQgbcO0IGjDrG5oIHBow6JuIHBo4buRaS4gVHJvbmcgdMOgaSBjaMOtbmgsIGtp4buDbSDEkeG7i25oIEsg4oCTIFMgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSB0cmEgeGVtIGxp4buHdSBs4bujaSBuaHXhuq1uIGPhu5UgcGhp4bq/dSBjw7MgdHXDom4gdGhlbyBt4buZdCBwaMOibiBwaOG7kWkgY2h14bqpbiBoYXkga2jDtG5nLlwNCiAgICAqKlTDs20gbOG6oWksIEPDoWMga2nhu4NtIMSR4buLbmggQW5kZXJzb24g4oCTIERhcmxpbmcgKEEg4oCTIEQpLCBDcmFtZXIg4oCTIHZvbiBNaXNlcyAoQ3Yg4oCTIE0pLCB2w6AgS29sbW9nb3JvdiDigJMgU21pcm5vdiAoSyDigJMgUykgxJHhu4F1IGzDoCBjw6FjIHBoxrDGoW5nIHBow6FwIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgcGjDuSBo4bujcCBnaeG7r2EgcGjDom4gcGjhu5FpIGJpw6puIGThu7Ega2nhur9uIHbDoCBwaMOibiBwaOG7kWkgYmnDqm4gdGjhu7FjIG5naGnhu4dtLiBN4buXaSBraeG7g20gxJHhu4tuaCBjw7MgY8OhY2ggdGnhur9wIGPhuq1uIHbDoCBjw7RuZyB0aOG7qWMgdMOtbmggdG/DoW4gcmnDqm5nLCBuaMawbmcgY2jDum5nIMSR4buBdSBjdW5nIGPhuqVwIGPDoWMgZ2nDoSB0cuG7iyBwIHF1YW4gdHLhu41uZyDEkeG7gyB4w6FjIMSR4buLbmggeGVtIGThu68gbGnhu4d1IHRo4buxYyBuZ2hp4buHbSBjw7Mga2jhu5twIHbhu5tpIHBow6JuIHBo4buRaSBk4buxIGtp4bq/biBoYXkga2jDtG5nLioqDQoNCiMjIyAzLjMuMiDGr+G7m2MgbMaw4bujbmcgbcO0IGjDrG5oIENvcHVsYQ0KDQpDw6FjIHRoYW0gc+G7kSBjb3B1bGEgdGjDtG5nIHRoxrDhu51uZyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG6sW5nIHBoxrDGoW5nIHBow6FwIG1heGltdW0gbGlrZWxpaG9vcyAtIE1MIHPhu60gZOG7pW5nIHF1eSB0csOsbmggZ+G7k20gaGFpIGLGsOG7m2MgbMOgIHBoxrDGoW5nIHBow6FwIGjDoG0gc3V5IGx14bqtbiB0aGVvIGJpw6puIChJRk0sSm9lIGFuZCBYdSwgMTk5NiksIG3hu5l0IGvEqSB0aHXhuq10IHBo4buVIGJp4bq/biB2w6AgY8OgbmcgaOG7r3Ugw61jaCBoxqFuIG7hur91IG3DtCBow6xuaCBjw7MgxJFp4buBdSBraeG7h24gcGjhu6ljIHThuqFwIGjGoW4uXA0KUXXDoSB0csOsbmggSUZNIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gbmjGsCBzYXU6DQoNCjEuICDGr+G7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgY+G7p2EgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gYuG6sW5nIHBoxrDGoW5nIHBow6FwIE1MRTogJHtcaGF0e1x0aGV0YX19X3tpXCB9PWFyZ21heGxcIChcdGhldGFfaSlcID1hZ3JtYXhcIFxzdW1fe3Q9MX1ee1R9e2xvZ1wgZl9pfSh4X3RcdGhldGFfaSksXCBpPVwgXGJhcnsxLFwgbn0kIHbhu5tpICRsJCBsw6AgaMOgbSBsb2ctbGlrZWxpaG9vZCBj4bunYSBow6BtIHBow6JuIHBo4buRaSBiacOqbiAkRl9pJA0KDQoyLiAgxq/hu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBj4bunYSBjb3B1bGEgZOG7sWEgdsOgbyB0aGFtIHPhu5EgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gJHtcaGF0e1x0aGV0YX19X3tpXCB9JFwNCiAgICAke1xoYXR7XGRlbHRhfX1fe2lcIH09YXJnbWF4bF5jKFxkZWx0YSlcID1hZ3JtYXhcIFxzdW1fe3Q9MX1ee1R9e2xvZ1wgKGMofUZfMSh4XzEse1xoYXR7XHRoZXRhfX1fezFcIH0pLC4uLlwgLEZfbih4X24se1xoYXR7XHRoZXRhfX1fe25cIH0pXCA7XCBcZGVsdGEpJCB24bubaSAkbF5jJCBsw6AgaMOgbSBsb2ctbGlrZWhvb2QgY+G7p2EgaMOgbSBjb3B1bGEuXA0KICAgIFRp4bq/cCB04bulYyBz4butIGThu6VuZyB0acOqdSBjaMOtIEFJQywgQklDIHbhu5tpIG1vbmcgbXXhu5FuIGxhZiB0w6xtIMSRxrDhu6NjIG3DtCBow6xuaCBjb3B1bGEgcGjDuSBo4bujcC4gTuG6v3UgQUlDIMSRxrDhu6NjIGNo4bupbmcgbWluaCBsw6AgxJFvIGzGsOG7nW5nIG3hu6ljIMSR4buZIG3huqV0IG3DoXQgdGjDtG5nIHRpbiB0cm9uZyBt4buZdCBtw7QgaMOsbmggduG7m2kgbeG7qWMgcGjDuSBo4bujcCBsw6AgZ2nDoSB0cuG7iyBBSUMgbmjhu48gbmjhuqV0LCB0aMOsIFNJQyBj4buRIGfhuq9uZyBuZ8SDbiBjaOG6t24gaGnhu4duIHTGsOG7o25nIHF1w6Ega2jhu5twIChvdmVyZml0dGluZykgYuG6sW5nIGPDoWNoIMawdSB0acOqbiBjw6FjIG3DtCBow6xuaCDEkcahbiBnaeG6o24gaMahbiB24bubaSBjw6FjIGdpw6EgdHLhu4sgbmjhu48gaMahbi4NCg0KIyMgMy40IEjDoG0gQ29wdWxhIFN0dWRlbnQtdA0KDQojIyMgMy40LjEgVOG7lW5nIHF1YW4gduG7gSBDb3B1bGEgU3R1ZGVudC10DQoNCkNvcHVsYSBTdHVkZW50LXQgxJFhIGJp4bq/biB0xrDGoW5nIOG7qW5nIHbhu5tpIHBow6JuIHBo4buRaSB0IGNodeG6qW4gKHbDoCBjxaluZyBsw6AgcGjDom4gcGjhu5FpIHN0dWRlbnQtdCB24bubaSB0aHXhu5ljIHTDrW5oIMSR4buZYyBs4bqtcCB2w6AgY8OhYyBi4bqtYyB04buxIGRvIGLhurFuZyBuaGF1IGhv4bq3YyBraMO0bmcgYuG6sW5nIG5oYXUpIMSRxrDhu6NjIHjDonkgZOG7sW5nIG5oxrAgc2F1Og0KDQpgYGB7cn0NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJDOi9Vc2Vycy9ERUxML1BpY3R1cmVzL1NjcmVlbnNob3RzL1NjcmVlbnNob3QgMjAyNC0wOC0wOCAxNDQyMDEucG5nIikNCmBgYA0KDQpcDQp24bubaSAkZlxsZWZ0KHRccmlnaHQpJCBsw6AgaMOgbSBt4bqtdCDEkeG7mSBwaMOibiBwaOG7kWkgY+G7p2EgcGjDom4gcGjhu5FpLlwNCkjhuqd1IGjhur90IGPDoWMgdGh14buZYyB0w61uaCBj4bunYSBUIGNvcHVsYSDEkcaw4bujYyBr4bq/IHRo4burYSB04burIGPDoWMgdGh14buZYyB0w61uaCBj4bunYSBwaMOibiBwaOG7kWkgU3R1ZGVudC10IGPGoSBi4bqjbi4gQ8OhYyDEkeG6t2MgdMOtbmggbuG7lWkgYuG6rXQgc2F1OiBDb3B1bGEgU3R1ZGVudC10IGzDoCBow6BtIGNvcHVsYSDEkeG7kWkgeOG7qW5nLiBLaMO0bmcgY8OzIHRodeG7mWMgdMOtbmggxJHhu5ljIGzhuq1wLiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6Aga2jDtG5nIHBo4bqjaSBt4buNaSBj4bq3cCBiaeG6v24gdHJvbmcgY29wdWxhIFN0dWRlbnQtdCBsw6AgxJHhu5ljIGzhuq1wLiBUdXkgbmhpw6puLCBjb3B1bGEgZOG7sWEgdHLDqm4gcGjDom4gcGjhu5FpIFN0dWRlbnQtdCB24bubaSB0w61uaCBjaOG6pXQgxJHhu5ljIGzhuq1wIGPDsyB0aOG7gyBjw7MgdGh14buZYyB0w61uaCBuw6B5LiBDw7MgbeG7mXQgbeG7kWkgcXVhbiBo4buHIHLDtSByw6BuZyBnaeG7r2EgaOG7hyBz4buRIHTGsMahbmcgcXVhbiBQZWFyc29uICgkXHJobyQpIHbDoCBo4buHIHPhu5EgdMawxqFuZyBxdWFuIHRo4bupIGjhuqFuZyBLZW5kYWxsICgkz4QkKTpcDQokXHJobz1cc2lue1xsZWZ0KFxmcmFje1xwaX17Mn1cdGF1XHJpZ2h0KX0kXA0KQ2hvIHRo4bqleSB0w61uaCBwaOG7pSB0aHXhu5ljIMSRdcO0aSwgbmdoxKlhIGzDoCBjw7Mga2jhuqMgbsSDbmcgeOG6o3kgcmEgY8OhYyBz4buxIGtp4buHbiBj4buxYyDEkW9hbiDEkeG7k25nIHRo4budaS4NCg0KIyMjIDMuNC4yIOG7qG5nIGThu6VuZyBwaMawxqFuZyBwaMOhcCBDb3B1bGEgU3R1ZGVudC10DQoNCkPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2hp4bq/biBsxrDhu6NjLCBuaMOgIMSR4bqndSB0xrAgdsOgIGPDoWMgbmjDoCBxdeG6o24gbMO9IHLhu6dpIHJvIGx1w7RuIHTDrG0ga2nhur9tIG5o4buvbmcgY8O0bmcgY+G7pSB2w6AgcGjGsMahbmcgcGjDoXAgcGjDom4gdMOtY2ggaGnhu4d1IHF14bqjIMSR4buDIGPDsyB0aOG7gyBu4bqvbSBi4bqvdCDEkcaw4bujYyBi4bqjbiBjaOG6pXQgdsOgIG3hu5FpIHTGsMahbmcgcXVhbiBj4bunYSBjw6FjIHLhu6dpIHJvLCB04burIMSRw7MgxJHGsGEgcmEgY8OhYyBxdXnhur90IMSR4buLbmggcGjDuSBo4bujcC4gVsOsIHbhuq15IG3DtCBow6xuaCBDb3B1bGEgxJHhurdjIGJp4buHdCDEkcaw4bujYyBxdWFuIHTDom0gdsOgIOG7qW5nIGThu6VuZyBy4buZbmcgcsOjaSwgxJHhurdjIGJp4buHdCBsw6AgQ29wdWxhIFN0dWRlbnQtdC4gU28gduG7m2kgY8OhYyBjb3B1bGEga2jDoWMgbmjGsCBHYXVzc2lhbiBDb3B1bGEsIENvcHVsYSBTdHVkZW50LXQgY8OzIGto4bqjIG7Eg25nIG7huq9tIGLhuq90IHPhu7EgcGjhu6UgdGh14buZYyDhu58gY8OhYyDEkXXDtGkgdOG7kXQgaMahbiwgxJFp4buBdSBuw6B5IHLhuqV0IHF1YW4gdHLhu41uZyB0cm9uZyBxdeG6o24gbMO9IHLhu6dpIHJvLCDEkeG6t2MgYmnhu4d0IGzDoCB0cm9uZyBjw6FjIG5nw6BuaCB0w6BpIGNow61uaCB2w6AgYuG6o28gaGnhu4NtLlwNCkNvcHVsYSBTdHVkZW50LXQgbMOgIG3hu5l0IGThuqFuZyDEkeG6t2MgYmnhu4d0IGPhu6dhIGjhu40gQ29wdWxhLCBjaG8gcGjDqXAgbcO0IGjDrG5oIGjDs2EgdMawxqFuZyBxdWFuIHbDoCBwaOG7pSB0aHXhu5ljIGzhuqtuIG5oYXUgZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gZOG7sWEgdHLDqm4gcGjDom4gcGjhu5FpIFN0dWRlbnQtdCDEkWEgYmnhur9uLlwNCk3DtCBow6xuaCBDb3B1bGEgU3R1ZGVudC10IGzDoCBt4buZdCBjw7RuZyBj4bulIHBow6JuIHTDrWNoIHLhu6dpIHJvIG3huqFuaCBt4bq9IHbDoCDEkWFuZyDEkcaw4bujYyDhu6luZyBk4bulbmcgbmfDoHkgY8OgbmcgcuG7mW5nIHLDo2kgdHJvbmcgdGjhu7FjIHRp4buFbi4gxq91IMSRaeG7g20gY2jDrW5oIGPhu6dhIHBoxrDGoW5nIHBow6FwIG7DoHkgbMOgIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIGNow61uaCB4w6FjIGjGoW4gdMawxqFuZyBxdWFuIHBoaSB0dXnhur9uIHbDoCDEkXXDtGkgcGjDom4gcGjhu5FpIGTDoHkgY+G7p2EgY8OhYyBiaeG6v24gc+G7kSwgdOG7qyDEkcOzIGPhuqNpIHRoaeG7h24gxJHDoW5nIGvhu4MgxJHhu5kgY2jDrW5oIHjDoWMgdHJvbmcgY8OhYyBiw6BpIHRvw6FuIHF14bqjbiBsw70gcuG7p2kgcm8gdMOgaSBjaMOtbmguXA0KQ29wdWxhIFN0dWRlbnQtdCDEkWFuZyDEkcaw4bujYyDhu6luZyBk4bulbmcgdHJvbmcgbmhp4buBdSBsxKluaCB24buxYyBuaMawIHTDrW5oIHRvw6FuIFZhUiwgcXXhuqNuIGzDvSBy4bunaSBybyB0w61uIGThu6VuZywgxJHhu4tuaCBnacOhIHBow6FpIHNpbmgsIHThu5FpIMawdSBow7NhIGRhbmggbeG7pWMgxJHhuqd1IHTGsCB2w6AgcXXhuqNuIGzDvSBy4bunaSBybyBob+G6oXQgxJHhu5luZy4gQ8OhYyBuZ2hpw6puIGPhu6l1IHRo4buxYyBuZ2hp4buHbSDEkcOjIGNo4bupbmcgbWluaCBoaeG7h3UgcXXhuqMgY+G7p2EgcGjGsMahbmcgcGjDoXAgbsOgeSB0cm9uZyB0aOG7sWMgdOG6vywga2hp4bq/biBuw7MgdHLhu58gdGjDoG5oIG3hu5l0IGPDtG5nIGPhu6UgcGjDom4gdMOtY2ggcuG7p2kgcm8gbmfDoHkgY8OgbmcgcXVhbiB0cuG7jW5nIHRyb25nIHRo4bq/IGdp4bubaSB0w6BpIGNow61uaCB2w6Aga2luaCBkb2FuaCBoaeG7h24gxJHhuqFpLlwNCk3hu5l0IG5naGnDqm4gY+G7qXUgdGnDqnUgYmnhu4N1IGzDoCBj4bunYSBQYXVsIEVtYnJlY2h0cywgUC4sIExpbmRza29nLCBGLiwgJiBNY05laWwsIEEuIEouICJNb2RlbGluZyBEZXBlbmRlbmNlIHdpdGggQ29wdWxhIGFuZCBBcHBsaWNhdGlvbnMgdG8gUmlzayBNYW5hZ2VtZW50IiAoMjAwMikuIEvhur90IHF14bqjIG5naGnDqm4gY+G7qXUgY2hvIHRo4bqleSBDb3B1bGEgU3R1ZGVudC10IGPDsyB0aOG7gyBtw7QgaMOsbmggaMOzYSB0xrDGoW5nIHF1YW4gcGhpIHR1eeG6v24gdsOgIMSRdcO0aSBwaMOibiBwaOG7kWkgZMOgeSBoaeG7h3UgcXXhuqMgaMahbiBzbyB24bubaSBjw6FjIHBoxrDGoW5nIHBow6FwIHRydXnhu4FuIHRo4buRbmcsIHThu6sgxJHDsyBnacO6cCBj4bqjaSB0aGnhu4duIMSRw6FuZyBr4buDIMSR4buZIGNow61uaCB4w6FjIHRyb25nIHTDrW5oIHRvw6FuIGdpw6EgdHLhu4sgcuG7p2kgcm8uDQoNCiMjIDMuNSBDw6FjIGLDoGkgbmdoacOqbiBj4bupdSB0csaw4bubYyDEkcOzIGPhu6dhIHBoxrDGoW5nIHBow6FwIENvcHVsYQ0KDQpUaGVvIG5naGnDqm4gY+G7qXUgY+G7p2EgTGVpICgyMDA5KSwgQ29wdWxhIGPDsyB0aOG7gyDEkW8gbMaw4budbmcgc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSB0csOhaSwgxJF1w7RpIHBo4bqjaSBy4bqldCBsaW5oIGhv4bqhdCDEkeG7kWkgduG7m2kgbcO0IGjDrG5oIHRoYW0gc+G7kSB2w6AgcGhpIHRoYW0gc+G7kS5cDQoNClwNCkx1LCBUaWVuIHbDoCBaaGFuZyAoMjAwOCkgxJHDoyBwaMOibiB0w61jaCByw7lpIHJvIHThu7cgZ2nDoSBo4buTaSDEkW/DoWkgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gY29wdWxhIHbhu5tpIGdpw6EgdHLhu4sgY+G7sWMgaOG6oW5nIChleHRyZW1lIHZhbHVlKS4gSOG7jSB0aW0gdGjhuqV5IGJhIGxv4bqhaSBjb3B1bGEgY8OzIHRo4buDIOG7qW5nIGThu6VuZyDEkeG7gyDEkW8gbMaw4budbmcgcuG7p2kgcm8g4bufIMSRdcO0aSB2w6Agc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSDEkeG7lWkgduG7m2kgY2h14buXaSBk4buvIGxp4buHdS5cDQpDaG9sbGV0ZSB2w6AgY+G7mW5nIHPhu7EgKDIwMDUpLCBBcmFrZWxpYW4gdsOgIERlbGxhcG9ydGFzICgyMDA1KSB24buBIHZp4buHYyBz4butIGThu6VuZyBjw7R1ZyBj4bulIGNvcHVsYSDEkeG7gyB4ZW0geMOpdCBz4buxICJsw6J5IGxhbiIgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIHThuqNpIGNow61uaC5cDQpGcmV5IHbDoCBNY05laWwgKDIwMDEpLCBTY2hvbmJ1Y2hlciB2w6AgU2NodWJlcnQgKDIwMDEpLCBHaWVzZWNrZSAoMjAwNCkgxJHDoyDhu6luZyBk4bulbmcgcGjGsMahbmcgcGjDoXAgY29wdWxhIHRyb25nIHZp4buHYyDEkW8gbMaw4budbmcgcuG7p2kgcm8ga2jDtG5nIHRy4bqjIMSRxrDhu6NjIG7hu6MgKGRlZmF1bHQgcmlzaykuIE5nb8OgaSByYSwgbmdoacOqbiBj4bupdSBj4bunYSBEdWZmaWUgKDIwMDQpIGNobyBy4bqxbmcgcGjGsMahbmcgcGjDoXAgY29wdWxhIHbhuqtuIGPDsm4gbmhp4buBdSBo4bqhbiBjaOG6vyB0cm9uZyB2aeG7h2MgxJFvIGzGsOG7nW5nIHLhu6dpIHJvIHTDrW4gZOG7pW5nLlwNClN1a2NoYXJvZW4gdsOgIExlYXRoYW0gKDIwMTcpIHPhu60gZOG7pW5nIGLhu5kgZOG7ryBsaeG7h3UgKGdpw6EgZOG6p3UgdGjDtCwgeMSDbmcgdsOgIGThuqd1IMSR4buRdCkgY+G7p2EgSG9hIEvhu7MgZ2lhaSDEkW/huqFuIDE5ODbigJMyMDE1IMSR4buDIG5naGnDqm4gY+G7qXUgduG7gSB2aeG7h2MgcGjDsm5nIG5n4burYSBy4bunaSBybyBz4buldCBnacOhIOG7nyBjw6FjIG5ow6AgbcOheSBsdXnhu4duIGThuqd1IGLhurFuZyBwaMawxqFuZyBwaMOhcCBWaW5lIENvcHVsYS4gQ8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgdHLDqm4gxJHDoyDEkcawYSByYSBi4bqxbmcgY2jhu6luZyBjaG8gdGjhuqV5IG3DtCBow6xuaCBEdmluZSBDb3B1bGEgbMOgIGzhu7FhIGNo4buNbiB04buRdCB2w6AgYW4gdG/DoG4gxJHhu4MgcXXhuqNuIGzDvSBy4bunaSBybyBz4buldCBnacOhIGPhu6dhIGPDoWMgbmjDoCBtw6F5IOG7nyBIb2EgS+G7sy5cDQpH4bqnbiDEkcOieSBuaOG6pXQsIEFsb3VpIHbDoCBBw69zc2EgKDIwMTYpIMSRw6MgbmdoacOqbiBj4bupdSB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgZ2nDoSBk4bqndSwgY2jhu6luZyBraG/DoW4gdsOgIHThu7cgZ2nDoSB24bubaSBjw6FjaCB0aeG6v3AgY+G6rW4gZOG7sWEgdHLDqm4gY8ahIHPhu58gVmluZSBDb3B1bGEgdsOgIMSRw6MgZ2nhuqNpIHF1eeG6v3QgxJHGsOG7o2MgbsO6dCB0aOG6r3QgdHJvbmcgdmnhu4djIG5naGnDqm4gY+G7qXUgbeG7kWkgcXVhbiBo4buHIMSR4buTbmcgdGjhu51pIGPDuW5nIGzDumMgbmhp4buBdSB0w6BpIHPhuqNuIChIaWdoIC0gRGltZW5zaW9uYWwgRGlzdHJpYnV0aW9ucykuXA0KVOG6oWkgVmnhu4d0IE5hbSwgdGnhur9uIHPEqSBMw6ogVsSDbiBUaOG7qSDEkcOjIHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIENvcHVsYSBwaMOibiB0w61jaCBwaOG6o24g4bupbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gxJHhu5FpIHbhu5tpIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vyAoMjAyMikuXA0KVGjhuqFjIHPEqSBUcuG6p24gVGhhbmggVMOibSDEkcOjIHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIENvcHVsYSDEkeG7gyB4ZW0geMOpdCB2YWkgdHLDsiBj4bunYSB2w6BuZyBsw6Aga8OqbmggdHLDuiDhuqluIGFuIHRvw6BuIGhheSBjw7RuZyBj4bulIHBow7JuZyBuZ+G7q2EgcuG7p2kgcm8gxJHhu5FpIHbhu5tpIMSR4buTbmcgxJHDtCBsYSBN4bu5ICgyMDE0KS4NCg0KIyBDaMawxqFuZyBJVjogS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdQ0KDQpgYGB7cn0NCg0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGJhc2UpDQpkYXRhIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL0RFTEwvRG93bmxvYWRzL21vaGluaCAxLjEueGxzeCIpDQoNClZOSTEgPC0gYXMubnVtZXJpYyhsb2coZGF0YSRWTkkpKQ0KVFNYMSA8LSBsb2coZGF0YSRUU1gpDQpEYXRlIDwtIGRhdGEkREFURQ0KYWRhdGEgPC0gZGF0YS5mcmFtZShEYXRlLCBWTkkxLCBUU1gxKQ0KDQpgYGANCg0KIyMgNC4xIFRo4buRbmcga8OqIG3DtCB04bqjDQoNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobW9tZW50cykNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQp0azEgPC0gYWRhdGEgJT4lIHN1bW1hcmlzZShNaW4gPSBtaW4oVk5JMSksDQogICAgICAgICAgICBNYXggPSBtYXgoVk5JMSksDQogICAgICAgICAgICBNZWFuID0gbWVhbihWTkkxKSwNCiAgICAgICAgICAgIFN0RGV2ID0gc2QoVk5JMSksDQogICAgICAgICAgICBTa2V3bmVzcyA9IHNrZXduZXNzKFZOSTEpLA0KICAgICAgICAgICAgS3VydG9zaXMgPSBrdXJ0b3NpcyhWTkkxKSkNCnRrMiA8LSBhZGF0YSAlPiUgc3VtbWFyaXNlKE1pbiA9IG1pbihUU1gxKSwNCiAgICAgICAgICAgIE1heCA9IG1heChUU1gxKSwNCiAgICAgICAgICAgIE1lYW4gPSBtZWFuKFRTWDEpLA0KICAgICAgICAgICAgU3REZXYgPSBzZChUU1gxKSwNCiAgICAgICAgICAgIFNrZXduZXNzID0gc2tld25lc3MoVFNYMSksDQogICAgICAgICAgICBLdXJ0b3NpcyA9IGt1cnRvc2lzKFRTWDEpKQ0KbSA8LSByYmluZCh0azEsdGsyKQ0Kcm93bmFtZXMobSkgPC0gYygnVk5JJywnUyZQL1RTWCcpDQprYWJsZShtLCBmb3JtYXQgPSAncGFuZG9jJywgY2FwdGlvbiA9ICcgVGjhu5FuZyBrw6ogbcO0IHThuqMgY2h14buXaSBs4bujaSBzdeG6pXQnLCB0YWJsZS5hdHRyID0gInN0eWxlPSd3aWR0aDoxMDAlOyciKSAlPiUga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIikpDQoNCmBgYA0KDQrCoCBC4bqjbmcgMSBjaG8gdGjhuqV5IMSRxrDhu6NjIGvhur90IHF14bqjIHRo4buRbmcga8OqIG3DtCB04bqjIGPhu6dhIGhhaSBjaHXhu5dpIGzhu6NpIHN14bqldCBsw6AgY2jhu4kgc+G7kSBWTkkgdsOgIFMmUC9UU1ggbOG6p24gbMaw4bujdCDEkeG6oWkgZGnhu4duIGNobyBUVENLIFZp4buHdCBOYW0gdsOgIFRUQ0sgQ2FuYWRhLlThu6sgZ2nDoSB0cuG7iyBuaOG7jyBuaOG6pXQsIGdpw6EgdHLhu4sgbOG7m24gbmjhuqV0IHbDoCBnacOhIHRyaWp0cnVuZ2ogYsOsbmggY+G7p2EgaGFpIGNodeG7l2kgbOG7o2kgc3XhuqV0IGPDsyB0aOG7gyBkw6BuZyBuaOG6rW4gdGjhuqV5LiBUdXkgbmhpw6puIMSR4buZIGJp4bq/biDEkeG7mW5nIGPhu6dhIGNo4buJIHPhu5EgVk5JICgwLjAxMjQxNDIpIMSRxrDhu6NjIGdoaSBuaOG6rW4gbMOgIGzhu5tuIGjGoW4gUyZQL1RTWCAoMC4wMTEwNzQzKSBjaG8gdGjhuqV5IHLhurFuZyBUVENLIFZp4buHdCBOYW0gxJFhbmcgY2jhu4t1IGtow6Egbmhp4buBdSBy4bunaSByby4gQsOqbiBj4bqhbmggxJHDsyBo4buHIHPhu5EgU2tld25lc3MgY+G7p2EgY+G6oyBoYWkgY2h14buXaSDEkeG7gXUgbOG7m24gaMahbiAwKDAuOTczNjg5NyB2w6AgMS43MjE1OTA3KSB04bupYyBsw6AgxJHhu4F1IGzhu4djaCBwaMOtYSBwaOG6o2kgduG7m2kgaGnhu4duIHTGsOG7o25nIGzDoCBTJlAvVFNYIGPDsyDEkXXDtGkgZMOgaSBoxqFuLiBTYXUgY8O5bmcgdGjDrCBnacOhIHRy4buLIEt1cnJ0b3NpcyBj4bunYSBj4bqjIGhhaSDEkeG7gXUgbOG7m24gaMahbiBt4bupYyBiYSwgY2hvIHRo4bqleSBwaMOibiBwaOG7kWkgY+G7p2EgaGFpIGNodeG7l2kgY8OzIMSRdcO0aSBkw6BpIHbDoCDEkeG7iW5oIG5o4buNbiBoxqFuIHBow6JuIHBo4buRaSBjaHXhuqluLg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodGlkeXIpDQpwaXZvdF9sb25nZXIoYWRhdGFbLDI6M10sIGNvbHMgPSBldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gIlRTTE4iLCB2YWx1ZXNfdG8gPSAiVmFsdWUiKSAlPiUgZ2dwbG90KGFlcyh4ID0gVFNMTiwgeSA9IFZhbHVlKSkgKw0KICBnZW9tX2JveHBsb3QoZmlsbCA9ICJsaWdodHBpbmsiLCBjb2xvciA9ICJkYXJrYmx1ZSIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgbGFicyh0aXRsZSA9ICIgQmnhu4N1IMSR4buTIGjhu5lwIGPhu6dhIFRTTE4gVk5JIHbDoCBTJlAvVFNYIiwNCiAgICAgICB4ID0gIkNo4buJIHPhu5EiLA0KICAgICAgIHkgPSAiVOG7tyBzdeG6pXQgc2luaCBs4bujaSIpDQoNCmBgYA0KDQpUYSBjw7MgdGjhu4MgdHLhu7FjIHF1YW4gaMOzYSBjw6FjIG3DtCB04bqjIGPGoSBi4bqjbiBj4bunYSBoYWkgY2jhu4kgc+G7kSBs4bujaSBzdeG6pXQgdGjDtG5nIHF1YSBiaeG7g3UgxJHhu5MgaOG7mXAgKEJveC1wbG90KS5cDQoNCiMjIDQuMiBCaeG6v24gxJHhu5luZyBj4bunYSBjaHXhu5dpIGzhu6NpIHN14bqldCBWTkkgdsOgIFMmUC9UU1gNCg0KYGBge3J9DQpsaWJyYXJ5KHpvbykNCnBsb3Quem9vKGFkYXRhJFZOSTEsIG1haW49ICJIw6xuaCAyOiBCaeG6v24gxJHhu5luZyBj4bunYSB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uIHF1YSBjw6FjIG5nw6B5IGPhu6dhIFZOSSIsIHlsYWIgPSAiVOG7tyBzdeG6pXQgc2luaCBs4bujaSIsIHhsYWIgPSAiVGjhu51pIMSRaeG7g20gcXVhbiBzw6F0IikNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoem9vKQ0KcGxvdC56b28oYWRhdGEkVFNYMSwgbWFpbj0gIkjDrG5oIDM6IEJp4bq/biDEkeG7mW5nIGPhu6dhIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gcXVhIGPDoWMgbmfDoHkgY+G7p2EgUyZQLVRTWCIsIHlsYWIgPSAiVOG7tyBzdeG6pXQgc2luaCBs4bujaSIsIHhsYWIgPSAiVGjhu51pIMSRaeG7g20gcXVhbiBzw6F0IikNCmBgYA0KDQpCaeG6v24gxJHhu5luZyBj4bunYSBjaHXhu5dpIHThu7cgc3XhuqV0IHNpbmggbOG7o2kg4bufIGNo4buJIHPhu5EgVk5JTkRFWCB2w6AgY2jhu4kgc+G7kSBTJlAvVFNYIHRyb25nIGdpYWkgxJFv4bqhbiAyMDE4IC0gNy8yMDI0IMSRxrDhu6NjIHRyw6xuaCBiw6B5IOG7nyBi4bqjbmcgdHLDqm4uIE5ow6xuIGNodW5nLCBjaOG7iSBz4buRIFZOSU5ERVggY2hvIHRo4bqleSBt4bupYyDEkeG7mSBkYW8gxJHhu5luZyBt4bqhbmggaMahbiBjaOG7iSBz4buRIFMmUC9UU1gsIMSRaeG7gXUgbsOgeSBjaOG7qW5nIHThu48gcuG6sW5nIHLhu6dpIHJvIOG7nyBUVENLIFZp4buHdCBOYW0gbMOgIGzhu5tuIGjGoW4gcuG6pXQgbmhp4buBdSBzbyB24bubaSBUVENLIENhbmFkYS4gXCMjIDQuMyBLaeG7g20gxJHhu4tuaCBjw6FjIGdp4bqjIHRodXnhur90DQoNCmBgYHtyfQ0KbGlicmFyeSh0c2VyaWVzKQ0KbGlicmFyeShzdGF0cykNCg0KI0tp4buDbSDEkeG7i25oIHTDrW5oIGThu6tuZw0KYWRmX3ZuaSA8LSBhZGYudGVzdChhZGF0YSRWTkkxKQ0KYWRmX3RzeCA8LSBhZGYudGVzdChhZGF0YSRUU1gxKQ0KI0tp4buDbSDEkeG7i25oIHBow6JuIHBo4buRaSBjaHXhuqluDQpqcV92bmkgPC0gamFycXVlLmJlcmEudGVzdChhZGF0YSRWTkkxKQ0KanFfdHN4IDwtIGphcnF1ZS5iZXJhLnRlc3QoYWRhdGEkVFNYMSkNCiNLaeG7g20gxJHhu4tuaCB0xrDGoW5nIHF1YW4gY2h14buXaQ0KbGpfdm5pIDwtIEJveC50ZXN0KGFkYXRhJFZOSTEsIGxhZyA9MiwgdHlwZSA9ICJManVuZy1Cb3giKQ0KbGpfdHN4IDwtIEJveC50ZXN0KGFkYXRhJFRTWDEsIGxhZyA9MiwgdHlwZSA9ICJManVuZy1Cb3giKQ0KIyBLaeG7g20gxJHhu4tuaCBoaeG7h3Ug4bupbmcgQVJDSA0KbGlicmFyeShydWdhcmNoKQ0KQXZuaSA8LSBhdXRvYXJmaW1hKGFkYXRhJFZOSTEsYXIubWF4ID0gMiwgbWEubWF4ID0gMiwgY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCg0KQXRzeCA8LSBhdXRvYXJmaW1hKGFkYXRhJFRTWDEsYXIubWF4ID0gMiwgbWEubWF4ID0gMiwgY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCmxpYnJhcnkoRmluVFMpDQpyZV92bmkgPC0gQXZuaSRmaXRAZml0JHJlc2lkdWFscw0KcmVfdHN4IDwtIEF0c3gkZml0QGZpdCRyZXNpZHVhbHMNCmFyX3ZuaSA8LSBBcmNoVGVzdChyZV92bmksIGxhZ3MgPSAxKQ0KYXJfdHN4IDwtIEFyY2hUZXN0KHJlX3RzeCwgbGFncyA9IDEpDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCnRlc3RfcmVzdWx0IDwtIGRhdGEuZnJhbWUoDQogIFRlc3QgPSBjKCJUw61uaCBE4burbmciLCAiUGjDom4gcGjhu5FpIENodeG6qW4iLCAiVMawxqFuZyBRdWFuIENodeG7l2kiLCJIaeG7h3Ug4bupbmcgQVJDSCIpLA0KICBQX3ZhbHVlX1ZOSSA9IGMoYWRmX3ZuaSRwLnZhbHVlLCBqcV92bmkkcC52YWx1ZSwgbGpfdm5pJHAudmFsdWUsIGFyX3ZuaSRwLnZhbHVlKSwNCiAgUF92YWx1ZV9TX1BfVFNYID0gYyhhZGZfdHN4JHAudmFsdWUsIGpxX3RzeCRwLnZhbHVlLCBsal90c3gkcC52YWx1ZSwgYXJfdHN4JHAudmFsdWUpKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0Ka2FibGUodGVzdF9yZXN1bHQsIA0KICBjYXB0aW9uID0gIkvhur90IHF14bqjIGPDoWMga2nhu4NtIMSR4buLbmgiLCANCiAgZm9ybWF0ID0gJ3BhbmRvYycpICU+JSBrYWJsZV9zdHlsaW5nKA0KICAgICAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGKQ0KYGBgDQoNCi0gICAqS0nhu4NtIMSR4buLbmggdMOtbmggZOG7q25nOiogS2nhu4NtIMSR4buLbmggQURGKEF1Z21lbnRlZCBEaWNrZXnigJNGdWxsZXIpIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSB0cmEgeGVtIG3hu5l0IGNodeG7l2kgdGjhu51pIGdpYW4gY8OzIHTDrW5oIGThu6tuZyBoYXkga2jDtG5nLiBHaeG6oyB0aGnhur90IEgwIGzDoCBjaHXhu5dpIHRo4budaSBnaWFuIGtow7RuZyBjw7MgdMOtbmggZOG7q25nLlwNCi0gICAqS2nhu4NtIMSR4buLbmggcGjDom4gcGjhu5FpIGNodeG6qW46KiBLaeG7g20gxJHhu4tuaCBKYXJxdWUtQmVyYSBsw6AgbeG7mXQgcGjGsMahbmcgcGjDoXAgdGjhu5FuZyBrw6ogxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4Mga2nhu4NtIHRyYSB4ZW0gbeG7mXQgbeG6q3UgZOG7ryBsaeG7h3UgY8OzIHR1w6JuIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4gaGF5IGtow7RuZy4gTsOzIGThu7FhIHRyw6puIHZp4buHYyBraeG7g20gdHJhIGPDoWMgxJHhurdjIHRyxrBuZyB0aOG7kW5nIGvDqiBj4bunYSBt4bqrdSBk4buvIGxp4buHdSwgbmjGsCDEkeG7mSBs4buHY2ggdsOgIMSR4buZIG5o4buNbiwgxJHhu4Mgbmjhuq1uIHjDqXQgduG7gSB0w61uaCBjaHXhuqluIGPhu6dhIHBow6JuIHBo4buRaS4gR2nhuqMgdGhp4bq/dCBIMCB0dcOibiB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluLlwNCi0gICAqS2nhu4NtIMSR4buLbmggdMawxqFuZyBxdWFuIGNodeG7l2k6KiBLaeG7g20gxJHhu4tuaCBManVuZy1Cb3ggxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4Mga2nhu4NtIHRyYSB0w61uaCB0xrDGoW5nIHF1YW4gdOG7sSBkbyBj4bunYSBt4buZdCBjaHXhu5dpIHRo4budaSBnaWFuIHbDoCB4w6FjIMSR4buLbmggeGVtIGNodeG7l2kgY8OzIHBo4bulIHRodeG7mWMgdMawxqFuZyBxdWFuIGtow7RuZyBnaWFuIGhheSBraMO0bmcuIEdp4bqjIHRoaeG6v3QgSDAgbMOgIGtow7RuZyBjw7MgdMawxqFuZyBxdWFuIGNodeG7l2kgTGp1bmctQm94LlwNCiAgICAqSGnhu4d1IOG7qW5nIEFSQ0gqOiBLaeG7g20gxJHhu4tuaCBBUkNILUxNIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHjDoWMgxJHhu4tuaCB4ZW0gY8OzIHPhu7EgdOG7k24gdOG6oWkgY+G7p2EgaGnhu4d1IOG7qW5nIEFSQ0ggdHJvbmcgYmnhur9uIMSR4buZbmcgY+G7p2EgY2h14buXaSB0aOG7nWkgZ2lhbiBoYXkga2jDtG5nLiBHaeG6oyB0aGnhur90IEgwIGzDoCBraMO0bmcgY8OzIGhp4buHdSDhu6luZyBBUkNIIHRyb25nIGThu68gbGnhu4d1LiBHacOhIHRy4buLIHAtdmFsdWUgY8Ogbmcgbmjhu48sIGPDoG5nIGNo4bupbmcgdOG7jyB04buTbiB04bqhaSBi4bqxbmcgY2jhu6luZyB24buBIGhp4buHdSDhu6luZyBBUkNILlwNCiAgICAqKlRow7RuZyBxdWEgYuG6o25nIDIsIHRhIGPDsyB0aOG7gyB0aOG6pXkgcuG6sW5nIGPhuqMgaGFpIGNodeG7l2kgbOG7o2kgc3XhuqV0IMSR4buBdSB0aG/huqMgY8OhYyBnaeG6oyB0aHV54bq/dCBraGkgxJHhu4F1IGPDsyBwX3ZhbHVlIG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDUlIHLhurFuZyBj4bqjIGhhaSBjaHXhu5dpIMSR4buBdSBsw6AgY2h14buXaSBk4burbmcgdsOgIGtow7RuZyB0dcOibiB0aGVvIHBoYW4gcGjhu5FpIGNodeG6qW4gY8WpbmcgbmjGsCBraMO0bmcgY8OzIGhp4buHbiB0xrDhu6NuZyB0xrDGoW5nIHF1YW4gY2h14buXaSB2w6AgY8OzIGhp4buHdSDhu6luZyBBUkNIIHRyb25nIGhhaSBjaHXhu5dpLioqDQoNCiMjIDQuNCBI4buHIHPhu5EgdMawxqFuZyBxdWFuDQoNCipI4buHIHPhu5EgdMawxqFuZyBxdWFuIHR1eeG6v24gdMOtbmggUGVhcnNvbipcDQpI4buHIHPhu5EgdMawxqFuZyBxdWFuIHR1eeG6v24gdMOtbmggUGVhcnNvbiBjw7MgdmFpIHRyw7IgcXVhbiB0cuG7jW5nIHRyb25nIHRo4buRbmcga8OqIHbDoCBwaMOibiB0w61jaCBk4buvIGxp4buHdS4gSOG7hyBz4buRIHTGsMahbmcgcXVhbiBQZWFyc29uIGzDoCBt4buZdCBz4buRIMSRbyBt4bupYyDEkeG7mSB0xrDGoW5nIHF1YW4gZ2nhu69hIGhhaSBiaeG6v24gc+G7kSDEkeG7i25oIGzGsOG7o25nLCBjaG8gYmnhur90IG3hu5FpIHF1YW4gaOG7hyB0dXnhur9uIHTDrW5oIGdp4buvYSBjaMO6bmcuIMSRxrDhu6NjIOG7qW5nIGThu6VuZyBy4buZbmcgcsOjaSB0cm9uZyBuaGnhu4F1IGzEqW5oIHbhu7FjIG5oxrAga2luaCB04bq/LCB4w6MgaOG7mWkgaOG7jWMsIHTDom0gbMO9IGjhu41jIHbDoCBraG9hIGjhu41jIHThu7Egbmhpw6puIMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gc+G7kS4NCg0KYGBge3J9DQp0ZXN0IDwtIGNvci50ZXN0KGFkYXRhJFZOSTEsIGFkYXRhJFRTWDEpDQp0ZXN0DQpgYGANCg0KR2nDoSB0cuG7iyBwLXZhbHVlIHLhuqV0IG5o4buPIChcPCAwLjA1KSwgxJFp4buBdSBuw6B5IGNobyB0aOG6pXkgdOG7k24gdOG6oWkgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwIChraMO0bmcgY8OzIHTGsMahbmcgcXVhbikuIEjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gUGVhcnNvbiBsw6AgMC4xNjc3ODcyLCB04bupYyBsw6AgbeG7qWMgdMawxqFuZyBxdWFuIHnhur91IG5oxrBuZyB24bqrbiBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLlwNCipNYSB0cuG6rW4gdMawxqFuZyBxdWFuIGPhu6dhIFZOSSB2w6AgUyZQL1RTWCoNCg0KYGBge3J9DQoNCnJlcyA8LSBjb3IoYWRhdGFbLDI6M10pDQpyb3VuZChyZXMsIDIpDQpgYGANCg0KTmjDrG4gdsOgbyBr4bq/dCBxdeG6oywgdGEgdGjhuqV5IG3hu6ljIMSR4buZIHTGsMahbmcgcXVhbiBnaeG7r2EgVk5JIHbDoCBTJlAvVFNYIGzDoCAwLjE3IFw+IDAsIHbhuq15IHRow6wgMiBiaeG6v24gbsOgeSBjw7MgbeG7kWkgcXVhbiBo4buHIHRodeG6rW4sIG7hur91IGJp4bq/biBTJlAvVFNYIHTEg25nIHRow6wgVk5JIGPFqW5nIHTEg25nLiAqQknhu4N1IMSR4buTIHTGsMahbmcgcXVhbiAoY29ycmVsYXRpb24gcGxvdCkqDQoNCmBgYHtyfQ0KbGlicmFyeShjb3JycGxvdCkNCmNvcnJwbG90KHJlcywgdHlwZSA9ICJ1cHBlciIsIG9yZGVyID0gImhjbHVzdCIsIA0KICAgICAgICAgdGwuY29sID0gImRhcmtibHVlIiwgdGwuc3J0ID0gNDUpDQoNCmBgYA0KDQpCaeG7g3UgxJHhu5MgdMawxqFuZyBxdWFuIChjb3JyZWxhdGlvbiBwbG90KSBnacO6cCBjaMO6bmcgdGEgY8OzIHRo4buDIHPhu7EgdMawxqFuZyBxdWFuIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBj4bunYSAyIG7GsOG7m2MgVmnhu4d0IE5hbSB2w6AgQ2FuYWRhLiBk4buxYSB24burYSBtw7QgaMOsbmggdGjDrCBjaMO6bmcgdGEgdGjhuqV5IGPhuqMgMiB0aOG7iyB0csaw4budbmcgbsOgeSBjw7Mgc+G7sSB0xrDGoW5nIHF1YW4gY2jhurd0IGNo4bq9IHbhu5tpIG5oYXUsIG5ow6xuIGNodW5nIHRow6wgaOG7hyBz4buRIGjhu5NpIHF1eSBkxrDGoW5nLg0KDQpgYGB7cn0NCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpjaGFydC5Db3JyZWxhdGlvbihhZGF0YVssMjozXSwgaGlzdG9ncmFtPVRSVUUsIHBjaD0xOSkNCmBgYA0KDQpL4bq/dCBxdeG6oyB0w61uaCB0b8OhbiB0csOqbiBjaG8gdGjhuqV5IGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gdHV54bq/biB0w61uaCBQZWFyc29uIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgdMawxqFuZyBxdWFuIGzhu5tuIG5o4bqldCB24bubaSBnacOhIHRy4buLIHjhuqVwIHjhu4kgMC4xNy4gdHV5IG5oacOqbiBo4buHIHPhu5EgUGVhcnNvbiDEkcaw4bujYyB0aOG7sWMgaGnhu4duIHRyw6puIGPGoSBz4bufIHLhurFuZyBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0IHR1w6JuIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4uIFbDrCB24bqteSBo4buHIHPhu5EgdMawxqFuZyBxdWFuIG7DoHkgY2jGsGEgdGjhu7FjIHPhu7EgbWluaCBi4bqhY2ggxJHGsOG7o2Mgc+G7sSBz4buxIHTGsMahbmcgcXVhbiBnaeG7r2EgaGFpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBraMOhYyBuaGF1Lg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ2djb3JycGxvdCkNCmRmIDwtIGRwbHlyOjpzZWxlY3RfaWYoYWRhdGFbLDI6M10sIGlzLm51bWVyaWMpDQpyIDwtIGNvcihkZiwgdXNlPSJjb21wbGV0ZS5vYnMiKQ0KZ2djb3JycGxvdChyKQ0KYGBgDQoNCipCaeG7g3UgxJHhu5MgU2NhdHRlcipcDQrEkOG7gyBjw7MgdGjhu4MgZOG7hSBkw6BuZyB4w6FjIMSR4buLbmggcsO1IHh1IGjGsOG7m25nIGJp4bq/biDEkeG7mW5nIGPDuW5nIHbhu5tpIG5oYXUgZ2nhu69hIGhhaSBUVENLLCBjaMO6bmcgdGEgc+G6vSBz4butIGThu6VuZyBiaeG7g3UgxJHhu5MgU2NhdHRlciB24bubaSDEkcaw4budbmcgaOG7k2kgcXV5IMSR4buDIGJp4buDdSBkaeG7hW4gbeG7kWkgbGnDqm4gaOG7hyB0xrDGoW5nIHF1YW4gZ2nhu69hIGhhaSBUVENLLg0KDQpgYGB7cn0NCmFkYXRhICU+JSBnZ3Bsb3QoYWVzKFZOSTEsIFRTWDEpKSArDQogICAgICAgICAgICAgIGdlb21fcG9pbnQoY29sID0gJ29yYW5nZScsc2hhcGUgPSBUUlVFKSArIA0KICAgICAgICAgICAgICBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nLHNlID0gVCwgY29sID0gJ2RhcmtibHVlJykgKyAgDQogICAgICAgICAgICAgIGxhYnModGl0bGUgPSAnQmnhu4N1IMSR4buTIFNjYXR0ZXIgVFNMTiBj4bunYSBWTkkgdsOgIFMmUC9UU1gnLCB4ID0gJ1ZOSScsIHkgPSAnUyZQL1RTWCcpDQpgYGANCg0KROG7sWEgdsOgbyBow6xuaCB0csOqbiwgY8OzIHRo4buDIHRo4bqleSBy4bqxbmcgaOG7gXUgaOG6v3QgY8OhYyDEkWnhu4NtIG7hurFtIHThuq1wIHRydW5nIG5oaeG7gXUgbmjhuqV0IGfhuqduIHbhu4sgdHLDrSAwIHbDoCBjw6FjIMSRaeG7g20ga2jDoWMgbuG6sW0gcuG6o2kgcsOhYyB4dW5nIHF1YW5oLiBW4bubaSB2aeG7h2MgxJHGsOG7nW5nIGjhu5NpIHF1eSBjw7MgZOG6pXUgaGnhu4d1IMSRaSBsw6puIGNobyB0aOG6pXkgbeG7kWkgdMawxqFuZyBxdWFuIGTGsMahbmcgY+G7p2EgaGFpIGNodeG7l2kgbOG7o2kgc3XhuqV0IG5oxrBuZyB2w6NuIGPDsyBz4buxIGJp4bq/biDEkeG7mW5nIGdpYeG7r2EgY8OhYyBnacOhIHRy4buLIGPhu6dhIGhhaSBjaHXhu5dpIGzhu6NpIHN14bqldCBWTkkgdsOgIFMmUC9UU1guDQoNCiMjIDQuNSBM4buxYSBjaOG7jW4gbcO0IGjDrG5oIGJpw6puIHThu5FpIMawdQ0KDQojIyMgNC41LjEgTcO0IGjDrG5oIEFSTUEgdOG7kWkgxrB1DQoNCmBgYHtyfQ0KbGlicmFyeShsbXRlc3QpDQpsaWJyYXJ5KGZHYXJjaCkNCmxpYnJhcnkocnVnYXJjaCkNCmFybWFfdm5pIDwtIGF1dG9hcmZpbWEoYWRhdGFbLCAyXSxhci5tYXggPSAyLCBtYS5tYXggPSAyLCBjcml0ZXJpb24gPSAiQUlDIiwgbWV0aG9kID0gImZ1bGwiKSRmaXQNCmFybWFfdm5pDQpgYGANCg0KYGBge3J9DQogYXJtYV90c3ggPC1hdXRvYXJmaW1hKGFkYXRhWywzXSwgYXIubWF4ID0gMiwgbWEubWF4ID0gMiwgY3JpdGVyaW9uID0gIkFJQyIsIG1ldGhvZCA9ICJmdWxsIikkZml0DQphcm1hX3RzeA0KYGBgDQoNCmBgYHtyfQ0KICNUcsOsbmggYsOgeSBr4bq/dCBxdeG6ow0KYXJtYV9tb2RlbCA8LSBkYXRhLmZyYW1lKA0KICByYXRlID0gYygiVk5JIiwgIlMmUC9UU1giKSwNCiAgRm9ybWF0ID0gYygiQVJNQSgyLDIpIiwgIkFSTUEoMiwyKSIpKQ0Ka2FibGUoYXJtYV9tb2RlbCwgY29sLm5hbWVzID0gYygiQ2h14buXaSBs4bujaSBzdeG6pXQiLCAiROG6oW5nIG3DtCBow6xuaCBBUk1BIiksIA0KICAgICAgY2FwdGlvbiA9ICIgTcO0IGjDrG5oIEFSTUEgdOG7kWkgxrB1IiwgZm9ybWF0ID0gInBhbmRvYyIsIA0KICAgICAgdGFibGUuYXR0ciA9ICJzdHlsZT0nd2lkdGg6NTAlOyciKSAlPiUNCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIikpDQoNCmBgYA0KDQpE4buxYSB0csOqbiB0acOqdSBjaHXhuqluIGdpw6EgdHLhu4sgQUlDIG5o4buPIG5o4bqldCwga+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIGThuqFuZyBtw7QgaMOsbmggQVJNQSBjaG8gdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBWTkkgdsOgIFMmUC9UU1ggbOG6p24gbMaw4bujdCBsw6AgbcO0IGjDrG5oIEFSTUEoMiwyKSB2w6AgQVJNQSgyLDIpLiDEkGnhu4F1IG7DoHkgc+G6vSBj4bunbmcgY+G7kSBjaG8gY8OhYyBixrDhu5tjIHRp4bq/cCB0aGVvIMSR4buDIMaw4bubbmcgbMaw4bujbmcgbcO0IGh1aWZuaCBiacOqbiBwaMO5IGjhu6NwIG5o4bqldC4gXCMjIyA0LjUuMiDGr+G7m2MgbMaw4bujbmcgbcO0IGjDrG5oIEFSTUEtR0pSLUdBUkNIIHThu5FpIMawdQ0KDQojIyMjIDQuNS4yLjEgTcO0IGjDrG5oIEFSTUEtR0pSLUdBUkNIIHThu5FpIMawdSBjaG8gY2h14buXaSBs4bujaSBzdeG6pXQgVk5JDQoNCmBgYHtyfQ0KI0dKUi1HQVJDSCgxLDEpVk5JDQp2bmkuZ2FyY2gxMW4uc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDEpKSwgbWVhbi5tb2RlbA0KPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQogdm5pLmdhcmNoMTFuLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHZuaS5nYXJjaDExbi5zcGVjLCBkYXRhID0gYWRhdGFbLDJdKQ0KIHZuaS5nYXJjaDExdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KIHZuaS5nYXJjaDExdC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gxMXQuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gxMXN0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KIHZuaS5nYXJjaDExc3QuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMTFzdC5zcGVjLCBkYXRhID0gYWRhdGFbLCAyXSkNCg0KIHZuaS5nYXJjaDExZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJnZWQiKQ0KIHZuaS5nYXJjaDExZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gxMWcuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gxMXNnLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNnZWQiKQ0Kdm5pLmdhcmNoMTFzZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gxMXNnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDJdKQ0KDQojIEdKUi1HQVJDSCgxLDIpVk5JDQoNCnZuaS5nYXJjaDEybi5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCiB2bmkuZ2FyY2gxMm4uZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMTJuLnNwZWMsIGRhdGEgPSBhZGF0YVssIDJdKQ0KDQp2bmkuZ2FyY2gxMnQuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwgbWVhbi5tb2RlbA0KPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAic3RkIikNCiB2bmkuZ2FyY2gxMnQuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMTJ0LnNwZWMsIGRhdGEgPSBhZGF0YVssIDJdKQ0KDQogdm5pLmdhcmNoMTJzdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzc3RkIikNCiB2bmkuZ2FyY2gxMnN0LmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHZuaS5nYXJjaDEyc3Quc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gxMmcuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwgbWVhbi5tb2RlbA0KPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAiZ2VkIikNCiB2bmkuZ2FyY2gxMmcuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMTJnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDJdKQ0KDQogdm5pLmdhcmNoMTJzZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzZ2VkIikNCiB2bmkuZ2FyY2gxMnNnLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHZuaS5nYXJjaDEyc2cuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiAjR0pSLUdBUkNIKDIsMSlWTkkgDQogDQogdm5pLmdhcmNoMjFuLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksIG1lYW4ubW9kZWwNCj0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gIm5vcm0iKQ0KIHZuaS5nYXJjaDIxbi5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gyMW4uc3BlYywgZGF0YSA9IGFkYXRhWywyXSkNCg0KIHZuaS5nYXJjaDIxdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMSkpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KIHZuaS5nYXJjaDIxdC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gyMXQuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gyMXN0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KIHZuaS5nYXJjaDIxc3QuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMjFzdC5zcGVjLCBkYXRhID0gYWRhdGFbLCAyXSkNCg0KIHZuaS5nYXJjaDIxZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMSkpLCBtZWFuLm1vZGVsDQoNCj0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQogdm5pLmdhcmNoMjFnLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHZuaS5nYXJjaDIxZy5zcGVjLCBkYXRhID0gYWRhdGFbLCAyXSkNCg0KIHZuaS5nYXJjaDIxc2cuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQogdm5pLmdhcmNoMjFzZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gyMXNnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDJdKQ0KDQogI0dKUi1HQVJDSCgyLDIpVk5JDQogDQp2bmkuZ2FyY2gyMm4uc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDIpKSwgbWVhbi5tb2RlbA0KPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQogdm5pLmdhcmNoMjJuLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHZuaS5nYXJjaDIybi5zcGVjLCBkYXRhID0gYWRhdGFbLDJdKQ0KIHZuaS5nYXJjaDIydC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KIHZuaS5nYXJjaDIydC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gyMnQuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gyMnN0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KIHZuaS5nYXJjaDIyc3QuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMjJzdC5zcGVjLCBkYXRhID0gYWRhdGFbLCAyXSkNCg0KIHZuaS5nYXJjaDIyZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLCBtZWFuLm1vZGVsDQo9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJnZWQiKQ0KIHZuaS5nYXJjaDIyZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB2bmkuZ2FyY2gyMmcuc3BlYywgZGF0YSA9IGFkYXRhWywgMl0pDQoNCiB2bmkuZ2FyY2gyMnNnLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNnZWQiKQ0KIHZuaS5nYXJjaDIyc2cuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdm5pLmdhcmNoMjJzZy5zcGVjLCBkYXRhID0gYWRhdGFbLCAyXSkNCg0KIHZuaS5tb2RlbC5saXN0IDwtIGxpc3QoDQogICBnYXJjaDExbiA9IHZuaS5nYXJjaDExbi5maXQsIA0KICAgZ2FyY2gxMXQgPSB2bmkuZ2FyY2gxMXQuZml0LCANCiAgIGdhcmNoMTFzdCA9IHZuaS5nYXJjaDExc3QuZml0LA0KZ2FyY2gxMWcgPSB2bmkuZ2FyY2gxMWcuZml0LCANCmdhcmNoMTFzZyA9IHZuaS5nYXJjaDExc2cuZml0LA0KIGdhcmNoMTJuID0gdm5pLmdhcmNoMTJuLmZpdCwgDQpnYXJjaDEydCA9IHZuaS5nYXJjaDEydC5maXQsIA0KZ2FyY2gxMnN0ID0gdm5pLmdhcmNoMTJzdC5maXQsIA0KZ2FyY2gxMmcgPSB2bmkuZ2FyY2gxMmcuZml0LCANCmdhcmNoMTJzZyA9IHZuaS5nYXJjaDEyc2cuZml0LA0KIGdhcmNoMjFuID0gdm5pLmdhcmNoMjFuLmZpdCwNCmdhcmNoMjF0ID0gdm5pLmdhcmNoMjF0LmZpdCwgDQpnYXJjaDIxc3QgPSB2bmkuZ2FyY2gyMXN0LmZpdCwgDQpnYXJjaDIxZyA9IHZuaS5nYXJjaDIxZy5maXQsIA0KZ2FyY2gyMXNnID0gdm5pLmdhcmNoMjFzZy5maXQsDQogZ2FyY2gyMm4gPSB2bmkuZ2FyY2gyMm4uZml0LCANCmdhcmNoMjJ0ID0gdm5pLmdhcmNoMjJ0LmZpdCwNCmdhcmNoMjJzdCA9IHZuaS5nYXJjaDIyc3QuZml0LCANCmdhcmNoMjJnID0gdm5pLmdhcmNoMjJnLmZpdCwgDQpnYXJjaDIyc2cgPSB2bmkuZ2FyY2gyMnNnLmZpdCkNCg0KIHZuaS5pbmZvLm1hdCA8LSBzYXBwbHkodm5pLm1vZGVsLmxpc3QsIGluZm9jcml0ZXJpYSkNCiByb3duYW1lcyh2bmkuaW5mby5tYXQpIDwtIHJvd25hbWVzKGluZm9jcml0ZXJpYSh2bmkuZ2FyY2gxMW4uZml0KSkNCnZuaS5pbmZvLm1hdA0KDQpgYGANCg0KYGBge3J9DQogdm5pLmluZHMgPC0gd2hpY2godm5pLmluZm8ubWF0ID09IG1pbih2bmkuaW5mby5tYXQpLCBhcnIuaW5kPVRSVUUpDQogbW9kZWwudm5pIDwtIGNvbG5hbWVzKHZuaS5pbmZvLm1hdClbdm5pLmluZHNbLDJdXQ0KIG1vZGVsLnZuaQ0KYGBgDQoNCkThu7FhIHRyw6puIHRpw6p1IGNodeG6qW4gZ2nDoSB0cuG7iyBBSUMgbmjhu48gbmjhuqV0LCBCSUMsIFNJQyB2w6AgSFFJQy4ga+G6v3QgcXXhuqMgdGh1IMSRxrDhu6NjIGThuqFuZyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIGNobyBjaHXhu5dpIGzhu6NpIHN14bqldCBWTkkgbMOgIG3DtCBow6xuaCAqQVJNQSgyLDIpLUdKUi1HQVJDSCgxLDEpLXNHRUQqLg0KDQojIyMjIDQuNS4yLjIgTcO0IGjDrG5oIEFSTUEtR0pSLUdBUkNIIGNobyBjaHXhu5dpIGzhu6NpIHN14bqldCBTUF9UU1gNCg0KYGBge3J9DQojR0pSLUdBUkNIKDEsMSlTUF9UU1ggDQogdHN4LmdhcmNoMTFuLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gIm5vcm0iKQ0KdHN4LmdhcmNoMTFuLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHRzeC5nYXJjaDExbi5zcGVjLCBkYXRhID0gYWRhdGFbLDNdKQ0KdHN4LmdhcmNoMTF0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInN0ZCIpDQp0c3guZ2FyY2gxMXQuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMTF0LnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KdHN4LmdhcmNoMTFzdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KIHRzeC5nYXJjaDExc3QuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMTFzdC5zcGVjLCBkYXRhID0gYWRhdGFbLCAzXSkNCiB0c3guZ2FyY2gxMWcuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDEpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAiZ2VkIikNCnRzeC5nYXJjaDExZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB0c3guZ2FyY2gxMWcuc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQogdHN4LmdhcmNoMTFzZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzZ2VkIikNCnRzeC5nYXJjaDExc2cuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMTFzZy5zcGVjLCBkYXRhID0gYWRhdGFbLCAzXSkNCg0KI0dKUi1HQVJDSCgxLDIpU1BfVFNYDQogDQp0c3guZ2FyY2gxMm4uc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQp0c3guZ2FyY2gxMm4uZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMTJuLnNwZWMsIGRhdGEgPSBhZGF0YVssM10pDQp0c3guZ2FyY2gxMnQuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAic3RkIikNCnRzeC5nYXJjaDEydC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB0c3guZ2FyY2gxMnQuc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQp0c3guZ2FyY2gxMnN0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KdHN4LmdhcmNoMTJzdC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB0c3guZ2FyY2gxMnN0LnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KdHN4LmdhcmNoMTJnLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQp0c3guZ2FyY2gxMmcuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMTJnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KDQp0c3guZ2FyY2gxMnNnLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNnZWQiKQ0KdHN4LmdhcmNoMTJzZy5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB0c3guZ2FyY2gxMnNnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KDQojICBHSlItR0FSQ0goMiwxKVNQX1RTWA0KDQp0c3guZ2FyY2gyMW4uc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQp0c3guZ2FyY2gyMW4uZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMjFuLnNwZWMsIGRhdGEgPSBhZGF0YVssM10pDQp0c3guZ2FyY2gyMXQuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KIHRzeC5nYXJjaDIxdC5maXQgPC0gdWdhcmNoZml0KHNwZWMgPSB0c3guZ2FyY2gyMXQuc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQogdHN4LmdhcmNoMjFzdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMSkpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzc3RkIikNCiB0c3guZ2FyY2gyMXN0LmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHRzeC5nYXJjaDIxc3Quc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQogdHN4LmdhcmNoMjFnLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQp0c3guZ2FyY2gyMWcuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMjFnLnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KIHRzeC5nYXJjaDIxc2cuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQp0c3guZ2FyY2gyMXNnLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHRzeC5nYXJjaDIxc2cuc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQojIEdKUi1HQVJDSCgyLDIpU1BfVFNYDQogdHN4LmdhcmNoMjJuLnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQp0c3guZ2FyY2gyMm4uZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMjJuLnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KdHN4LmdhcmNoMjJ0LnNwZWMgPC0gdWdhcmNoc3BlYyh2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQptZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDIsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwgZGlzdHJpYnV0aW9uLm1vZGVsID0gInN0ZCIpDQp0c3guZ2FyY2gyMnQuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMjJ0LnNwZWMsIGRhdGEgPSBhZGF0YVssIDNdKQ0KdHN4LmdhcmNoMjJzdC5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzc3RkIikNCnRzeC5nYXJjaDIyc3QuZml0IDwtIHVnYXJjaGZpdChzcGVjID0gdHN4LmdhcmNoMjJzdC5zcGVjLCBkYXRhID0gYWRhdGFbLCAzXSkNCnRzeC5nYXJjaDIyZy5zcGVjIDwtIHVnYXJjaHNwZWModmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygyLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJnZWQiKQ0KdHN4LmdhcmNoMjJnLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHRzeC5nYXJjaDIyZy5zcGVjLCBkYXRhID0gYWRhdGFbLCAzXSkNCnRzeC5nYXJjaDIyc2cuc3BlYyA8LSB1Z2FyY2hzcGVjKHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDIpKSwNCm1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMiwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLCBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQp0c3guZ2FyY2gyMnNnLmZpdCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHRzeC5nYXJjaDIyc2cuc3BlYywgZGF0YSA9IGFkYXRhWywgM10pDQpgYGANCg0KYGBge3J9DQp0c3gubW9kZWwubGlzdCA8LSBsaXN0KA0KICAgZ2FyY2gxMW4gPSB0c3guZ2FyY2gxMW4uZml0LCANCiAgIGdhcmNoMTF0ID0gdHN4LmdhcmNoMTF0LmZpdCwgDQogICBnZ2FyY2gxMXN0ID0gdHN4LmdhcmNoMTFzdC5maXQsDQpnYXJjaDExZyA9IHRzeC5nYXJjaDExZy5maXQsIA0KZ2FyY2gxMXNnID0gdHN4LmdhcmNoMTFzZy5maXQsDQpnYXJjaDEybiA9IHRzeC5nYXJjaDEybi5maXQsIA0KZ2FyY2gxMnQgPSB0c3guZ2FyY2gxMnQuZml0LCANCmdhcmNoMTJzdCA9IHRzeC5nYXJjaDEyc3QuZml0LCANCmdhcmNoMTJnID0gdHN4LmdhcmNoMTJnLmZpdCwgDQpnYXJjaDEyc2cgPSB0c3guZ2FyY2gxMnNnLmZpdCwNCiBnYXJjaDIxbiA9IHRzeC5nYXJjaDIxbi5maXQsDQpnYXJjaDIxdCA9IHRzeC5nYXJjaDIxdC5maXQsIA0KZ2FyY2gyMXN0ID0gdHN4LmdhcmNoMjFzdC5maXQsIA0KZ2FyY2gyMWcgPSB0c3guZ2FyY2gyMWcuZml0LCANCmdhcmNoMjFzZyA9IHRzeC5nYXJjaDIxc2cuZml0LA0KZ2FyY2gyMm4gPSB0c3guZ2FyY2gyMm4uZml0LCANCmdhcmNoMjJ0ID0gdHN4LmdhcmNoMjJ0LmZpdCwNCmdhcmNoMjJzdCA9IHRzeC5nYXJjaDIyc3QuZml0LCANCmdhcmNoMjJnID0gdHN4LmdhcmNoMjJnLmZpdCwgDQpnYXJjaDIyc2cgPSB0c3guZ2FyY2gyMnNnLmZpdCkNCg0KIHRzeC5pbmZvLm1hdCA8LSBzYXBwbHkodHN4Lm1vZGVsLmxpc3QsIGluZm9jcml0ZXJpYSkNCiByb3duYW1lcyh0c3guaW5mby5tYXQpIDwtIHJvd25hbWVzKGluZm9jcml0ZXJpYSh0c3guZ2FyY2gxMW4uZml0KSkNCnRzeC5pbmZvLm1hdA0KYGBgDQoNCmBgYHtyfQ0KdHN4LmluZHMgPC0gd2hpY2godHN4LmluZm8ubWF0ID09IG1pbih0c3guaW5mby5tYXQpLCBhcnIuaW5kID0gVFJVRSkNCiBtb2RlbC50c3ggPC0gY29sbmFtZXModHN4LmluZm8ubWF0KVt0c3guaW5kc1ssIDJdXQ0KbW9kZWwudHN4DQpgYGANCg0KROG7sWEgdHLDqm4gdGnDqnUgY2h14bqpbiBnacOhIHRy4buLIEFJQyBuaOG7jyBuaOG6pXQsIEJJQywgU0lDIHbDoCBIUUlDLiBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MgZOG6oW5nIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gY2hvIGNodeG7l2kgbOG7o2kgc3XhuqV0IFMmUC9UU1ggbMOgIG3DtCBow6xuaCAqQVJNQSgyLDIpLUdKUi1HQVJDSCgyLDIpLVN0dWRlbnQgdC4qDQoNCiMjIyMgNC41LjIuMyBUaGFtIHPhu5EgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBiacOqbiBwaMO5IGjhu6NwIG5o4bqldDoNCg0KKkNodeG7l2kgbOG7o2kgc3XhuqV0IFZOSSoNCg0KYGBge3J9DQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCg0KZXh0cmFjdF9nYXJjaF9yZXN1bHRzIDwtIGZ1bmN0aW9uKGZpdCkgew0KICBjb2VmIDwtIGNvZWYoZml0KQ0KICBzZSA8LSBmaXRAZml0JHNlLmNvZWYNCiAgcHZhbHVlcyA8LSAyICogKDEgLSBwbm9ybShhYnMoZml0QGZpdCR0dmFsKSkpICMgdMOtbmggZ2nDoSB0cuG7iyBwIHThu6sgZ2nDoSB0cuG7iyB0DQogIHJlc3VsdHMgPC0gY2JpbmQoY29lZiwgc2UsIHB2YWx1ZXMpDQogIGNvbG5hbWVzKHJlc3VsdHMpIDwtIGMoIkVzdGltYXRlIiwgIlN0ZC4gRXJyb3IiLCAiUHIoPnx6fCkiKQ0KICByZXR1cm4ocmVzdWx0cykNCn0NCg0KZml0MSA8LSBleHRyYWN0X2dhcmNoX3Jlc3VsdHModm5pLmdhcmNoMTFzZy5maXQpDQpmaXQyIDwtIGV4dHJhY3RfZ2FyY2hfcmVzdWx0cyh0c3guZ2FyY2gyMnQuZml0KQ0KDQprYWJsZShhcy5kYXRhLmZyYW1lKGZpdDEpLCANCiAgY2FwdGlvbiA9ICJL4bq/dCBxdeG6oyBtw7QgaMOsbmggQVJNQSgyLDIpLUdKUi1HYXJjaCgxLDEpLXNHRUQgY+G7p2EgVk5JIiwgDQogIGZvcm1hdCA9ICdwYW5kb2MnKSAlPiUga2FibGVfc3R5bGluZygNCiAgICAgICAgICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSwgDQogICAgICAgICAgICBmdWxsX3dpZHRoID0gRikNCmBgYA0KDQpC4bqjbmcgNiBr4bq/dCBxdeG6oyBtw7QgaMOsbmggQVJNQSgyLDIpLUdKUi1HYXJjaCgxLDEpLXNHRUQgY2hvIGNodeG7l2kgbOG7o2kgc3XhuqV0IGNo4buJIHPhu5EgVk5JIGNobyB0aOG6pXkgbeG7mXQgc+G7kSDEkeG6t2MgxJFp4buDbSBxdWFuIHRy4buNbmcgduG7gSBj4bqldSB0csO6YyB2w6AgxJHhu5luZyB0aMOhaSBj4bunYSBk4buvIGxp4buHdS4NCg0KLSAgIFRoYW0gc+G7kSAqKm11Kio6IGzDoCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIGNodeG7l2kgbOG7o2kgc3XhuqV0IHNhdSBraGkgxJHDoyBsb+G6oWkgYuG7jyDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHRow6BuaCBwaOG6p24gQVIgdsOgIE1BLkdpw6EgdHLhu4sgcuG6pXQgbmjhu48gdsOgIMOibSBjaG8gdGjhuqV5IG3hu6ljIHRydW5nIGLDrG5oIGPhu6dhIGJp4bq/biDEkeG7lWkgdHJvbmcgbeG7mXQga2hv4bqjbmcgdGjhu51pIGdpYW4gbMOgIGtow7RuZyBs4bubbg0KDQotICAgVGhhbSBz4buRICoqYXIxKio6SOG7hyBz4buRIMOibSBjaG8gdGjhuqV5IGPDsyBt4buZdCBz4buxIHTGsMahbmcgcXVhbiBuZ8aw4bujYyBjaGnhu4F1IGdp4buvYSBnacOhIHRy4buLIGhp4buHbiB04bqhaSB2w6AgZ2nDoSB0cuG7iyBj4bunYSBr4buzIHRyxrDhu5tjLg0KDQotICAgVGhhbSBz4buRICoqYXIyKio6IEtow7RuZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHbDrCBwX3ZhbHVlIGzhu5tuIGjGoW4gbeG7qWMgw70gbmdoxKlhIDUlLg0KDQotICAgVGhhbSBz4buRICoqbWExKio6SOG7hyBz4buRIGTGsMahbmcgY2jhu4kgcmEgcuG6sW5nIGPDsyBt4buZdCBz4buxIGtp4buHbiB0w61jaCBj4buxYyBj4bunYSBr4buzIHRyxrDhu5tjIGzDoG0gY2hvIGNodeG7l2kgbOG7o2kgc3XhuqV0IGhp4buHbiB04bqhaSB0xINuZyB0aGVvLg0KDQotICAgVGhhbSBz4buRICoqbWEyKio6S2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOsIHBfdmFsdWUgbOG7m24gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUuDQoNCi0gICBUaGFtIHPhu5EgKipvbWVnYSoqOiB0dXkga2jDtG5nIGPDsyBt4bupYyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIG5oxrBuZyBnacOhIHRy4buLIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyAoMC4wMDAwMDM3KSBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIGJp4bq/biDEkeG7mW5nIGPGoSBi4bqjbiBj4bunYSBjaHXhu5dpIGzhu6NpIHN14bqldCBsw6AgdCwgcGjhuqNuIMOhbmggcuG6sW5nIHRyb25nIHRyxrDhu51uZyBo4bujcCBraMO0bmcgY8OzIGPDuiBz4buRYyBs4bubbiwgbOG7o2kgc3XhuqV0IGPDsyB4dSBoxrDhu5tuZyDhu5VuIMSR4buLbmggduG7m2kgw610IGJp4bq/biDEkeG7mW5nLg0KDQotICAgVGhhbSBz4buRICoqYWxwaGExKio6IHR1eSBnacOhIHRy4buLIHRo4buRbmcga8OqIGtow7RuZyBjYW8sIG5oxrBuZyBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGzDoCBkxrDGoW5nIGNobyB0aOG6pXkgcuG6sW5nIGPDuiBz4buRYyDhu58ga+G7syB0csaw4bubYyBraMO0bmcgY8OzIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24gc+G7sSBiaeG6v24gxJHhu5luZyBoaeG7h24gdOG6oWkuDQoNCi0gICBUaGFtIHPhu5EgKipiZXRhMSoqOkdpw6EgdHLhu4sgxrDhu5tjIGzGsOG7o25nIGzDoCAwLjg2NjQzNTMsIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvLCBjaG8gdGjhuqV5IHBoxrDGoW5nIHNhaSDEkWnhu4F1IGtp4buHbiBjw7Mgc+G7sSBwaOG7pSB0aHXhu5ljIGzhu5tuIHbDoG8gZ2nDoSB0cuG7iyBj4bunYSBjaMOtbmggbsOzIOG7nyBr4buzIHRyxrDhu5tjLg0KDQotICAgVGhhbSBz4buRICoqZ2FtbWExKio6R2nDoSB0cuG7iyDGsOG7m2MgbMaw4bujbmcgbMOgIDAuMjE2MDk4NCwgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8sIGNobyB0aOG6pXkgc+G7sSBoaeG7h24gZGnhu4duIGPhu6dhIGhp4buHdSDhu6luZyDEkcOybiBi4bqpeSB0cm9uZyBjaHXhu5dpIGzhu6NpIHN14bqldC4NCg0KLSAgIFRoYW0gc+G7kSAqKnNrZXcqKjogR2nDoSB0cuG7iyDGsOG7m2MgbMaw4bujbmcgY+G7p2Fsw6AgMS4wNTUyMTk1LCBjaG8gdGjhuqV5IFBow6JuIHBo4buRaSBjw7MgxJF1w7RpIGLDqm4gcGjhuqNpIGTDoGkgaMahbiB2w6AgdHLhu41uZyB0w6JtIGzhu4djaCB24buBIGLDqm4gdHLDoWksIG5n4bulIMO9IHLhurFuZyBz4buxIGJp4bq/biDEkeG7mW5nIHRpw6p1IGPhu7FjIGPDsyBraOG6oyBuxINuZyB44bqjeSByYSBjYW8gaMahbi4NCg0KLSAgIFRoYW0gc+G7kSAqKnNoYXBlKio6R2nDoSB0cuG7iyDGsOG7m2MgbMaw4bujbmcgY+G7p2EgbMOgIDEuMTUxMzAxNixjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IGNhbyB0dXkgbmhpw6puIGPDsyBraOG6oyBuxINuZyB4deG6pXQgaGnhu4duIG5oaeG7gXUgYmnhur9uIMSR4buZbmcgbOG7m24gdsOgIGtow7RuZyBiw6xuaCB0aMaw4budbmcuDQoNCmBgYHtyfQ0Ka2FibGUoYXMuZGF0YS5mcmFtZShmaXQyKSwgDQogIGNhcHRpb24gPSAiS+G6v3QgcXXhuqMgbcO0IGjDrG5oIEFSTUEoMiwyKS1HSlItR2FyY2goMiwyKS1TdHVkZW50IHQgY+G7p2EgUyZQL1RTWCIsIA0KICBmb3JtYXQgPSAncGFuZG9jJykgJT4lIGthYmxlX3N0eWxpbmcoDQogICAgICAgICAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiksIA0KICAgICAgICAgICAgZnVsbF93aWR0aCA9IEYpDQpgYGANCg0KQuG6o25nIDc6IEvhur90IHF14bqjIG3DtCBow6xuaCBBUk1BKDIsMiktR0pSLUdhcmNoKDIsMiktU3R1ZGVudCB0IGNo4buJIHPhu5EgUyZQL1RTWCBjaG8gdGjhuqV5IG3hu5l0IHPhu5EgxJHhurdjIMSRaeG7g20gcXVhbiB0cuG7jW5nIHbhu4EgY+G6pXUgdHLDumMgdsOgIMSR4buZbmcgdGjDoWkgY+G7p2EgZOG7ryBsaeG7h3UuDQoNCi0gICBUaGFtIHPhu5EgKiptdSoqOiBsw6AgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBj4bunYSBjaHXhu5dpIGzhu6NpIHN14bqldCBzYXUga2hpIMSRw6MgbG/huqFpIGLhu48g4bqjbmggaMaw4bufbmcgY+G7p2EgY8OhYyB0aMOgbmggcGjhuqduIEFSIHbDoCBNQS5HacOhIHRy4buLIHLhuqV0IG5o4buPIHbDoCDDom0gY2hvIHRo4bqleSBt4bupYyB0cnVuZyBiw6xuaCBj4bunYSBiaeG6v24gxJHhu5VpIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIGzDoCBraMO0bmcgbOG7m24uDQoNCi0gICBUaGFtIHPhu5EgKiphcjEqKjpI4buHIHPhu5EgZMawxqFuZyBjaG8gdGjhuqV5IGhvIHRo4bqleSDhuqNuaCBoxrDhu59uZyB0w61jaCBj4buxYyBj4bunYSBnacOhIHRy4buLIHRyxrDhu5tjIMSRw7MgbMOqbiBjaHXhu5dpIGzhu6NpIHN14bqldCBoaeG7h24gdOG6oWkuDQoNCi0gICBUaGFtIHPhu5EgKiphcjIqKjogSOG7hyBz4buRIMOibSBjaG8gdGjhuqV5IGPDsyBt4buZdCBz4buxIHTGsMahbmcgcXVhbiBuZ8aw4bujYyBjaGnhu4F1IGdp4buvYSBnacOhIHRy4buLIGhp4buHbiB04bqhaSB2w6AgZ2nDoSB0cuG7iyBj4bunYSBr4buzIHRyxrDhu5tjLg0KDQotICAgVGhhbSBz4buRICoqbWExKio6SOG7hyBz4buRIMOibSBjaOG7iSByYSBy4bqxbmcgY8OzIG3hu5l0IHPhu7Ega2nhu4duIHRpw6p1IGPhu7FjIGPhu6dhIGvhu7MgdHLGsOG7m2MgbMOgbSBjaG8gY2h14buXaSBs4bujaSBzdeG6pXQgaGnhu4duIHThuqFpIGdp4bqjbSDEkWkuDQoNCi0gICBUaGFtIHPhu5EgKiptYTIqKjpI4buHIHPhu5EgZMawxqFuZyBjaOG7iSByYSBy4bqxbmcgY8OzIG3hu5l0IHPhu7Ega2nhu4duIHTDrWNoIGPhu7FjIGPhu6dhIGhhaSBr4buzIHRyxrDhu5tjIGzDoG0gY2hvIGNodeG7l2kgbOG7o2kgc3XhuqV0IGhp4buHbiB04bqhaSB0xINuZyB0aGVvLg0KDQotICAgVGhhbSBz4buRICoqb21lZ2EqKjogdHV5IGtow7RuZyBjw7MgbeG7qWMgw70gbmdoxKlhIHRo4buRbmcga8OqLCBuaMawbmcgZ2nDoSB0cuG7iyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgKDAuMDAwMDAzOSkgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBiaeG6v24gxJHhu5luZyBjxqEgYuG6o24gY+G7p2EgY2h14buXaSBs4bujaSBzdeG6pXQgbMOgIHQsIHBo4bqjbiDDoW5oIHLhurFuZyB0cm9uZyB0csaw4budbmcgaOG7o3Aga2jDtG5nIGPDsyBjw7ogc+G7kWMgbOG7m24sIGzhu6NpIHN14bqldCBjw7MgeHUgaMaw4bubbmcg4buVbiDEkeG7i25oIHbhu5tpIMOtdCBiaeG6v24gxJHhu5luZy4NCg0KLSAgIFRoYW0gc+G7kSAqKmFscGhhMSoqOiB0dXkgZ2nDoSB0cuG7iyB0aOG7kW5nIGvDqiBraMO0bmcgY2FvLCBuaMawbmcgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBsw6AgZMawxqFuZyBjaG8gdGjhuqV5IHLhurFuZyBjw7ogc+G7kWMg4bufIGvhu7MgdHLGsOG7m2Mga2jDtG5nIGPDsyB0w6FjIMSR4buZbmcgxJHDoW5nIGvhu4MgxJHhur9uIHPhu7EgYmnhur9uIMSR4buZbmcgaGnhu4duIHThuqFpLg0KDQotICAgVGhhbSBz4buRICoqYmV0YTEqKjpHacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBy4bqldCBuaOG7jywga2jDtG5nIGPDsyBt4bupYyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIGNobyB0aOG6pXkgYmnhur9uIMSR4buZbmcgY+G7p2Ega+G7syB0csaw4bubYyBraMO0bmcgY8OzIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24gYmnhur9uIMSR4buZbmcgaGnhu4duIHThuqFpIHRyb25nIGNodeG7l2kgbOG7o2kgc3XhuqV0IFMmUC9UU1guDQoNCi0gICBUaGFtIHPhu5EgKipnYW1tYTEqKjpHacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBsw6AgMC4yMDA1MzUwLCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbywgY2hvIHRo4bqleSBz4buxIGhp4buHbiBkaeG7h24gY+G7p2EgaGnhu4d1IOG7qW5nIMSRw7JuIGLhuql5IHRyb25nIGNodeG7l2kgbOG7o2kgc3XhuqV0Lg0KDQotICAgVGhhbSBz4buRICoqZ2FtbWEyKio6IGPDsyBnacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBsw6AgMC4zNTM4MTg1LCBjaG8gdGjhuqV5IHLhurFuZyBiaeG6v24gxJHhu5luZyBoaeG7h24gdOG6oWkgc+G6vSB0xINuZyBsw6puIMSRw6FuZyBr4buDIG7hur91IGPDsyBjw7ogc+G7kWMgdGnDqnUgY+G7sWMgdHJvbmcga+G7syB0csaw4bubYyDEkcOzLg0KDQotICAgVGhhbSBz4buRICoqc2hhcGUqKjpHacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBj4bunYSBsw6AgMTAuNDA4NTk5NCBjaG8gdGjhuqV5IHBow6JuIHBo4buRaSBTdHVkZW50IHQgY8OzIMSRdcO0aSBkw6B5IGjGoW4gc28gduG7m2kgcGjDom4gcGjhu5FpIGNodeG6qW4sY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBjYW8gdsOgIGPDsyBraOG6oyBuxINuZyBtw7QgaMOsbmggaMOzYSBjw6FjIGPDuiBz4buRYyBs4bubbiwgbmjGsG5nIGtow7RuZyBxdcOhIGPhu7FjIMSRb2FuIG5oxrAga2hpIMSR4buZIHThu7EgZG8gcXXDoSB0aOG6pXAuDQoNCiMjIyA0LjUuMyBLaeG7g20gxJHhu4tuaCDEkeG7mSBwaOG7pSB0aHXhu5ljIGPhu6dhIG3DtCBow6xuaCBiacOqbg0KDQpgYGB7cn0NCiAjIFRyw61jaCB4deG6pXQgY2h14buXaSBwaOG6p24gZMawICBj4bunYSBjaHXhu5dpIFZOSSB2w6AgIFNQX1RTWA0KIHRzeC5yZXMgPC0gcmVzaWR1YWxzKHRzeC5nYXJjaDIydC5maXQpL3NpZ21hKHRzeC5nYXJjaDIydC5maXQpDQogZml0ZGlzdChkaXN0cmlidXRpb24gPSAic3RkIiwgdHN4LnJlcywgY29udHJvbCA9IGxpc3QoKSkkcGFyDQpgYGANCg0KYGBge3J9DQp0IDwtIHBkaXN0KGRpc3RyaWJ1dGlvbiA9ICJzdGQiLCBxID0gdHN4LnJlcywgbXUgPSAwLjAyNTAwODczICwgc2lnbWEgPSAxLjAxMjAwMTEyLCBzaGFwZSA9IDEwLjAyNTA3NjcxICApDQpgYGANCg0KYGBge3J9DQp2bmkucmVzIDwtIHJlc2lkdWFscyh2bmkuZ2FyY2gxMXNnLmZpdCkvc2lnbWEodm5pLmdhcmNoMTFzZy5maXQpDQogZml0ZGlzdChkaXN0cmlidXRpb24gPSAic2dlZCIsIHZuaS5yZXMsIGNvbnRyb2wgPSBsaXN0KCkpJHBhcg0KDQpgYGANCg0KYGBge3J9DQogdiA9IHBkaXN0KCJzZ2VkIix2bmkucmVzLCBtdSA9IDAuMDI2Nzc4NzYsIHNpZ21hID0gMS4wMTEzMDE4OSwgc2tldyA9IDEuMDc0Mjc4OTMgLCBzaGFwZSA9IDEuMTQ1ODc1MjggICkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQojIEtpZW0gZGluaCBBbmRlcnNvbi1EYXJsaW5nDQoNCmxpYnJhcnkoQURHb2ZUZXN0KQ0KYWRfdHN4IDwtIGFkLnRlc3QodCwgcHVuaWYpDQphZF92bmkgPC0gYWQudGVzdCh2LCBwdW5pZikNCg0KIyBLaeG7g20gxJHhu4tuaCBDcmFtZXItdm9uIE1pc2VzDQpsaWJyYXJ5KGdvZnRlc3QpDQpjdm1fdHN4IDwtIGN2bS50ZXN0KHQsIHB1bmlmKQ0KY3ZtX3ZuaSA8LWN2bS50ZXN0KHYsIHB1bmlmKQ0KDQojS2nhu4NtIMSR4buLbmgga3MtdGVzdA0Ka3NfdHN4IDwtIGtzLnRlc3QodCwgcHVuaWYpDQprc192bmkgPC0ga3MudGVzdCh2LCBwdW5pZikNCg0KI1Ryw6xuaCBiw6B5IGvhur90IHF14bqjDQpteXRlc3QgPC0gZGF0YS5mcmFtZSh0ZXN0ID0gYygnUF92YWx1ZSBWTkknICwnUF92YWx1ZSBTJlAtVFNYJyksDQogICAgICAgICAgICAgICAgICAgIEFEID0gYyhhZF92bmkkcC52YWx1ZSwgYWRfdHN4JHAudmFsdWUpLA0KICAgICAgICAgICAgICAgICAgICBDVk0gPSBjKGN2bV92bmkkcC52YWx1ZSwgY3ZtX3RzeCRwLnZhbHVlKSwNCiAgICAgICAgICAgICAgICAgICBLUyA9IGMoa3Nfdm5pJHAudmFsdWUsa3NfdHN4JHAudmFsdWUpKQ0KDQprYWJsZShteXRlc3QsIA0KICBjYXB0aW9uID0gIiBL4bq/dCBxdeG6oyBjw6FjIGtp4buDbSDEkeG7i25oIGNobyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIiwgY29sLm5hbWVzID0gYygiQ8OhYyBraeG7g20gxJHhu4tuaCIsIkFuZGVyc29uLURhcmxpbmciLCAiQ3JhbWVyLXZvbiBNaXNlcyIsIktvbG1vZ29yb3YtU21pcm5vdiIpLCANCiAgZm9ybWF0ID0gJ3BhbmRvYycpICU+JSBrYWJsZV9zdHlsaW5nKA0KICAgICAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGKQ0KYGBgDQoNCkPDoWMgZ2nDoSB0cuG7iyBQX3ZhbHVlIGNhbyB2w6AgbOG7m24gaMahbiBt4bupYyDDvSBuZ2jEqWEgdOG7qyBj4bqjIGJhIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgcuG6sW5nIGtow7RuZyBjw7MgYuG6sW5nIGNo4bupbmcgdGjhu5FuZyBrw6ogxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IHLhurFuZyBk4buvIGxp4buHdSBj4bunYSBjw6FjIGNodeG7l2kgdOG7tyBzdeG6pXQgVk5JIHbDoCBTJlAvVFNYIHR1w6JuIHRoZW8gcGjDom4gcGjhu5FpIMSRxrDhu6NjIGdp4bqjIMSR4buLbmggdHJvbmcgbcO0IGjDrG5oLiBOaOG7r25nIGvhur90IHF14bqjIG7DoHkgY+G7p25nIGPhu5Ega+G6v3QgbHXhuq1uIHLhurFuZyBtw7QgaMOsbmggQ29wdWxhIHPhur0gbMOgIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UgY+G7p2EgaGFpIGJp4bq/biBuw6B5LiANCg0KIyMgNC42IMav4buaQyBMxq/hu6JORyBUSEFNIFPhu5AgQ09QVUxBDQoNCmBgYHtyfQ0KbGlicmFyeShWaW5lQ29wdWxhKQ0KYSA8LSBCaUNvcFNlbGVjdCh0LCB2LCBmYW1pbHlzZXQ9IDE6OSwgc2VsZWN0aW9uY3JpdD0iQUlDIixpbmRlcHRlc3QgPSBGQUxTRSwgbGV2ZWwgPSAwLjA1KQ0KYQ0KIFN0dSA8LSBCaUNvcEVzdCh0LCB2LCBmYW1pbHkgPSAyLCBtZXRob2QgPSAibWxlIiwgc2UgPSBULCBtYXguZGYgPSAxMCkNCiBzdW1tYXJ5KFN0dSkNCmBgYA0KDQpLaGkgdGjhu7FjIGhp4buHbiDGsOG7m2MgbMaw4bujbmcgQ29wdWxhIHRhIG5o4bqtbiDEkcaw4bujYyBr4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgbMOgIGjhu40gQ29wdWxhIFN0dWRlbnQtdCB24bubaSBjw6FjIGdpw6EgdHLhu4sgcGFyID0gMC4wOCwgcGFyMiA9IDEwLjIgdsOgIHRhdT0gMC4wNS4NCg0KLSAgIFRoYW0gc+G7kSBwYXIgKDAuMDgpOiBUaGFtIHPhu5EgbsOgeSBiaeG7g3UgdGjhu4sgbeG7qWMgxJHhu5kgcGjhu6UgdGh14buZYyB0dXnhur9uIHTDrW5oIGdp4buvYSBWTkkgdsOgIFMmUC9UU1guIFbhu5tpIGdpw6EgdHLhu4sgMC4wOCwgY2jDum5nIHRhIHRo4bqleSBt4buZdCBt4bupYyDEkeG7mSB0xrDGoW5nIHF1YW4ga2jDoSB54bq/dSBnaeG7r2EgaGFpIHRo4buLIHRyxrDhu51uZyB0cm9uZyBi4buRaSBj4bqjbmggYsOsbmggdGjGsOG7nW5nLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSwgdHJvbmcgcGjhuqduIGzhu5tuIHRo4budaSBnaWFuLCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSB2w6AgQ2FuYWRhIGhv4bqhdCDEkeG7mW5nIHTGsMahbmcgxJHhu5FpIMSR4buZYyBs4bqtcC4NCg0KLSAgIFRoYW0gc+G7kSBwYXIyICgxMC4yKTogRGVncmVlcyBvZiBmcmVlZG9tIChkZikgdHJvbmcgQ29wdWxhIFN0dWRlbnQtdCDhuqNuaCBoxrDhu59uZyDEkeG6v24gIsSR4buZIGTDoHkiIGPhu6dhIMSRdcO0aSBwaMOibiBwaOG7kWkuIFbhu5tpIGRmID0gMTAuMiwgcGjDom4gcGjhu5FpIGPDsyDEkXXDtGkga2jDoSBkw6B5LCBjaG8gdGjhuqV5IHLhurFuZyBt4bq3YyBkw7kgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gdsOgIENhbmFkYSBraMO0bmcgdGjGsOG7nW5nIHh1ecOqbiBwaOG7pSB0aHXhu5ljIGzhuqtuIG5oYXUsIG5oxrBuZyBraGkgY8OzIG5o4buvbmcgY8O6IHPhu5FjIGzhu5tuLCBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgbsOgeSBjw7MgdGjhu4MgdHLhu58gbsOqbiBt4bqhbmggbeG6vSBoxqFuLiDEkGnhu4F1IG7DoHkgcGjDuSBo4bujcCB24bubaSB0aOG7sWMgdOG6vyBraGkgY8OhYyBjw7ogc+G7kWMga2luaCB04bq/IHRvw6BuIGPhuqd1IHRoxrDhu51uZyB0w6FjIMSR4buZbmcgxJHhur9uIG5oaeG7gXUgdGjhu4sgdHLGsOG7nW5nIGPDuW5nIG3hu5l0IGzDumMuDQoNCi0gICBLZW5kYWxsJ3MgdGF1ICgwLjA1KTogR2nDoSB0cuG7iyBLZW5kYWxsJ3MgdGF1IHRo4bqlcCBjaG8gdGjhuqV5IHLhurFuZyBz4buxIHBo4bulIHRodeG7mWMgcGhpIHR1eeG6v24gZ2nhu69hIFZOSSB2w6AgUyZQL1RTWCBsw6AgcuG6pXQgeeG6v3UuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCBraOG6oyBuxINuZyBoYWkgdGjhu4sgdHLGsOG7nW5nIG7DoHkgY8O5bmcgZGkgY2h1eeG7g24gdGhlbyBt4buZdCBjaGnhu4F1IChsw6puIGhv4bq3YyB4deG7kW5nKSBsw6Aga2jDoSB0aOG6pXAgdHJvbmcgY8OhYyDEkWnhu4F1IGtp4buHbiBiw6xuaCB0aMaw4budbmcuIFR1eSBuaGnDqm4sIENvcHVsYSBTdHVkZW50LXQgduG6q24gY2hvIHBow6lwIGNow7puZyB0YSBuaOG6rW4gZGnhu4duIG5o4buvbmcga2hv4bqjbmgga2jhuq9jIMSR4buTbmcgYmnhur9uIMSR4buZbmcgbeG6oW5oIGtoaSBjw6FjIMSRaeG7gXUga2nhu4duIHRo4buLIHRyxrDhu51uZyB0aGF5IMSR4buVaSDEkeG7mXQgbmfhu5l0Lg0KDQpgYGB7cn0NCkNCIDwtIGNiaW5kKHQsIHYpDQpsaWJyYXJ5KGNvcHVsYSkNCmZpdCA8LSBmaXRDb3B1bGEodENvcHVsYSgpLCBkYXRhID0gQ0IsIG1ldGhvZCA9ICJtbCIpICANCiMgTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRpb24gKE1MRSkNCnRoZXRhIDwtIGNvZWYoZml0KQ0KbGlicmFyeShNQVNTKQ0Ka2RlMmRfcGxvdCA8LSBrZGUyZChDQlssMV0sIENCWywyXSwgbiA9IDUwKQ0KDQojIFbhur0gYuG6o24gxJHhu5Mgbmhp4buHdCBj4bunYSBow6BtIG3huq10IMSR4buZIGtlcm5lbA0KaW1hZ2Uoa2RlMmRfcGxvdCwgbWFpbiA9ICJC4bqjbiDEkeG7kyBuaGnhu4d0IGPhu6dhIGjDoG0gbeG6rXQgxJHhu5kga2VybmVsIikNCiMgVuG6vSBjw6FjIMSRxrDhu51uZyDEkeG7k25nIG3hu6ljIGPhu6dhIGjDoG0gbeG6rXQgxJHhu5kga2VybmVsDQpjb250b3VyKGtkZTJkX3Bsb3QsIGFkZCA9IFRSVUUpDQoNCmBgYA0KDQpUcsOqbiBi4bqjbiDEkeG7kyBuaGnhu4d0LCBt4buXaSDEkWnhu4NtIMSR4bqhaSBkaeG7h24gY2hvIG3hu5l0IGPhurdwIGzhu6NpIHN14bqldCBj4bunYSBoYWkgdGjhu4sgdHLGsOG7nW5nIChDYW5hZGEgdsOgIFZp4buHdCBOYW0pIHThuqFpIG3hu5l0IHRo4budaSDEkWnhu4NtIG5o4bqldCDEkeG7i25oLiBNw6B1IHPhuq9jIGPhu6dhIGPDoWMgxJFp4buDbSBuw6B5IHRo4buDIGhp4buHbiBt4bqtdCDEkeG7mSB4deG6pXQgaGnhu4duIGPhu6dhIGPDoWMgY+G6t3AgbOG7o2kgc3XhuqV0IHRyb25nIGtow7RuZyBnaWFuIGhhaSBjaGnhu4F1LCB24bubaToNCg0KLSAgIFbDuW5nIG3huq10IMSR4buZIGNhbyAobcOgdSBz4bqvYyDEkeG6rW0gaMahbikgbuG6sW0g4bufIGfDs2MgcGjhuqduIHTGsCBwaMOtYSB0csOqbiBiw6puIHBo4bqjaTogTuG6v3UgY8OzIG3hu5l0IHbDuW5nIG3huq10IMSR4buZIGNhbyB0cm9uZyBraHUgduG7sWMgbsOgeSwgxJFp4buBdSDEkcOzIGNobyB0aOG6pXkga2hpIHRo4buLIHRyxrDhu51uZyBDYW5hZGEgY8OzIGzhu6NpIHN14bqldCBkxrDGoW5nLCB0aOG7iyB0csaw4budbmcgVmnhu4d0IE5hbSBjxaluZyBjw7MgeHUgaMaw4bubbmcgxJHhuqF0IGzhu6NpIHN14bqldCBkxrDGoW5nIHTGsMahbmcg4bupbmcuIMSQaeG7gXUgbsOgeSBn4bujaSDDvSBt4buZdCBt4buRaSBxdWFuIGjhu4cgxJHhu5NuZyBiaeG6v24gZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgdHJvbmcgZ2lhaSDEkW/huqFuIG7DoHksIGPDsyB0aOG7gyBsw6AgZG8gc+G7sSBsYW4gdOG7j2EgY+G7p2EgY8OhYyB54bq/dSB04buRIGtpbmggdOG6vyB0b8OgbiBj4bqndSBob+G6t2Mgc+G7sSB0xrDGoW5nIHF1YW4gdHJvbmcgY8OhYyB54bq/dSB04buRIHRo4buLIHRyxrDhu51uZy4NCg0KLSAgIFbDuW5nIG3huq10IMSR4buZIGNhbyAobcOgdSBz4bqvYyDEkeG6rW0gaMahbikg4bufIGfDs2MgcGjhuqduIHTGsCBwaMOtYSBkxrDhu5tpIGLDqm4gdHLDoWk6IE7hur91IHThu5NuIHThuqFpIHbDuW5nIG3huq10IMSR4buZIGNhbyDhu58ga2h1IHbhu7FjIG7DoHksIG7DsyBjaG8gdGjhuqV5IGtoaSB0aOG7iyB0csaw4budbmcgQ2FuYWRhIGNo4buLdSBs4buXIChs4bujaSBzdeG6pXQgw6JtKSwgdGjhu4sgdHLGsOG7nW5nIFZp4buHdCBOYW0gY8WpbmcgY8OzIHh1IGjGsOG7m25nIGdp4bqjbSBs4bujaSBzdeG6pXQuIMSQaeG7gXUgbsOgeSBj4bunbmcgY+G7kSBz4buxIMSR4buTbmcgYmnhur9uIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIHRo4buLIHRyxrDhu51uZyB0b8OgbiBj4bqndSBzdXkgeeG6v3UuDQoNClwqVsO5bmcgbeG6rXQgxJHhu5kgdGjhuqVwIChtw6B1IHPhuq9jIG5o4bqhdCBoxqFuKSDhu58gZ8OzYyBwaOG6p24gdMawIHBow61hIHRyw6puIGLDqm4gdHLDoWkgaG/hurdjIHBow61hIGTGsOG7m2kgYsOqbiBwaOG6o2k6IE7hur91IGPDoWMgdsO5bmcgbsOgeSBjw7MgbeG6rXQgxJHhu5kgdGjhuqVwLCDEkWnhu4F1IG7DoHkgY8OzIHRo4buDIGNobyB0aOG6pXkgcuG6sW5nIGtoaSBt4buZdCB0aOG7iyB0csaw4budbmcgY8OzIGzhu6NpIHN14bqldCBkxrDGoW5nLCB0aOG7iyB0csaw4budbmcga2lhIGPDsyB0aOG7gyBraMO0bmcgbmjhuqV0IHRoaeG6v3QgcGjhuqNpIGPDsyBs4bujaSBzdeG6pXQgw6JtIHbDoCBuZ8aw4bujYyBs4bqhaS4NCg0KxJDGsOG7nW5nIMSR4buTbmcgbeG7qWMgKENvbnRvdXIpIG7DoHkgY8OzIHRo4buDIGN1bmcgY+G6pXAgbWFuaCBt4buRaSB24buBIG5o4buvbmcgcGjhuqFtIHZpIGzhu6NpIHN14bqldCBj4bulIHRo4buDIG3DoCBoYWkgdGjhu4sgdHLGsOG7nW5nIGPDsyB4dSBoxrDhu5tuZyB0xrDGoW5nIHTDoWMgbeG6oW5oIG3hur0gduG7m2kgbmhhdToNCg0KLSAgIFbDuW5nIGPDsyDEkcaw4budbmcgxJHhu5NuZyBt4bupYyBkw6B5IMSR4bq3YyB0cm9uZyBnw7NjIHBo4bqnbiB0xrAgcGjDrWEgdHLDqm4gYsOqbiBwaOG6o2kgaG/hurdjIHBow61hIGTGsOG7m2kgYsOqbiB0csOhaTogTmjhu69uZyB2w7luZyBuw6B5IHRyw6puIGLhuqNuIMSR4buTIG5oaeG7h3QgdGjhu4MgaGnhu4duIGPDoWMga2h1IHbhu7FjIG3DoCBs4bujaSBzdeG6pXQgY+G7p2EgaGFpIHRo4buLIHRyxrDhu51uZyBjw7MgeHUgaMaw4bubbmcgxJHhu5NuZyBiaeG6v24gbeG6oW5oLiBDw6FjIMSRxrDhu51uZyDEkeG7k25nIG3hu6ljIHThuq1wIHRydW5nIGTDoHkgxJHhurdjIHRyb25nIGfDs2MgcGjhuqduIHTGsCBwaMOtYSB0csOqbiBiw6puIHBo4bqjaSwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyDDoW0gY2jhu4kgcuG6sW5nIGtoaSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gQ2FuYWRhIMSR4bqhdCDEkcaw4bujYyBs4bujaSBzdeG6pXQgdMOtY2ggY+G7sWMsIHRo4buLIHRyxrDhu51uZyBWaeG7h3QgTmFtIGPFqW5nIGPDsyB4dSBoxrDhu5tuZyBwaOG6o24g4bupbmcgdMawxqFuZyB04buxIHbhu5tpIGzhu6NpIHN14bqldCBkxrDGoW5nLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGfhu6NpIMO9IHLhurFuZyBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4buLdSB0w6FjIMSR4buZbmcgdOG7qyBjw6FjIHnhur91IHThu5EgdG/DoG4gY+G6p3UgZ2nhu5FuZyBuaGF1LCBjaOG6s25nIGjhuqFuIG5oxrAgY8OhYyBjw7ogc+G7kWMga2luaCB04bq/IGhv4bq3YyBjw6FjIHh1IGjGsOG7m25nIMSR4bqndSB0xrAgcXXhu5FjIHThur8uDQoNClwqS+G6v3QgcXXhuqMgY8WpbmcgY2hvIHRo4bqleSBjw7Mgbmjhu69uZyBraHUgduG7sWMgbcOgIGPDoWMgxJHGsOG7nW5nIMSR4buTbmcgbeG7qWMgcGjDom4gdMOhbiBy4buZbmcgcsOjaSwgY2jhu4kgcmEgc+G7sSB54bq/dSBrw6ltIGhv4bq3YyBraMO0bmcgcsO1IHLDoG5nIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbOG7o2kgc3XhuqV0IGPhu6dhIGhhaSB0aOG7iyB0csaw4budbmcuIEPDoWMga2h1IHbhu7FjIG7DoHkgdGjhu4MgaGnhu4duIGPDoWMgZ2nDoSB0cuG7iyBs4bujaSBzdeG6pXQgbcOgIHThuqFpIMSRw7Mgc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGzDoCBraMO0bmcgbeG6oW5oIG3hur0sIGhv4bq3YyBraMO0bmcgY8OzIHPhu7EgdMawxqFuZyBxdWFuIHLDtSByw6BuZy4NCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoQ0IsIGFlcyh4ID0gQ0JbLDFdLCB5ID0gQ0JbLDJdKSkgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gImJsdWUiLCBzaXplID0gMSkgKw0KICBsYWJzKHRpdGxlID0gIkJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSBwaMOibiB0w6FuIENvcHUiLA0KICAgICAgIHggPSAiUyZQL1RTWCIsDQogICAgICAgeSA9ICJWTkkiKQ0KYGBgDQoNCsSQ4buTIHRo4buLIHBow6JuIHTDoW4gbsOgeSBsw6AgbeG7mXQgY8O0bmcgY+G7pSBxdWFuIHRy4buNbmcgxJHhu4MgdHLhu7FjIHF1YW4gaMOzYSBz4buxIHBow6JuIGLhu5EgY+G7p2EgY+G6t3AgbOG7o2kgc3XhuqV0IHThu6sgaGFpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiwgdsOgIGPFqW5nIGdpw7pwIHRhIGhp4buDdSByw7UgaMahbiB24buBIGPDoWNoIHRo4bupYyBtw6AgaGFpIFRUQ0sgVmnhu4d0IE5hbSB2w6AgQ2FuYWRhIG7DoHkgY8OzIHRo4buDIHBo4bulIHRodeG7mWMgbOG6q24gbmhhdS4NCg0KLSAgIMSQ4buTIHRo4buLIGNobyB0aOG6pXkgc+G7sSB04bqtcCB0cnVuZyBj4bunYSBjw6FjIMSRaeG7g20gbOG7o2kgc3XhuqV0IHThuqFpIHbDuW5nIHRydW5nIHTDom0sIMSR4bq3YyBiaeG7h3QgdHJvbmcga2hv4bqjbmcgdOG7qyAwLjIgxJHhur9uIDAuOCB0csOqbiBj4bqjIGhhaSB0cuG7pWMuIMSQaeG7gXUgbsOgeSBn4bujaSDDvSBy4bqxbmcgY8OzIG3hu5l0IG3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMgbmjhuqV0IMSR4buLbmggZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgdOG6oWkgY8OhYyBt4bupYyBs4bujaSBzdeG6pXQgdHJ1bmcgYsOsbmguIFPhu7EgcGjDom4gYuG7kSBuw6B5IHRo4buDIGhp4buHbiBy4bqxbmcga2hpIGzhu6NpIHN14bqldCBj4bunYSB0aOG7iyB0csaw4budbmcgQ2FuYWRhIG7hurFtIHRyb25nIGtob+G6o25nIHRydW5nIGLDrG5oLCBs4bujaSBzdeG6pXQgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIFZp4buHdCBOYW0gY8WpbmcgY8OzIHh1IGjGsOG7m25nIHTGsMahbmcgdOG7sS4NCg0KLSAgIEPDoWMgdsO5bmcgcGjDom4gdMOhbiBy4budaSBy4bqhYyDhu58gaGFpIMSR4bqndSBj4bunYSDEkeG7kyB0aOG7iyBjaG8gdGjhuqV5IHLhurFuZyBraGkgbOG7o2kgc3XhuqV0IGPhu6dhIFRUQ0sgQ2FuYWRhIG7hurFtIOG7nyBjw6FjIG3hu6ljIGPhu7FjIMSR4bqhaSBob+G6t2MgY+G7sWMgdGnhu4N1LCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGPDsyB0aOG7gyB0cuG7nyBuw6puIHnhur91IGhv4bq3YyBraMO0bmcgcsO1IHLDoG5nLiBD4bulIHRo4buDLCDEkWnhu4F1IG7DoHkgdGjhu4MgaGnhu4duIHLhurFuZyBjw6FjIGPDuiBz4buRYyBs4bubbiB0csOqbiB0aOG7iyB0csaw4budbmcgQ2FuYWRhIGtow7RuZyBwaOG6o2kgbMO6YyBuw6BvIGPFqW5nIGvDqW8gdGhlbyBuaOG7r25nIGJp4bq/biDEkeG7mW5nIHTGsMahbmcg4bupbmcgdHLDqm4gdGjhu4sgdHLGsOG7nW5nIFZp4buHdCBOYW0uIMSQw6J5IGzDoCBk4bqldSBoaeG7h3UgY+G7p2Egc+G7sSDEkeG7mWMgbOG6rXAgdMawxqFuZyDEkeG7kWkgdHJvbmcgbeG7mXQgc+G7kSB0w6xuaCBodeG7kW5nIGtpbmggdOG6vyBj4bulIHRo4buDLCBjw7MgdGjhu4MgZG8gY8OhYyB54bq/dSB04buRIG7hu5lpIHThuqFpIGPhu6dhIFZp4buHdCBOYW0gaG/hurdjIHPhu7Ega2jDoWMgYmnhu4d0IHRyb25nIHBo4bqjbiDhu6luZyBj4bunYSBoYWkgdGjhu4sgdHLGsOG7nW5nIMSR4buRaSB24bubaSBjw6FjIHnhur91IHThu5EgcXXhu5FjIHThur8uDQoNCi0gICBN4buZdCDEkWnhu4NtIMSRw6FuZyBjaMO6IMO9IGzDoCBz4buxIHBow6JuIGLhu5EgY8OhYyDEkWnhu4NtIGtow7RuZyBob8OgbiB0b8OgbiDEkeG7kWkgeOG7qW5nIHF1YW5oIHRy4bulYyB0cnVuZyB0w6JtLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGNo4buJIHJhIHLhurFuZyB0w6FjIMSR4buZbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIENhbmFkYSBsw6puIHRo4buLIHRyxrDhu51uZyBWaeG7h3QgTmFtIGtow7RuZyBwaOG6o2kgbMO6YyBuw6BvIGPFqW5nIMSR4buTbmcgbmjhuqV0LCB2w6AgY8OzIHRo4buDIHRoYXkgxJHhu5VpIHTDuXkgdGh14buZYyB2w6BvIGPDoWMgxJFp4buBdSBraeG7h24ga2luaCB04bq/IGPhu6UgdGjhu4MuIENo4bqjbmcgaOG6oW4sIHRyb25nIG3hu5l0IHPhu5EgZ2lhaSDEkW/huqFuLCBraGkgdGjhu4sgdHLGsOG7nW5nIENhbmFkYSB0xINuZyB0csaw4bufbmcgbeG6oW5oLCB0aOG7iyB0csaw4budbmcgVmnhu4d0IE5hbSBjw7MgdGjhu4Mga2jDtG5nIHBo4bqjbiDhu6luZyB0xrDGoW5nIOG7qW5nIHbhu5tpIGPDuW5nIG3hu5l0IG3hu6ljIMSR4buZIHTEg25nIHRyxrDhu59uZywgdsOgIG5nxrDhu6NjIGzhuqFpLg0KDQpgYGB7cn0NCmtkZTJkX3Bsb3QgPC0ga2RlMmQoQ0JbLDFdLCBDQlssMl0sIG4gPSA1NSkNCnBlcnNwKGtkZTJkX3Bsb3QsIHBoaSA9IDUwLCB0aGV0YSA9IGNvZWYoZml0KSwgbWFpbiA9ICIgxJDhu5MgdGjhu4sgbeG6rXQgxJHhu5kgY+G7p2EgY29wdWxhIFN0dWRlbnQtdCIpDQoNCmBgYA0KDQpDw6FjIGtodSB24buxYyBj4bunYSBt4bq3dCDEkeG7kyB0aOG7iyBjw7MgxJHhu5kgY2FvIGzhu5tuIGNobyB0aOG6pXkgc+G7sSBwaOG7pSB0aHXhu5ljIG3huqFuaCBnaeG7r2EgYmnhur9uIMSR4buZbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIENhbmFkYSB2w6AgVmnhu4d0IE5hbS4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyBiw6FvIGhp4buHdSBy4bqxbmcga2hpIGPDsyBiaeG6v24gxJHhu5luZyBs4bubbiDhu58gbeG7mXQgdGjhu4sgdHLGsOG7nW5nLCB0aOG7iyB0csaw4budbmcga2lhIGPFqW5nIGPDsyBraOG6oyBuxINuZyBiaeG6v24gxJHhu5luZyBt4bqhbmggdGhlby5cDQpOaOG7r25nIGtodSB24buxYyBjw7MgxJHhu5kgY2FvIHRo4bqlcCB0csOqbiBt4bq3dCDEkeG7kyB0aOG7iyBjaG8gdGjhuqV5IHPhu7EgcGjhu6UgdGh14buZYyB54bq/dSBnaeG7r2EgaGFpIHRo4buLIHRyxrDhu51uZy4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyDEkcaw4bujYyB4ZW0gbmjGsCBjxqEgaOG7mWkgxJHhu4MgxJFhIGThuqFuZyBow7NhIGRhbmggbeG7pWMgxJHhuqd1IHTGsCwgZ2nhuqNtIHRoaeG7g3UgcuG7p2kgcm8ga2hpIG3hu5l0IHRo4buLIHRyxrDhu51uZyBn4bq3cCBiaeG6v24gxJHhu5luZyBt4bqhbmggbmjGsG5nIGtow7RuZyBrw6lvIHRoZW8gdGjhu4sgdHLGsOG7nW5nIGtpYS4NCg0KYGBge3J9DQpsaWJyYXJ5KGNvcHVsYSkNCnBlcnNwKHRDb3B1bGEocGFyYW0gPSBTdHUkcGFyKSwgZENvcHVsYSwgDQogICAgICBjb2wgPSAibGlnaHRibHVlIiwgYm9yZGVyID0gImJsYWNrIiwgbWFpbiA9ICIgxJDhu5MgdGjhu4sgbcO0IHBo4buPbmcgY+G7p2EgY29wdWxhIFN0dWRlbnQtdCIpDQpgYGANCg0KxJDhu5MgdGjhu4sgaGnhu4NuIHRo4buLIG3huq10IMSR4buZIHBow6JuIGLhu5EgeMOhYyBzdeG6pXQgbGnDqm4ga+G6v3QgZ2nhu69hIGhhaSBiaeG6v24sIHThuqFvIG7Dqm4gbeG7mXQgaMOsbmgg4bqjbmggxJFhIGNoaeG7gXUgduG7gSBt4buRaSBxdWFuIGjhu4cgcGjhu6ljIHThuqFwIGdp4buvYSBoYWkgVFRDSyBWaeG7h3QgTmFtIHbDoCBDYW5hZGEuIE3hu5dpIMSRaeG7g20gdHLDqm4gbeG6t3QgxJHhu5MgdGjhu4sgxJHhuqFpIGRp4buHbiBjaG8gbeG7mXQgY+G6t3AgZ2nDoSB0cuG7iyBj4bunYSBoYWkgYmnhur9uIHQgdsOgIHYsIGNobyB0aOG6pXkgeMOhYyBzdeG6pXQgeHXhuqV0IGhp4buHbiBj4bunYSBj4bq3cCBnacOhIHRy4buLIMSRw7MgZMaw4bubaSBz4buxIHBo4bulIHRodeG7mWMgY+G7p2EgbmhhdS5cDQpN4bq3YyBkw7kgbeG7qWMgxJHhu5kgcGjhu6UgdGh14buZYyBsw6AgMC4wOCBjaG8gdGjhuqV5IHPhu7EgdMawxqFuZyBxdWFuIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGtow7RuZyBxdcOhIGNhbywgbmjGsG5nIHbhuqtuIGPDsyBuaOG7r25nIGtodSB24buxYyB0cm9uZyDEkeG7kyB0aOG7iyBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIHTGsMahbmcgcXVhbiBjYW8gaMahbiBiw6xuaCB0aMaw4budbmcuxJDDonkgY8OzIHRo4buDIGzDoCB0aOG7nWkgxJFp4buDbSBtw6AgY8OhYyB54bq/dSB04buRIGtpbmggdOG6vywgY2jDrW5oIHRy4buLIGhv4bq3YyB4w6MgaOG7mWkgxJHhurdjIHRow7kg4bqjbmggaMaw4bufbmcgxJHhur9uIGPhuqMgaGFpIHRo4buLIHRyxrDhu51uZywgZOG6q24gxJHhur9uIG3hu6ljIMSR4buZIHTGsMahbmcgcXVhbiBjYW8gaMahbiBiw6xuaCB0aMaw4budbmcuXA0KTmjhu69uZyBraHUgduG7sWMgbeG6rXQgxJHhu5kgY2FvIGPFqW5nIGPDsyB0aOG7gyBjaOG7iSByYSBuaOG7r25nIGJp4bq/biDEkeG7mW5nIMSR4buZdCBuZ+G7mXQgdsOgIGLhuqV0IHRoxrDhu51uZyB0cm9uZyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcuIFZp4buHYyBuw6B5IGzDoCBo4bq/dCBz4bupYyBxdWFuIHRy4buNbmcgxJHhu5FpIHbhu5tpIGPDoWMgbmjDoCDEkeG6p3UgdMawIHbDoCBuaMOgIHF14bqjbiBsw70gcuG7p2kgcm8ga2hpIGPhuqduIHBo4bqjaSBuaOG6rW4gYmnhur90IHbDoCBwaOG6o24g4bupbmcga+G7i3AgdGjhu51pIHRyxrDhu5tjIG5o4buvbmcgYmnhur9uIMSR4buZbmcgbOG7m24uXA0KQ8OhYyBraHUgduG7sWMgY8OzIG3huq10IMSR4buZIGNhbyBoxqFuIGtow7RuZyBjaOG7iSBsw6AgZOG6pXUgaGnhu4d1IGPhu6dhIHLhu6dpIHJvIG3DoCBjw7JuIGzDoCBjxqEgaOG7mWkuIEtoaSBoYWkgdGjhu4sgdHLGsOG7nW5nIGPDsyBz4buxIHTGsMahbmcgcXVhbiBjYW8gdHJvbmcgbeG7mXQga2hv4bqjbmcgdGjhu51pIGdpYW4gbmjhuqV0IMSR4buLbmgsIMSRaeG7gXUgxJHDsyBjw7MgdGjhu4MgYsOhbyBoaeG7h3UgY8ahIGjhu5lpIMSR4bqndSB0xrAgc2luaCBs4budaSBjYW8gbuG6v3UgbmjDoCDEkeG6p3UgdMawIGPDsyB0aOG7gyBuaOG6rW4gZGnhu4duIHbDoCB04bqtbiBk4bulbmcgxJHGsOG7o2Mgc+G7sSBwaOG7pSB0aHXhu5ljIMSRw7MuIE5o4buvbmcga2h1IHbhu7FjIG7DoHkgY+G6p24gxJHGsOG7o2MgY2jDuiDDvSDEkeG6t2MgYmnhu4d0IHbDrCBjaMO6bmcgY8OzIHRo4buDIGLDoW8gaGnhu4d1IHLhu6dpIHJvIGhv4bq3YyBjxqEgaOG7mWkgxJHhuqd1IHTGsCBtw6AgY8OhYyBuaMOgIMSR4bqndSB0xrAgY+G6p24gbMawdSDDvS4NCg0KIyBDaMawxqFuZyBWOiBL4bq+VCBMVeG6rE4gVsOAIEdJ4bqiSSBQSMOBUA0KDQojIyA1LjEgS+G6v3QgbHXhuq1uDQoNCkLDoGkgdGnhu4N1IGx14bqtbiDEkcOjIG5naGnDqm4gY+G7qXUgxJHGsOG7o2MgbeG7qWMgYmnhur9uIMSR4buZbmcgY+G7p2EgVFRDSyBWaeG7h3QgTmFtIGtoaSBi4buLIHTDoWMgxJHhu5luZyBi4bufaSBUVENLIENhbmFkYSBk4buxYSB0csOqbiBoYWkgY2h14buXaSBs4bujaSBzdeG6pXQgbMOgIFZOSSBjaG8gVmnhu4d0IE5hbSB2w6AgUyZQL1RTWCBjaG8gQ2FuYWRhLiBUcm9uZyBnaWFpIMSRb+G6oW4gbsSDbSAyMDE4IMSR4bq/biB0aMOhbmcgNyBuxINtIDIwMjQsIGvhur90IHF14bqjIG5naGnDqm4gY+G7qXUgY2hvIHRo4bqleSBtw7QgaMOsbmggQ29wdWxhIHBow7kgaOG7o3AgbMOgIHQgduG7m2kgaOG7hyBz4buRIEtlbmRhbGwgbMOgIDAuMDUgY2hvIHRo4bqleSBz4buxIHBo4bulIHRodeG7mWMga2jDtG5nIMSRw6FuZyBr4buDIGPDsyBuZ2jEqWEgbMOgIGtoaSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gQ2FuYWRhIGJp4bq/biDEkeG7mW5nLCDhuqNuaCBoxrDhu59uZyBj4bunYSBuw7MgxJHhur9uIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIGzDoCBraMO0bmcgxJHDoW5nIGvhu4MuIFbhu5tpIGdpw6EgdHLhu4sgxJF1w7RpIHRyw6puIGLhurFuZyDEkXXDtGkgZMaw4bubaSBsw6AgMC4wMSBjaG8gdGjhuqV5IHLhurFuZyBraMO0bmcgY2jhu4kgY8OzIHPhu7EgdMawxqFuZyBxdWFuIHnhur91IGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIHRyb25nIGPDoWMgxJFp4buBdSBraeG7h24gYsOsbmggdGjGsOG7nW5nLCBtw6AgbmdheSBj4bqjIHRyb25nIGPDoWMgdHLGsOG7nW5nIGjhu6NwIGPhu7FjIMSRb2FuLCBraOG6oyBuxINuZyBoYWkgdGjhu4sgdHLGsOG7nW5nIGPDuW5nIHRy4bqjaSBxdWEgYmnhur9uIMSR4buZbmcgbeG6oW5oIChkw7kgbMOgIHTEg25nIGhheSBnaeG6o20pIGPFqW5nIHLhuqV0IHRo4bqlcC5cDQrEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGdp4bqjaSB0aMOtY2ggYuG7n2k6DQoNCi0gICBT4buxIGtow6FjIGJp4buHdCB24buBIG3hurd0IGtpbmggdOG6vzogQ2FuYWRhIGzDoCBt4buZdCBxdeG7kWMgZ2lhIHBow6F0IHRyaeG7g24gduG7m2kgbuG7gW4ga2luaCB04bq/IOG7lW4gxJHhu4tuaCB2w6AgxJFhIGThuqFuZywgdHJvbmcga2hpIFZp4buHdCBOYW0gbMOgIG3hu5l0IHF14buRYyBnaWEgxJFhbmcgcGjDoXQgdHJp4buDbiB24bubaSBu4buBbiBraW5oIHThur8gY2jhu6cgeeG6v3UgZOG7sWEgdsOgbyBuw7RuZyBuZ2hp4buHcCwgc+G6o24geHXhuqV0IGPDtG5nIG5naGnhu4dwIG5o4bq5LCB2w6AgeHXhuqV0IGto4bqpdS4gU+G7sSBraMOhYyBiaeG7h3QgbOG7m24gduG7gSBjxqEgY+G6pXUga2luaCB04bq/IG7DoHkga2hp4bq/biBjaG8gY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyBsw6puIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBj4bunYSBoYWkgcXXhu5FjIGdpYSBsw6Aga2jDoWMgbmhhdS4gQ8OhYyBz4buxIGtp4buHbiBraW5oIHThur8gdOG6oWkgQ2FuYWRhLCBjaOG6s25nIGjhuqFuIG5oxrAgYmnhur9uIMSR4buZbmcgduG7gSBnacOhIGThuqd1IG3hu48gKENhbmFkYSBsw6Agbsaw4bubYyB4deG6pXQga2jhuql1IGThuqd1IG3hu48gbOG7m24pIGhheSB0aGF5IMSR4buVaSBjaMOtbmggc8OhY2ggdGnhu4FuIHThu4csIGPDsyB0aOG7gyBraMO0bmcg4bqjbmggaMaw4bufbmcgbeG6oW5oIMSR4bq/biB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSwgbsahaSBtw6AgY8OhYyB54bq/dSB04buRIG7hu5lpIHThuqFpIG5oxrAgY2jDrW5oIHPDoWNoIG7hu5lpIMSR4buLYSB2w6Agbmh1IGPhuqd1IHRpw6p1IGTDuW5nIHRyb25nIG7GsOG7m2MgY8OzIHRo4buDIMSRw7NuZyB2YWkgdHLDsiBxdWFuIHRy4buNbmcgaMahbi4NCg0KLSAgIFPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgbeG7qWMgxJHhu5kgcGjDoXQgdHJp4buDbiB0aOG7iyB0csaw4budbmc6IFRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBDYW5hZGEgxJHDoyBwaMOhdCB0cmnhu4NuIHbDoCBo4buZaSBuaOG6rXAgdsOgbyBo4buHIHRo4buRbmcgdMOgaSBjaMOtbmggdG/DoG4gY+G6p3UsIHbhu5tpIHPhu7EgdGhhbSBnaWEgY+G7p2Egbmhp4buBdSBuaMOgIMSR4bqndSB0xrAgcXXhu5FjIHThur8uIE5nxrDhu6NjIGzhuqFpLCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSB24bqrbiBjw7JuIMSRYW5nIHRyb25nIHF1w6EgdHLDrG5oIHBow6F0IHRyaeG7g24gdsOgIGPDsyB0w61uaCBu4buZaSDEkeG7i2EgaMOzYSBjYW8gaMahbi5cDQogICAgTWF5IG3huq9uIHRoYXksIGPDoWMgbmjDoCBxdeG6o24gbMO9IHLhu6dpIHJvIGPDsyB0aOG7gyDDrXQgbG8gbOG6r25nIHbhu4Ega2jhuqMgbsSDbmcgY8OhYyBz4buxIGtp4buHbiB0w6BpIGNow61uaCBi4bqldCB0aMaw4budbmcgdOG6oWkgQ2FuYWRhIHPhur0ga8OpbyB0aGVvIGPDoWMgc+G7sSBraeG7h24gdMawxqFuZyB04buxIHThuqFpIFZp4buHdCBOYW0uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgdOG6oW8gcmEgY8ahIGjhu5lpIMSR4buDIG5ow6AgxJHhuqd1IHTGsCB0xINuZyBjxrDhu51uZyDEkWEgZOG6oW5nIGjDs2EgZGFuaCBt4bulYyDEkeG6p3UgdMawIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIG7DoHkgbcOgIGtow7RuZyBwaOG6o2kgbG8gbmfhuqFpIG5oaeG7gXUgduG7gSBz4buxIHBo4bulIHRodeG7mWMgxJF1w7RpLlwNCiAgICBN4bq3YyBkw7kgc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGzDoCB54bq/dSwgxJFp4buBdSBuw6B5IGtow7RuZyBjw7MgbmdoxKlhIGzDoCBraMO0bmcgY8OzIHLhu6dpIHJvLiBC4bqxbmcgY2jhu6luZyBj4bulIHRo4buDIGzDoCB0cm9uZyBjw6FjIGdpYWkgxJFv4bqhbiBraOG7p25nIGhv4bqjbmcgdMOgaSBjaMOtbmggdG/DoG4gY+G6p3UsIG5oxrAgY3Xhu5ljIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaCBuxINtIDIwMDgsIGPDoWMgdGjhu4sgdHLGsOG7nW5nIHTDoGkgY2jDrW5oIGPDsyB0aOG7gyB0cuG7nyBuw6puIGxpw6puIGvhur90IGNo4bq3dCBjaOG6vSBoxqFuIGRvIHTDoWMgxJHhu5luZyBsYW4gdOG7j2EuIFPhu7EgZ2lhIHTEg25nIMSR4buTbmcgdGjhu51pIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBy4bunaSBybyB0csOqbiB0b8OgbiBj4bqndSBjw7MgdGjhu4MgbMOgbSB0xINuZyBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIG3DoCB0cm9uZyDEkWnhu4F1IGtp4buHbiBiw6xuaCB0aMaw4budbmcga2jDtG5nIGPDsyBz4buxIGxpw6puIHF1YW4gY2jhurd0IGNo4bq9Lg0KDQojIyA1LjIgR2nhuqNpIHBow6FwDQoNClZp4buHYyB0xINuZyBjxrDhu51uZyBo4bujcCB0w6FjIGtpbmggdOG6vywgdGjGsMahbmcgbeG6oWksIHbDoCDEkeG6p3UgdMawIGdp4buvYSBWaeG7h3QgTmFtIHbDoCBDYW5hZGEgc+G6vSB04bqhbyByYSBuaGnhu4F1IGPGoSBo4buZaSBt4bubaSBjaG8gY+G6oyBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLiBDw6FjIGNow61uaCBzw6FjaCBo4buXIHRy4bujIMSR4bqndSB0xrAgc29uZyBwaMawxqFuZyB2w6AgY8OhYyBoaeG7h3AgxJHhu4tuaCB0aMawxqFuZyBt4bqhaSB04buxIGRvIGPDsyB0aOG7gyBnacO6cCB0xINuZyBjxrDhu51uZyBsdeG7k25nIHbhu5FuIMSR4bqndSB0xrAgZ2nhu69hIGhhaSBxdeG7kWMgZ2lhLCBsw6BtIHTEg25nIHPhu7EgdMawxqFuZyB0w6FjIGdp4buvYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCBj4bunYSBoYWkgbsaw4bubYy4gS2hpIGTDsm5nIHbhu5FuIMSR4bqndSB0xrAgdMSDbmcgbMOqbiwgc+G7sSBsacOqbiBr4bq/dCBnaeG7r2EgaGFpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBjxaluZyBjw7MgdGjhu4MgdMSDbmcsIHThu6sgxJHDsyB0aGF5IMSR4buVaSBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjaMO6bmcuXA0KxJDhu4MgdMSDbmcgY8aw4budbmcgc+G7sSBo4bqlcCBk4bqrbiBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSDEkeG7kWkgduG7m2kgY8OhYyBuaMOgIMSR4bqndSB0xrAgcXXhu5FjIHThur8sIGPhuqduIGPhuqNpIHRoaeG7h24gdMOtbmggbWluaCBi4bqhY2ggdsOgIGhp4buHdSBxdeG6oyBj4bunYSB0aOG7iyB0csaw4budbmcuIMSQaeG7gXUgbsOgeSBiYW8gZ+G7k20gdmnhu4djIGhvw6BuIHRoaeG7h24ga2h1bmcgcGjDoXAgbMO9LCB0xINuZyBjxrDhu51uZyBnacOhbSBzw6F0IHbDoCBraeG7g20gc2/DoXQsIHbDoCDEkeG6o20gYuG6o28gdMOtbmggY2jDrW5oIHjDoWMgdsOgIGvhu4twIHRo4budaSBj4bunYSB0aMO0bmcgdGluIHTDoGkgY2jDrW5oLiBWaeG7h2MgdOG6oW8gcmEgbeG7mXQgbcO0aSB0csaw4budbmcgxJHhuqd1IHTGsCBtaW5oIGLhuqFjaCB2w6AgY8O0bmcgYuG6sW5nIHPhur0gZ2nDunAgdGh1IGjDunQgdGjDqm0gbmd14buTbiB24buRbiB04burIG7GsOG7m2Mgbmdvw6BpLCDEkeG7k25nIHRo4budaSB0xINuZyBjxrDhu51uZyBt4buRaSBsacOqbiBr4bq/dCB24bubaSBjw6FjIHRo4buLIHRyxrDhu51uZyBxdeG7kWMgdOG6vyBraMOhYy5cDQpUcm9uZyBi4buRaSBj4bqjbmggdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHRoxrDhu51uZyB4dXnDqm4gYmnhur9uIMSR4buZbmcsIGPDoWMgbmjDoCDEkeG6p3UgdMawIG7Dqm4gdOG6rXAgdHJ1bmcgdsOgbyBjw6FjIGNoaeG6v24gbMaw4bujYyDEkeG6p3UgdMawIGTDoGkgaOG6oW4uIFPhu7EgcGjDom4gdMOtY2ggYuG6sW5nIHBoxrDGoW5nIHBow6FwIENvcHVsYSBjaG8gdGjhuqV5IHLhurFuZyBjw6FjIHnhur91IHThu5EgdsSpIG3DtCBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgdHJvbmcgZMOgaSBo4bqhbiwgZG8gxJHDsywgdmnhu4djIG5o4bqtbiBkaeG7h24gc+G7m20gY8OhYyB4dSBoxrDhu5tuZyBkw6BpIGjhuqFuIHPhur0gZ2nDunAgdOG7kWkgxrB1IGjDs2EgbOG7o2kgbmh14bqtbiB2w6AgZ2nhuqNtIHRoaeG7g3UgcuG7p2kgcm8uIEPDoWMgY2hp4bq/biBsxrDhu6NjIMSR4bqndSB0xrAgZMOgaSBo4bqhbiBraMO0bmcgY2jhu4kgZ2nDunAgYuG6o28gduG7hyBkYW5oIG3hu6VjIMSR4bqndSB0xrAgdHLGsOG7m2MgY8OhYyBiaeG6v24gxJHhu5luZyBuZ+G6r24gaOG6oW4gbcOgIGPDsm4gdOG6oW8gY8ahIGjhu5lpIHThuq1uIGThu6VuZyBjw6FjIHh1IGjGsOG7m25nIHBow6F0IHRyaeG7g24gYuG7gW4gduG7r25nIHRyb25nIG7hu4FuIGtpbmggdOG6vyB2w6AgdGjhu4sgdHLGsOG7nW5nIHTDoGkgY2jDrW5oLlwNClBoxrDGoW5nIHBow6FwIENvcHVsYSwgxJHhurdjIGJp4buHdCBsw6AgQ29wdWxhIFN0dWRlbnQtdCwgbMOgIG3hu5l0IGPDtG5nIGPhu6UgbeG6oW5oIG3hur0gdHJvbmcgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyB0w6BpIGNow61uaC4gVmnhu4djIHRp4bq/cCB04bulYyBuZ2hpw6puIGPhu6l1IHbDoCDhu6luZyBk4bulbmcgcGjGsMahbmcgcGjDoXAgbsOgeSBz4bq9IGdpw7pwIGPhuqNpIHRoaeG7h24ga2jhuqMgbsSDbmcgZOG7sSBiw6FvIHbDoCBxdeG6o24gbMO9IHLhu6dpIHJvLiBDw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIHbDoCBo4buNYyB2aeG7h24gbmdoacOqbiBj4bupdSBj4bqnbiDEkeG6p3UgdMawIHbDoG8gdmnhu4djIHBow6F0IHRyaeG7g24gY8OhYyBtw7QgaMOsbmggQ29wdWxhIHBo4bupYyB04bqhcCBoxqFuIG5oxrAgQXJjaGltYXggY29wdWxhLCBjw7Mga2jhuqMgbsSDbmcgbcO0IHThuqMgdOG7kXQgaMahbiBt4buRaSBxdWFuIGjhu4cgcGhpIHR1eeG6v24gdMOtbmggdsOgIHPhu7EgcGjhu6UgdGh14buZYyDEkXXDtGkgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nLiDEkGnhu4F1IG7DoHkga2jDtG5nIGNo4buJIGdpw7pwIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgcGjDom4gdMOtY2ggbcOgIGPDsm4gdOG6oW8gcmEgY8OhYyBjw7RuZyBj4bulIG3hu5tpIGNobyBxdeG6o24gbMO9IHLhu6dpIHJvIHbDoCDEkeG6p3UgdMawLg0KDQojIFTDgEkgTEnhu4ZVIFRIQU0gS0jhuqJPDQoNCjEuICBMZSBWYW4gVGh1LCAiUEjhuqJOIOG7qE5HIEPhu6ZBIFRI4buKIFRSxq/hu5xORyBDSOG7qE5HIEtIT8OBTiBWSeG7hlQgTkFNIMSQ4buQSSBW4buaSSBCSeG6vk4gxJDhu5hORyBD4bumQSBUSOG7iiBUUsav4bucTkcgQ0jhu6hORyBLSE/DgU4gUVXhu5BDIFThur4iKDIwMjIpLlwNCjIuICBUcuG6p24gVGhhbmggVMOibSwgIlPhu6wgROG7pE5HIE3DlCBIw4xOSCBDT1BVTEEgxJDhu4IgWEVNIFjDiVQgVkFJIFRSw5IgQ+G7pkEgVsOATkcgTMOAIEvDik5IIFRSw5og4bqoTiBBTiBUT8OATiBIQVkgQ8OUTkcgQ+G7pCBQSMOSTkcgTkfhu6pBIFLhu6ZJIFJPIMSQ4buQSSBW4buaSSDEkOG7kk5HIMSQw5QgTEEgTeG7uCIoMjAxNCkuXA0KMy4gIFBoYW4gVGjhu4sgSOG6sW5nIE5nYSwgIk5HSEnDik4gQ+G7qFUgU+G7sCBQSOG7pCBUSFXhu5hDIEzhu6JJIE5IVeG6rE4gQ+G7pkEgVEnhu4BOIEvhu7ggVEhV4bqsVCBT4buQOiBUSeG6vlAgQ+G6rE4gUEjGr8agTkcgUEjDgVAgQ09QVUxBIEPDkyDEkEnhu4BVIEtJ4buGTiIoMjAyNCkuXA0KNC4gIEVtYnJlY2h0cywgUC4sIExpbmRza29nLCBGLiwgJiBNY05laWwsIEEuIEouLCJNT0RFTElORyBERVBFTkRFTkNFIFdJVEggQ09QVUxBUyBBTkQgQVBQTElDQVRJT05TIFRPIFJJU0sgTUFOQUdFTUVOVCIoMjAwMykuXA0KNS4gIEpvc2h1YSBHcm9iZXIsIE9zdGFwIE9raHJpbiwgIkNPUFVMQUU6IEFOIE9WRVJWSUVXIEFORCBSRUNFTlQgREVWRUxPUE1FTlRTIigyMDIxKS5cDQo2LiAgWGlhb2xpbiBMdW8sUGF2ZWwgVi4gU2hldmNoZW5rbyAiVEhFIFQgQ09QVUxBIFdJVEggTVVMVElQTEUgUEFSQU1FVEVSUyBPRiBERUdSRUVTIE9GIEZSRUVET006IEJJVkFSSUFURSBDSEFSQUNURVJJU1RJQ1MgQU5EIEFQUExJQ0FUSU9OIFRPIFJJU0sgTUFOQUdFTUVOVCIgKDIwMDkpLlwNCjcuICBVbWJlcnRvIENoZXJ1YmluaSxFbGlzYSBMdWNpYW5vICIgVkFMVUUtQVQtUklTSyBUUkFERS1PRkYgQU5EIENBUElUQUwgQUxMT0NBVElPTiBXSVRIIENPUFVMQVMiLCBFY29ub21pYyBOb3Rlcywgdm9sdW1lIDMwLCBpc3N1ZSAyLlwNCjguICBNYXJpdXMgR2FsYWJlIFNhbXBpZCwgSGFzbGlmYWggTS4gSGFzaW0gIkVTVElNQVRJTkcgVkFMVUUtQVQtUklTSyBVU0lORyBBIE1VTFRJVkFSSUFURSBDT1BVTEEtQkFTRUQgVk9MQVRJTElUWSBNT0RFTDogRVZJREVOQ0UgRlJPTSBFVVJPUEVBTiBCQU5LUyIoMjAxOCkuDQo=