Essential of Probability

Tugas Week 10

1 Pendahuluan

Bab Esensi Probabilitas ini bertujuan memberikan landasan matematis untuk menganalisis ketidakpastian, dimulai dengan mendefinisikan Konsep Fundamental probabilitas Tujuannya adalah agar pembaca mampu membedakan dan menghitung probabilitas untuk peristiwa Independen dan Dependen, menerapkan Aturan Penjumlahan untuk Union of Events, serta mengklasifikasikan peristiwa sebagai Exclusive and Exhaustive. Selain itu, bab ini secara spesifik bertujuan untuk melatih pembaca mengidentifikasi karakteristik Eksperimen Binomial dan menggunakan Distribusi Binomial untuk menghitung probabilitas dalam skenario percobaan berulang, sehingga membekali mereka dengan alat penting untuk pemodelan statistik.


2 Konsep Dasar Probabilitas

Probabilitas didefinisikan sebagai peluang terjadinya suatu kejadian, dihitung dengan membagi jumlah hasil yang diinginkan dengan jumlah total kemungkinan hasil. Misalnya, peluang mendapatkan kepala saat melempar koin adalah 1/2 atau 0.5. Untuk kejadian berulang atau majemuk, seperti mendapatkan dua kepala dalam dua lemparan, probabilitasnya dikalikan (0.5×0.5=0.25), karena ini adalah kejadian independen.

Konsep kunci lainnya adalah Ruang Sampel, yaitu seluruh himpunan hasil yang mungkin. Untuk dua lemparan koin, ruang sampelnya adalah empat hasil: HH, HT, TH, dan TT, yang masing-masing memiliki probabilitas 0.25. Dengan menjumlahkan probabilitas hasil yang relevan, kita dapat menghitung probabilitas kejadian yang lebih kompleks, seperti mendapatkan setidaknya satu ekor, yang dihitung sebagai P(HT)+P(TH)+P(TT)=0.75. Video ini juga menekankan dua kondisi wajib probabilitas: nilai probabilitas suatu peristiwa harus selalu antara 0 dan 1, dan jumlah total probabilitas semua hasil dalam ruang sampel harus selalu berjumlah 1.

Berdasarkan kondisi-kondisi tersebut, diturunkan Aturan Komplemen. Aturan ini menyatakan bahwa probabilitas suatu peristiwa tidak terjadi (P(Ac)) sama dengan 1 dikurangi probabilitas peristiwa tersebut terjadi (P(A)). Aturan ini menyediakan cara alternatif untuk menyelesaikan masalah. Misalnya, probabilitas tidak mendapatkan dua kepala dapat dihitung dengan Aturan Komplemen: 1−P(HH)=1−0.25=0.75, yang memberikan hasil yang sama dengan menjumlahkan probabilitas hasil lainnya.

2.1 Referensi Tambahan

Konsep probabilitas dasar sering diinterpretasikan dalam dua aliran utama yaitu:

A. Aliran Frekuentis (Frequentist).Penulis Ronald Fisher (buku teks statistik klasik) Probabilitas didefinisikan sebagai limit frekuensi relatif suatu kejadian dalam jangka panjang (long run). Ini adalah interpretasi yang digunakan dalam sebagian besar statistika inferensial (uji hipotesis).

B. Bayesian (Subjektif) Penulis Thomas Bayes (via Pierre-Simon Laplace); Applied Bayesian Modeling. Probabilitas adalah tingkat kepercayaan pribadi (derajat kepercayaan) terhadap suatu proposisi. Probabilitas awal (prior) diperbarui (posterior) ketika ada data baru.


3 Independen dan Dependen

Inti dari video ini adalah tentang peluang atau Probabilitas—seberapa besar kemungkinan sesuatu akan terjadi. Peluang dihitung dengan membagi jumlah hasil yang kita inginkan dengan total semua hasil yang mungkin. Contoh sederhananya, peluang mendapat kepala saat melempar koin adalah 1 dari 2 (0.5). Jika ada beberapa kejadian yang tidak saling mempengaruhi (independen), seperti melempar koin dua kali, kita bisa mengalikan peluangnya: 0.5×0.5=0.25 untuk mendapat dua kepala.

Ruang Sampei yaitu daftar lengkap semua hasil yang mungkin. Ketika melempar dua koin, ada empat hasil yang mungkin: Kepala-Kepala (HH), Kepala-Ekor (HT), Ekor-Kepala (TH), dan Ekor-Ekor (TT), di mana masing-masing punya peluang 0.25. Jika kita ingin tahu peluang hasil yang lebih luas (misalnya, mendapat setidaknya satu ekor), kita cukup menjumlahkan peluang dari hasil-hasil yang relevan (0.25+0.25+0.25=0.75). Dua aturan dasar yang harus selalu dipenuhi adalah: peluang suatu kejadian harus selalu berada di antara 0 (pasti tidak terjadi) dan 1 (pasti terjadi), dan jika kita menjumlahkan peluang semua hasil yang mungkin, totalnya harus 1.

Aturan Komplemen. Aturan ini menyatakan bahwa peluang suatu kejadian tidak terjadi adalah sama dengan 1 dikurangi peluang kejadian itu terjadi. Jadi, daripada menghitung semua kemungkinan hasil yang bukan dua kepala, kita bisa menggunakan 1−P(dua kepala). Karena peluang mendapat dua kepala adalah 0.25, maka peluang tidak mendapat dua kepala adalah 1−0.25=0.75.

3.1 Referensi tambahan

  1. Independent Events (Kejadian Independen Bebas) Independensi adalah asumsi yang sangat kuat dan sering digunakan untuk menyederhanakan fungsi likelihood atau probabilitas bersama (joint probability) dari data yang kompleks.

Definisi Kunci (Conditional Probability): Dua kejadian A dan B independen jika probabilitas terjadinya A tidak dipengaruhi oleh terjadinya B, dan sebaliknya. P(A∣B)=P(A)

Aturan Perkalian untuk Independen: Jika A dan B independen, probabilitas irisan (intersection) mereka adalah hasil kali probabilitas marginal: P(A∩B)=P(A)P(B)

  1. Relevansi Utama dalam ESL: Data & Error: Dalam banyak model, seperti Regresi Linier, sering diasumsikan bahwa observasi data atau error residual adalah independen dan terdistribusi identik (i.i.d.). Asumsi ini penting untuk menyederhanakan dan membenarkan penggunaan fungsi likelihood yang merupakan perkalian probabilitas.

    Model Naive Bayes: Model klasifikasi ini didasarkan pada asumsi kuat (dan terkadang tidak realistis) bahwa semua fitur (variabel prediktor) independen bersyarat (Xj​ independen dari Xk​ bersyarat pada kelas Y).

  2. Dependent Events (Kejadian Dependen/Bergantung)

Kejadian A dan B adalah dependen (atau tidak independen) ketika informasi tentang satu kejadian mengubah probabilitas kejadian yang lain.

Definisi Kunci: Pengetahuan tentang terjadinya B mengubah probabilitas terjadinya A. P(A∣B)=P(A)

Aturan Perkalian Umum (Menggunakan Probabilitas Bersyarat): Untuk kejadian dependen, probabilitas irisan harus menggunakan probabilitas bersyarat: P(A∩B)=P(A∣B)P(B)

  1. Relevansi Utama dalam ESL:Korelasi & Multikolinearitas: Dependensi muncul secara alami sebagai korelasi antar variabel prediktor. Pemodelan yang mengabaikan dependensi ini dapat menyebabkan masalah, seperti multikolinearitas dalam regresi.

Model Interaksi: Dalam model regresi, ketika efek satu fitur bergantung pada fitur lain, kita secara eksplisit memodelkan dependensi (interaction term).

Model Lanjutan: Model yang menangani data berurutan (misalnya, time series) seperti Hidden Markov Models atau Recurrent Neural Networks secara eksplisit dirancang untuk memodelkan dan memanfaatkan dependensi antara observasi yang berdekatan.

  1. Hubungan Kunci : Konsep dependensi adalah fondasi dari Probabilitas Bersyarat (P(A∣B)), yang kemudian menjadi inti dari Teorema Bayes. Teorema Bayes, pada gilirannya, adalah dasar matematis untuk banyak algoritma kunci dalam Statistical Learning, termasuk Maximum A Posteriori (MAP) estimation dan Bayesian Networks.

4 Probabilitas Gabungan Kejadian

Video ini menjelaskan tentang Probabilitas Gabungan Kejadian (dikenal dengan kata kunci “atau”), yaitu peluang terjadinya salah satu dari dua peristiwa atau keduanya. Sebagai dasar, video ini meninjau kembali Ruang Sampel (seluruh hasil yang mungkin, misalnya 36 hasil dari melempar dua dadu) dan Probabilitas Sederhana. Konsep penting yang menjadi jembatan adalah Irisan Kejadian (dikenal dengan kata kunci “dan”), yang merupakan hasil-hasil yang dimiliki bersama atau tumpang tindih antara dua peristiwa.

Untuk menghitung probabilitas gabungan, rumusnya adalah: peluang kejadian A ditambah peluang kejadian B, lalu dikurangi peluang irisan (kejadian A dan B). Bagian pengurangan ini sangat krusial karena ia berfungsi untuk menghilangkan perhitungan ganda (duplikasi) dari hasil-hasil yang tumpang tindih. Tanpa pengurangan ini, kita akan menghitung hasil yang sama sebanyak dua kali. Misalnya, untuk mencari peluang mendapat dua angka genap atau setidaknya satu angka dua, kita menjumlahkan peluang masing-masing, kemudian mengurangi peluang tumpang tindihnya (9/36+11/36−5/36=15/36). Konsep ini dapat divisualisasikan dengan mudah menggunakan Diagram Venn.

4.1 Referensi tambahan

  1. Definisi Penting: Gabungan (union) dari semua kejadian sama dengan Ruang Sampel Ω. A1​∪A2​∪⋯∪An​=Ω Contoh: Dalam pelemparan dadu, kejadian mendapatkan angka ≤3 (A={1,2,3}) dan kejadian mendapatkan angka >3 (B={4,5,6}) adalah komprehensif, karena A∪B={1,2,3,4,5,6}=Ω. Aturan Probabilitas: Probabilitas gabungan dari semua kejadian komprehensif selalu 1: P(A1​∪A2​∪⋯∪An​)=P(Ω)=1

  2. Union of Events (Gabungan Kejadian)

Konsep gabungan kejadian (A∪B) adalah notasi fundamental dalam mendefinisikan ruang probabilitas, meskipun penggunaannya dalam derivasi model ESL biasanya implisit. Definisi: Gabungan dua kejadian A dan B adalah kejadian di mana setidaknya satu dari A atau B terjadi.

Aturan Penjumlahan Umum (General Addition Rule): Probabilitas untuk gabungan dua kejadian dihitung sebagai: P(A∪B)=P(A)+P(B)−P(A∩B)

Aplikasi ESL Implisit: Aturan ini secara mendasar terkait dengan probabilitas kesalahan total atau error rate secara keseluruhan, di mana kesalahan bisa disebabkan oleh kejadian di kategori A atau kategori B.


5 Kejadian saling Lepas dan Kejadian Komprehensif

Video ini membahas dua jenis hubungan antar kejadian dalam probabilitas. Pertama, Kejadian Saling Lepas (Mutually Exclusive) adalah peristiwa yang tidak mungkin terjadi bersamaan (tidak ada irisan, P(A dan B)=0). Untuk kejadian seperti ini, peluang gabungan (A atau B) hanyalah penjumlahan sederhana: P(A atau B)=P(A)+P(B). Kedua, Kejadian Komprehensif (Exhaustive) adalah sekumpulan peristiwa yang bersama-sama mencakup semua hasil yang mungkin dalam ruang sampel, sehingga jika peluang semua kejadian ini dijumlahkan, hasilnya pasti sama dengan 1. P(E1​)+P(E2​)+⋯+P(En​)=1

5.1 Referensi tambahan

Mutually Exclusive Events (Kejadian Saling Lepas) Kejadian A dan B disebut saling lepas jika kedua kejadian tersebut tidak dapat terjadi secara bersamaan dalam satu kali percobaan.

Definisi Penting: Irisan (intersection) dari kedua kejadian tersebut adalah himpunan kosong. A∩B=∅ Contoh: Dalam pelemparan dadu, mendapatkan angka genap (A={2,4,6}) dan mendapatkan angka ganjil (B={1,3,5}) adalah saling lepas karena mustahil mendapatkan keduanya sekaligus.

Aturan Penjumlahan (Addition Rule): Karena A dan B saling lepas, probabilitas gabungan mereka (union) adalah penjumlahan probabilitas masing-masing: P(A∪B)=P(A)+P(B)(Ini adalah kasus khusus dari Aturan Penjumlahan Umum P(A∪B)=P(A)+P(B)−P(A∩B), di mana P(A∩B)=0). Generalisasi: Sebuah koleksi kejadian A1​,A2​,A3​,…,An​ disebut saling lepas berpasangan (pairwise mutually exclusive) jika setiap pasang kejadian di dalamnya adalah saling lepas.

Exhaustive Events (Kejadian Komprehensif/Mencakup)

Sebuah koleksi kejadian A1​,A2​,A3​,…,An​ disebut kejadian komprehensif atau mencakup jika gabungan dari semua kejadian tersebut mencakup seluruh Ruang Sampel (Ω). Dengan kata lain, setidaknya satu dari kejadian tersebut harus terjadi.

Saling Lepas dan Komprehensif Partisi Ruang Sampel: Ketika sebuah koleksi kejadian (misalnya A dan Ac) memenuhi kedua kondisi ini, mereka dikatakan mempartisi Ruang Sampel. 1. A dan Ac (komplemen dari A) selalu saling lepas (A∩Ac=∅).

  1. A dan Ac selalu komprehensif (A∪Ac=Ω).

Hukum Probabilitas Total (Law of Total Probability): Digunakan untuk menghitung probabilitas suatu kejadian dengan membaginya ke dalam kasus-kasus saling lepas dan komprehensif. Teorema Bayes: Rumus fundamental dalam inferensi probabilitas, yang pengaplikasiannya sangat bergantung pada pembagian ruang sampel menjadi kejadian-kejadian yang saling lepas dan komprehensif


6 Eksperimen Binomial dan Rumus Binomial

Video ini menjelaskan tentang Eksperimen Binomial dan Rumus Binomial, yang merupakan cara untuk menghitung probabilitas mendapatkan jumlah keberhasilan (k sukses) tertentu dalam serangkaian percobaan (n) yang diulang. Suatu eksperimen dianggap binomial jika memenuhi empat syarat ketat: jumlah percobaan (n) harus tetap, hanya ada dua hasil yang mungkin (sukses atau gagal), probabilitas sukses (p) harus konstan di setiap percobaan, dan setiap percobaan harus independen satu sama lain. Untuk menghitung peluang mendapatkan tepat k sukses, kita bisa menggunakan Rumus Binomial sebagai jalan pintas untuk menggantikan penghitungan manual semua urutan hasil yang mungkin.

Rumus Binomial untuk probabilitas mendapatkan tepat k sukses adalah: P(X=k)=(kn​)⋅pk⋅(1−p)n−k

Di mana (kn​) adalah kombinasi (n pilih k), yang menghitung jumlah total cara k sukses dapat terjadi dalam n percobaan.

6.1 Referensi tambahan

Ringkasan mengenai Eksperimen Binomial dan Distribusi Binomial berdasarkan buku Introduction to Probability oleh Charles M. Grinstead & J. Laurie Snell.

Eksperimen Binomial (Binomial Experiment) Dalam konteks buku ini, Eksperimen Binomial adalah suatu rangkaian percobaan yang harus memenuhi empat kondisi spesifik:

  1. Jumlah Percobaan Tetap (n): Eksperimen terdiri dari sejumlah percobaan independen yang dilakukan sebanyak n kali yang sudah ditetapkan sebelumnya.

  2. Dua Hasil yang Mungkin (Dichotomy): Setiap percobaan hanya memiliki dua hasil yang mungkin: Sukses (Success, S) atau Gagal (Failure, F).

  3. Probabilitas Sukses Konstan (p): Probabilitas untuk mendapatkan hasil Sukses (p) harus sama untuk setiap percobaan. Dengan demikian, probabilitas Gagal adalah q=1−p.

  4. Independensi: Hasil dari satu percobaan tidak memengaruhi hasil dari percobaan lainnya. Semua percobaan bersifat independen.

Variabel acak yang diminati dalam Eksperimen Binomial adalah jumlah total sukses (X) yang terjadi dalam n percobaan tersebut.


7 Distribusi Binomial

Video ini menginterpretasikan Distribusi Binomial sebagai model probabilitas yang sangat fleksibel, yang bentuknya secara langsung dikendalikan oleh parameter n dan p. Interpretasi n (Evolusi ke Normal): Interpretasi kunci dari peningkatan n adalah bahwa dengan semakin banyaknya percobaan, variasi dalam hasil menjadi lebih halus dan terdistribusi merata, yang secara matematis mengarah pada Distribusi Normal. Ini sangat penting karena dalam statistik, begitu sebuah distribusi dapat diasumsikan normal, kita dapat menggunakan berbagai teknik statistik yang lebih sederhana dan kuat (seperti Z-score) untuk perhitungan probabilitas.

Interpretasi p (Penceng): Nilai p tidak hanya menentukan peluang sukses, tetapi juga arah “kemiringan” hasil. Ketika p=0.5, keberhasilan dan kegagalan sama-sama mungkin, sehingga distribusi menjadi seimbang (simetris) di sekitar nilai rata-rata (μ). Ketika p jauh dari 0.5, distribusi menjadi menceng karena hasil yang paling mungkin adalah yang sangat ekstrem (sangat sedikit sukses jika p kecil, atau sangat banyak sukses jika p besar). Data selalu mengelompok di sekitar Rata-rata (μ=np) yang merupakan hasil yang paling diharapkan dalam percobaan. Interpretasi Rumus Parameter: Rumus μ=n×p memberikan nilai yang diharapkan (expected value) dari jumlah keberhasilan. Misalnya, jika Anda melempar koin 10 kali (n=10) dan probabilitas mendapatkan sisi gambar adalah 0.5 (p=0.5), rata-rata (ekspektasi) sukses adalah 10×0.5=5 kali. Rumus Varians dan Standar Deviasi mengukur seberapa jauh hasil yang diamati kemungkinan akan menyimpang dari nilai rata-rata yang diharapkan tersebut.

7.1 Referensi tambahan

Fungsi Massa Probabilitas (Probability Mass Function, PMF)

Probabilitas untuk mendapatkan tepat k kali sukses dalam n percobaan diberikan oleh fungsi massa probabilitas (PMF) Binomial: b(n,p,k)=P(X=k)=(kn​)pk(1−p)n−k Di mana:

1, P(X=k): Probabilitas mendapatkan tepat k sukses.

  1. (kn​)=k!(n−k)!n!​: Koefisien Binomial, yang menghitung jumlah cara berbeda untuk mendapatkan k sukses dalam n percobaan.

  2. pk: Probabilitas mendapatkan k sukses.

4’ (1−p)n−k: Probabilitas mendapatkan n−k gagal.

  1. Parameter Distribusi

Sebuah Distribusi Binomial sepenuhnya ditentukan oleh dua parameter, n (jumlah percobaan) dan p (probabilitas sukses). Distribusi ini sering dinotasikan sebagai B(n,p).

Nilai Harapan (Expected Value) atau Rata-rata (μ): E(X)=μ=np Interpretasi: Jika eksperimen diulang berkali-kali, rata-rata jumlah sukses yang diamati akan mendekati n×p.

  1. Varians (σ2): σ2=np(1−p)

Interpretasi: Varians mengukur seberapa tersebar (bervariasi) jumlah sukses yang mungkin terjadi di sekitar rata-rata.


8 Referensi

https://bookdown.org/dsciencelabs/intro_statistics/06-Essentials_of_Probability.html#Exclusive

Grinstead, C. M., & Snell, J. L. (2009). Introduction to Probability. American Mathematical Society (AMS).

Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: Data mining, inference, and prediction (2nd ed.). Springer.

LS0tDQp0aXRsZTogIkVzc2VudGlhbCBvZiBQcm9iYWJpbGl0eSINCnN1YnRpdGxlOiAiVHVnYXMgV2VlayAxMCINCmF1dGhvcjogIklnbmFzaXVzIFJhYmkgQmxvbG9uZyINCm5pbTogIjUyMjUwMDczIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJWQgJUIgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOg0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlICMgPC0tIEluZGVudGFzaSBEaWJlbmFya2FuDQogICAgdGh1bWJuYWlsczogdHJ1ZSAgICAgIyA8LS0gSW5kZW50YXNpIERpYmVuYXJrYW4NCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KLS0tDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkM6L1VzZXJzL0hQL1BpY3R1cmVzL0xjL2dhbWJhci9pZGhvci5qcGVnIikNCmBgYA0KDQojIyBQZW5kYWh1bHVhbg0KQmFiIEVzZW5zaSBQcm9iYWJpbGl0YXMgaW5pIGJlcnR1anVhbiBtZW1iZXJpa2FuIGxhbmRhc2FuIG1hdGVtYXRpcyB1bnR1ayBtZW5nYW5hbGlzaXMga2V0aWRha3Bhc3RpYW4sIGRpbXVsYWkgZGVuZ2FuIG1lbmRlZmluaXNpa2FuIEtvbnNlcCBGdW5kYW1lbnRhbCBwcm9iYWJpbGl0YXMgVHVqdWFubnlhIGFkYWxhaCBhZ2FyIHBlbWJhY2EgbWFtcHUgbWVtYmVkYWthbiBkYW4gbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgdW50dWsgcGVyaXN0aXdhIEluZGVwZW5kZW4gZGFuIERlcGVuZGVuLCBtZW5lcmFwa2FuIEF0dXJhbiBQZW5qdW1sYWhhbiB1bnR1ayBVbmlvbiBvZiBFdmVudHMsIHNlcnRhIG1lbmdrbGFzaWZpa2FzaWthbiBwZXJpc3Rpd2Egc2ViYWdhaSBFeGNsdXNpdmUgYW5kIEV4aGF1c3RpdmUuIFNlbGFpbiBpdHUsIGJhYiBpbmkgc2VjYXJhIHNwZXNpZmlrIGJlcnR1anVhbiB1bnR1ayBtZWxhdGloIHBlbWJhY2EgbWVuZ2lkZW50aWZpa2FzaSBrYXJha3RlcmlzdGlrIEVrc3BlcmltZW4gQmlub21pYWwgZGFuIG1lbmdndW5ha2FuIERpc3RyaWJ1c2kgQmlub21pYWwgdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgZGFsYW0gc2tlbmFyaW8gcGVyY29iYWFuIGJlcnVsYW5nLCBzZWhpbmdnYSBtZW1iZWthbGkgbWVyZWthIGRlbmdhbiBhbGF0IHBlbnRpbmcgdW50dWsgcGVtb2RlbGFuIHN0YXRpc3Rpay4NCg0KLS0tDQoNCiMjIEtvbnNlcCBEYXNhciBQcm9iYWJpbGl0YXMNCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC95bmpIS0JDaUdYWSIgd2lkdGg9Ijc1MHB4IiBoZWlnaHQ9IjQwMHB4IiB3aWR0aD0iNzUwcHgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCg0KDQoNClByb2JhYmlsaXRhcyBkaWRlZmluaXNpa2FuIHNlYmFnYWkgcGVsdWFuZyB0ZXJqYWRpbnlhIHN1YXR1IGtlamFkaWFuLCBkaWhpdHVuZyBkZW5nYW4gbWVtYmFnaSBqdW1sYWggaGFzaWwgeWFuZyBkaWluZ2lua2FuIGRlbmdhbiBqdW1sYWggdG90YWwga2VtdW5na2luYW4gaGFzaWwuIE1pc2FsbnlhLCBwZWx1YW5nIG1lbmRhcGF0a2FuIGtlcGFsYSBzYWF0IG1lbGVtcGFyIGtvaW4gYWRhbGFoIDEvMiBhdGF1IDAuNS4gVW50dWsga2VqYWRpYW4gYmVydWxhbmcgYXRhdSBtYWplbXVrLCBzZXBlcnRpIG1lbmRhcGF0a2FuIGR1YSBrZXBhbGEgZGFsYW0gZHVhIGxlbXBhcmFuLCBwcm9iYWJpbGl0YXNueWEgZGlrYWxpa2FuICgwLjXDlzAuNT0wLjI1KSwga2FyZW5hIGluaSBhZGFsYWgga2VqYWRpYW4gaW5kZXBlbmRlbi4NCg0KS29uc2VwIGt1bmNpIGxhaW5ueWEgYWRhbGFoIFJ1YW5nIFNhbXBlbCwgeWFpdHUgc2VsdXJ1aCBoaW1wdW5hbiBoYXNpbCB5YW5nIG11bmdraW4uIFVudHVrIGR1YSBsZW1wYXJhbiBrb2luLCBydWFuZyBzYW1wZWxueWEgYWRhbGFoIGVtcGF0IGhhc2lsOiBISCwgSFQsIFRILCBkYW4gVFQsIHlhbmcgbWFzaW5nLW1hc2luZyBtZW1pbGlraSBwcm9iYWJpbGl0YXMgMC4yNS4gRGVuZ2FuIG1lbmp1bWxhaGthbiBwcm9iYWJpbGl0YXMgaGFzaWwgeWFuZyByZWxldmFuLCBraXRhIGRhcGF0IG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGtlamFkaWFuIHlhbmcgbGViaWgga29tcGxla3MsIHNlcGVydGkgbWVuZGFwYXRrYW4gc2V0aWRha255YSBzYXR1IGVrb3IsIHlhbmcgZGloaXR1bmcgc2ViYWdhaSBQKEhUKStQKFRIKStQKFRUKT0wLjc1LiBWaWRlbyBpbmkganVnYSBtZW5la2Fua2FuIGR1YSBrb25kaXNpIHdhamliIHByb2JhYmlsaXRhczogbmlsYWkgcHJvYmFiaWxpdGFzIHN1YXR1IHBlcmlzdGl3YSBoYXJ1cyBzZWxhbHUgYW50YXJhIDAgZGFuIDEsIGRhbiBqdW1sYWggdG90YWwgcHJvYmFiaWxpdGFzIHNlbXVhIGhhc2lsIGRhbGFtIHJ1YW5nIHNhbXBlbCBoYXJ1cyBzZWxhbHUgYmVyanVtbGFoIDEuDQoNCkJlcmRhc2Fya2FuIGtvbmRpc2kta29uZGlzaSB0ZXJzZWJ1dCwgZGl0dXJ1bmthbiBBdHVyYW4gS29tcGxlbWVuLiBBdHVyYW4gaW5pIG1lbnlhdGFrYW4gYmFod2EgcHJvYmFiaWxpdGFzIHN1YXR1IHBlcmlzdGl3YSB0aWRhayB0ZXJqYWRpIChQKEFjKSkgc2FtYSBkZW5nYW4gMSBkaWt1cmFuZ2kgcHJvYmFiaWxpdGFzIHBlcmlzdGl3YSB0ZXJzZWJ1dCB0ZXJqYWRpIChQKEEpKS4gQXR1cmFuIGluaSBtZW55ZWRpYWthbiBjYXJhIGFsdGVybmF0aWYgdW50dWsgbWVueWVsZXNhaWthbiBtYXNhbGFoLiBNaXNhbG55YSwgcHJvYmFiaWxpdGFzIHRpZGFrIG1lbmRhcGF0a2FuIGR1YSBrZXBhbGEgZGFwYXQgZGloaXR1bmcgZGVuZ2FuIEF0dXJhbiBLb21wbGVtZW46IDHiiJJQKEhIKT0x4oiSMC4yNT0wLjc1LCB5YW5nIG1lbWJlcmlrYW4gaGFzaWwgeWFuZyBzYW1hIGRlbmdhbiBtZW5qdW1sYWhrYW4gcHJvYmFiaWxpdGFzIGhhc2lsIGxhaW5ueWEuDQoNCiMjIyBSZWZlcmVuc2kgVGFtYmFoYW4NCktvbnNlcCBwcm9iYWJpbGl0YXMgZGFzYXIgc2VyaW5nIGRpaW50ZXJwcmV0YXNpa2FuIGRhbGFtIGR1YSBhbGlyYW4gdXRhbWEgeWFpdHU6DQoNCkEuIEFsaXJhbiBGcmVrdWVudGlzIChGcmVxdWVudGlzdCkuUGVudWxpcwlSb25hbGQgRmlzaGVyIChidWt1IHRla3Mgc3RhdGlzdGlrIGtsYXNpaykJUHJvYmFiaWxpdGFzIGRpZGVmaW5pc2lrYW4gc2ViYWdhaSBsaW1pdCBmcmVrdWVuc2kgcmVsYXRpZiBzdWF0dSBrZWphZGlhbiBkYWxhbSBqYW5na2EgcGFuamFuZyAobG9uZyBydW4pLiBJbmkgYWRhbGFoIGludGVycHJldGFzaSB5YW5nIGRpZ3VuYWthbiBkYWxhbSBzZWJhZ2lhbiBiZXNhciBzdGF0aXN0aWthIGluZmVyZW5zaWFsICh1amkgaGlwb3Rlc2lzKS4NCg0KQi4gQmF5ZXNpYW4gKFN1Ympla3RpZikJUGVudWxpcyBUaG9tYXMgQmF5ZXMgKHZpYSBQaWVycmUtU2ltb24gTGFwbGFjZSk7IEFwcGxpZWQgQmF5ZXNpYW4gTW9kZWxpbmcuCVByb2JhYmlsaXRhcyBhZGFsYWggdGluZ2thdCBrZXBlcmNheWFhbiBwcmliYWRpIChkZXJhamF0IGtlcGVyY2F5YWFuKSB0ZXJoYWRhcCBzdWF0dSBwcm9wb3Npc2kuIFByb2JhYmlsaXRhcyBhd2FsIChwcmlvcikgZGlwZXJiYXJ1aSAocG9zdGVyaW9yKSBrZXRpa2EgYWRhIGRhdGEgYmFydS4NCg0KLS0tDQoNCiMjIEluZGVwZW5kZW4gZGFuIERlcGVuZGVuDQo8aWZyYW1lIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvTFMtX2loREtyMk0iIHdpZHRoPSI3NTBweCIgaGVpZ2h0PSI0MDBweCIgd2lkdGg9Ijc1MHB4IiBoZWlnaHQ9IjQwMHB4IiBkYXRhLWV4dGVybmFsPSIxIj4gPC9pZnJhbWU+DQoNCg0KDQogIEludGkgZGFyaSB2aWRlbyBpbmkgYWRhbGFoIHRlbnRhbmcgcGVsdWFuZyBhdGF1IFByb2JhYmlsaXRhc+KAlHNlYmVyYXBhIGJlc2FyIGtlbXVuZ2tpbmFuIHNlc3VhdHUgYWthbiB0ZXJqYWRpLiBQZWx1YW5nIGRpaGl0dW5nIGRlbmdhbiBtZW1iYWdpIGp1bWxhaCBoYXNpbCB5YW5nIGtpdGEgaW5naW5rYW4gZGVuZ2FuIHRvdGFsIHNlbXVhIGhhc2lsIHlhbmcgbXVuZ2tpbi4gQ29udG9oIHNlZGVyaGFuYW55YSwgcGVsdWFuZyBtZW5kYXBhdCBrZXBhbGEgc2FhdCBtZWxlbXBhciBrb2luIGFkYWxhaCAxIGRhcmkgMiAoMC41KS4gSmlrYSBhZGEgYmViZXJhcGEga2VqYWRpYW4geWFuZyB0aWRhayBzYWxpbmcgbWVtcGVuZ2FydWhpIChpbmRlcGVuZGVuKSwgc2VwZXJ0aSBtZWxlbXBhciBrb2luIGR1YSBrYWxpLCBraXRhIGJpc2EgbWVuZ2FsaWthbiBwZWx1YW5nbnlhOiAwLjXDlzAuNT0wLjI1IHVudHVrIG1lbmRhcGF0IGR1YSBrZXBhbGEuDQoNCiAgUnVhbmcgU2FtcGVpIHlhaXR1IGRhZnRhciBsZW5na2FwIHNlbXVhIGhhc2lsIHlhbmcgbXVuZ2tpbi4gS2V0aWthIG1lbGVtcGFyIGR1YSBrb2luLCBhZGEgZW1wYXQgaGFzaWwgeWFuZyBtdW5na2luOiBLZXBhbGEtS2VwYWxhIChISCksIEtlcGFsYS1Fa29yIChIVCksIEVrb3ItS2VwYWxhIChUSCksIGRhbiBFa29yLUVrb3IgKFRUKSwgZGkgbWFuYSBtYXNpbmctbWFzaW5nIHB1bnlhIHBlbHVhbmcgMC4yNS4gSmlrYSBraXRhIGluZ2luIHRhaHUgcGVsdWFuZyBoYXNpbCB5YW5nIGxlYmloIGx1YXMgKG1pc2FsbnlhLCBtZW5kYXBhdCBzZXRpZGFrbnlhIHNhdHUgZWtvciksIGtpdGEgY3VrdXAgbWVuanVtbGFoa2FuIHBlbHVhbmcgZGFyaSBoYXNpbC1oYXNpbCB5YW5nIHJlbGV2YW4gKDAuMjUrMC4yNSswLjI1PTAuNzUpLiBEdWEgYXR1cmFuIGRhc2FyIHlhbmcgaGFydXMgc2VsYWx1IGRpcGVudWhpIGFkYWxhaDogcGVsdWFuZyBzdWF0dSBrZWphZGlhbiBoYXJ1cyBzZWxhbHUgYmVyYWRhIGRpIGFudGFyYSAwIChwYXN0aSB0aWRhayB0ZXJqYWRpKSBkYW4gMSAocGFzdGkgdGVyamFkaSksIGRhbiBqaWthIGtpdGEgbWVuanVtbGFoa2FuIHBlbHVhbmcgc2VtdWEgaGFzaWwgeWFuZyBtdW5na2luLCB0b3RhbG55YSBoYXJ1cyAxLg0KDQogIEF0dXJhbiBLb21wbGVtZW4uIEF0dXJhbiBpbmkgbWVueWF0YWthbiBiYWh3YSBwZWx1YW5nIHN1YXR1IGtlamFkaWFuIHRpZGFrIHRlcmphZGkgYWRhbGFoIHNhbWEgZGVuZ2FuIDEgZGlrdXJhbmdpIHBlbHVhbmcga2VqYWRpYW4gaXR1IHRlcmphZGkuIEphZGksIGRhcmlwYWRhIG1lbmdoaXR1bmcgc2VtdWEga2VtdW5na2luYW4gaGFzaWwgeWFuZyBidWthbiBkdWEga2VwYWxhLCBraXRhIGJpc2EgbWVuZ2d1bmFrYW4gMeKIklAoZHVhIGtlcGFsYSkuIEthcmVuYSBwZWx1YW5nIG1lbmRhcGF0IGR1YSBrZXBhbGEgYWRhbGFoIDAuMjUsIG1ha2EgcGVsdWFuZyB0aWRhayBtZW5kYXBhdCBkdWEga2VwYWxhIGFkYWxhaCAx4oiSMC4yNT0wLjc1Lg0KDQojIyMgUmVmZXJlbnNpIHRhbWJhaGFuDQoxLiBJbmRlcGVuZGVudCBFdmVudHMgKEtlamFkaWFuIEluZGVwZW5kZW4gQmViYXMpDQpJbmRlcGVuZGVuc2kgYWRhbGFoIGFzdW1zaSB5YW5nIHNhbmdhdCBrdWF0IGRhbiBzZXJpbmcgZGlndW5ha2FuIHVudHVrIG1lbnllZGVyaGFuYWthbiBmdW5nc2kgbGlrZWxpaG9vZCBhdGF1IHByb2JhYmlsaXRhcyBiZXJzYW1hIChqb2ludCBwcm9iYWJpbGl0eSkgZGFyaSBkYXRhIHlhbmcga29tcGxla3MuDQoNCiAgRGVmaW5pc2kgS3VuY2kgKENvbmRpdGlvbmFsIFByb2JhYmlsaXR5KTogRHVhIGtlamFkaWFuIEEgZGFuIEIgaW5kZXBlbmRlbiBqaWthIHByb2JhYmlsaXRhcyB0ZXJqYWRpbnlhIEEgdGlkYWsgZGlwZW5nYXJ1aGkgb2xlaCB0ZXJqYWRpbnlhIEIsIGRhbiBzZWJhbGlrbnlhLg0KICAgIFAoQeKIo0IpPVAoQSkNCg0KICBBdHVyYW4gUGVya2FsaWFuIHVudHVrIEluZGVwZW5kZW46IEppa2EgQSBkYW4gQiBpbmRlcGVuZGVuLCBwcm9iYWJpbGl0YXMgaXJpc2FuIChpbnRlcnNlY3Rpb24pIG1lcmVrYSBhZGFsYWggaGFzaWwga2FsaSBwcm9iYWJpbGl0YXMgbWFyZ2luYWw6DQogICAgUChB4oipQik9UChBKVAoQikNCg0KMi4gUmVsZXZhbnNpIFV0YW1hIGRhbGFtIEVTTDogRGF0YSAmIEVycm9yOiBEYWxhbSBiYW55YWsgbW9kZWwsIHNlcGVydGkgUmVncmVzaSBMaW5pZXIsIHNlcmluZyBkaWFzdW1zaWthbiBiYWh3YSBvYnNlcnZhc2kgZGF0YSBhdGF1IGVycm9yIHJlc2lkdWFsIGFkYWxhaCBpbmRlcGVuZGVuIGRhbiB0ZXJkaXN0cmlidXNpIGlkZW50aWsgKGkuaS5kLikuIEFzdW1zaSBpbmkgcGVudGluZyB1bnR1ayBtZW55ZWRlcmhhbmFrYW4gZGFuIG1lbWJlbmFya2FuIHBlbmdndW5hYW4gZnVuZ3NpIGxpa2VsaWhvb2QgeWFuZyBtZXJ1cGFrYW4gcGVya2FsaWFuIHByb2JhYmlsaXRhcy4NCg0KICAgTW9kZWwgTmFpdmUgQmF5ZXM6IE1vZGVsIGtsYXNpZmlrYXNpIGluaSBkaWRhc2Fya2FuIHBhZGEgYXN1bXNpIGt1YXQgKGRhbiB0ZXJrYWRhbmcgdGlkYWsgcmVhbGlzdGlzKSBiYWh3YSBzZW11YSBmaXR1ciAodmFyaWFiZWwgcHJlZGlrdG9yKSBpbmRlcGVuZGVuIGJlcnN5YXJhdCAoWGrigIsgaW5kZXBlbmRlbiBkYXJpIFhr4oCLIGJlcnN5YXJhdCBwYWRhIGtlbGFzIFkpLg0KDQozLiBEZXBlbmRlbnQgRXZlbnRzIChLZWphZGlhbiBEZXBlbmRlbi9CZXJnYW50dW5nKQ0KDQpLZWphZGlhbiBBIGRhbiBCIGFkYWxhaCBkZXBlbmRlbiAoYXRhdSB0aWRhayBpbmRlcGVuZGVuKSBrZXRpa2EgaW5mb3JtYXNpIHRlbnRhbmcgc2F0dSBrZWphZGlhbiBtZW5ndWJhaCBwcm9iYWJpbGl0YXMga2VqYWRpYW4geWFuZyBsYWluLg0KDQogIERlZmluaXNpIEt1bmNpOiBQZW5nZXRhaHVhbiB0ZW50YW5nIHRlcmphZGlueWEgQiBtZW5ndWJhaCBwcm9iYWJpbGl0YXMgdGVyamFkaW55YSBBLg0KICAgIFAoQeKIo0Ip7oCgPVAoQSkNCg0KICBBdHVyYW4gUGVya2FsaWFuIFVtdW0gKE1lbmdndW5ha2FuIFByb2JhYmlsaXRhcyBCZXJzeWFyYXQpOiBVbnR1ayBrZWphZGlhbiBkZXBlbmRlbiwgcHJvYmFiaWxpdGFzIGlyaXNhbiBoYXJ1cyBtZW5nZ3VuYWthbiBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0Og0KICAgIFAoQeKIqUIpPVAoQeKIo0IpUChCKQ0KDQogNC4gUmVsZXZhbnNpIFV0YW1hIGRhbGFtIEVTTDpLb3JlbGFzaSAmIE11bHRpa29saW5lYXJpdGFzOiBEZXBlbmRlbnNpIG11bmN1bCBzZWNhcmEgYWxhbWkgc2ViYWdhaSBrb3JlbGFzaSBhbnRhciB2YXJpYWJlbCBwcmVkaWt0b3IuIFBlbW9kZWxhbiB5YW5nIG1lbmdhYmFpa2FuIGRlcGVuZGVuc2kgaW5pIGRhcGF0IG1lbnllYmFia2FuIG1hc2FsYWgsIHNlcGVydGkgbXVsdGlrb2xpbmVhcml0YXMgZGFsYW0gcmVncmVzaS4NCg0KICBNb2RlbCBJbnRlcmFrc2k6IERhbGFtIG1vZGVsIHJlZ3Jlc2ksIGtldGlrYSBlZmVrIHNhdHUgZml0dXIgYmVyZ2FudHVuZyBwYWRhIGZpdHVyIGxhaW4sIGtpdGEgc2VjYXJhIGVrc3BsaXNpdCBtZW1vZGVsa2FuIGRlcGVuZGVuc2kgKGludGVyYWN0aW9uIHRlcm0pLg0KDQogIE1vZGVsIExhbmp1dGFuOiBNb2RlbCB5YW5nIG1lbmFuZ2FuaSBkYXRhIGJlcnVydXRhbiAobWlzYWxueWEsIHRpbWUgc2VyaWVzKSBzZXBlcnRpIEhpZGRlbiBNYXJrb3YgTW9kZWxzIGF0YXUgUmVjdXJyZW50IE5ldXJhbCBOZXR3b3JrcyBzZWNhcmEgZWtzcGxpc2l0IGRpcmFuY2FuZyB1bnR1ayBtZW1vZGVsa2FuIGRhbiBtZW1hbmZhYXRrYW4gZGVwZW5kZW5zaSBhbnRhcmEgb2JzZXJ2YXNpIHlhbmcgYmVyZGVrYXRhbi4NCg0KNS4gSHVidW5nYW4gS3VuY2kgOiBLb25zZXAgZGVwZW5kZW5zaSBhZGFsYWggZm9uZGFzaSBkYXJpIFByb2JhYmlsaXRhcyBCZXJzeWFyYXQgKFAoQeKIo0IpKSwgeWFuZyBrZW11ZGlhbiBtZW5qYWRpIGludGkgZGFyaSBUZW9yZW1hIEJheWVzLiBUZW9yZW1hIEJheWVzLCBwYWRhIGdpbGlyYW5ueWEsIGFkYWxhaCBkYXNhciBtYXRlbWF0aXMgdW50dWsgYmFueWFrIGFsZ29yaXRtYSBrdW5jaSBkYWxhbSBTdGF0aXN0aWNhbCBMZWFybmluZywgdGVybWFzdWsgTWF4aW11bSBBIFBvc3RlcmlvcmkgKE1BUCkgZXN0aW1hdGlvbiBkYW4gQmF5ZXNpYW4gTmV0d29ya3MuDQoNCi0tLQ0KDQojIyBQcm9iYWJpbGl0YXMgR2FidW5nYW4gS2VqYWRpYW4NCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC92cUtBYmhDcVNUYyIgd2lkdGg9Ijc1MHB4IiBoZWlnaHQ9IjQwMHB4IiB3aWR0aD0iNzUwcHgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCg0KDQoNCg0KVmlkZW8gaW5pIG1lbmplbGFza2FuIHRlbnRhbmcgUHJvYmFiaWxpdGFzIEdhYnVuZ2FuIEtlamFkaWFuIChkaWtlbmFsIGRlbmdhbiBrYXRhIGt1bmNpICJhdGF1IiksIHlhaXR1IHBlbHVhbmcgdGVyamFkaW55YSBzYWxhaCBzYXR1IGRhcmkgZHVhIHBlcmlzdGl3YSBhdGF1IGtlZHVhbnlhLiBTZWJhZ2FpIGRhc2FyLCB2aWRlbyBpbmkgbWVuaW5qYXUga2VtYmFsaSBSdWFuZyBTYW1wZWwgKHNlbHVydWggaGFzaWwgeWFuZyBtdW5na2luLCBtaXNhbG55YSAzNiBoYXNpbCBkYXJpIG1lbGVtcGFyIGR1YSBkYWR1KSBkYW4gUHJvYmFiaWxpdGFzIFNlZGVyaGFuYS4gS29uc2VwIHBlbnRpbmcgeWFuZyBtZW5qYWRpIGplbWJhdGFuIGFkYWxhaCBJcmlzYW4gS2VqYWRpYW4gKGRpa2VuYWwgZGVuZ2FuIGthdGEga3VuY2kgImRhbiIpLCB5YW5nIG1lcnVwYWthbiBoYXNpbC1oYXNpbCB5YW5nIGRpbWlsaWtpIGJlcnNhbWEgYXRhdSB0dW1wYW5nIHRpbmRpaCBhbnRhcmEgZHVhIHBlcmlzdGl3YS4NCg0KVW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgZ2FidW5nYW4sIHJ1bXVzbnlhIGFkYWxhaDogcGVsdWFuZyBrZWphZGlhbiBBIGRpdGFtYmFoIHBlbHVhbmcga2VqYWRpYW4gQiwgbGFsdSBkaWt1cmFuZ2kgcGVsdWFuZyBpcmlzYW4gKGtlamFkaWFuIEEgZGFuIEIpLiBCYWdpYW4gcGVuZ3VyYW5nYW4gaW5pIHNhbmdhdCBrcnVzaWFsIGthcmVuYSBpYSBiZXJmdW5nc2kgdW50dWsgbWVuZ2hpbGFuZ2thbiBwZXJoaXR1bmdhbiBnYW5kYSAoZHVwbGlrYXNpKSBkYXJpIGhhc2lsLWhhc2lsIHlhbmcgdHVtcGFuZyB0aW5kaWguIFRhbnBhIHBlbmd1cmFuZ2FuIGluaSwga2l0YSBha2FuIG1lbmdoaXR1bmcgaGFzaWwgeWFuZyBzYW1hIHNlYmFueWFrIGR1YSBrYWxpLiBNaXNhbG55YSwgdW50dWsgbWVuY2FyaSBwZWx1YW5nIG1lbmRhcGF0IGR1YSBhbmdrYSBnZW5hcCBhdGF1IHNldGlkYWtueWEgc2F0dSBhbmdrYSBkdWEsIGtpdGEgbWVuanVtbGFoa2FuIHBlbHVhbmcgbWFzaW5nLW1hc2luZywga2VtdWRpYW4gbWVuZ3VyYW5naSBwZWx1YW5nIHR1bXBhbmcgdGluZGlobnlhICg5LzM2KzExLzM24oiSNS8zNj0xNS8zNikuIEtvbnNlcCBpbmkgZGFwYXQgZGl2aXN1YWxpc2FzaWthbiBkZW5nYW4gbXVkYWggbWVuZ2d1bmFrYW4gRGlhZ3JhbSBWZW5uLg0KDQojIyMgUmVmZXJlbnNpIHRhbWJhaGFuDQoxLiBEZWZpbmlzaSBQZW50aW5nOiBHYWJ1bmdhbiAodW5pb24pIGRhcmkgc2VtdWEga2VqYWRpYW4gc2FtYSBkZW5nYW4gUnVhbmcgU2FtcGVsIM6pLg0KICAgIEEx4oCL4oiqQTLigIviiKrii6/iiKpBbuKAiz3OqQ0KQ29udG9oOiBEYWxhbSBwZWxlbXBhcmFuIGRhZHUsIGtlamFkaWFuIG1lbmRhcGF0a2FuIGFuZ2thIOKJpDMgKEE9ezEsMiwzfSkgZGFuIGtlamFkaWFuIG1lbmRhcGF0a2FuIGFuZ2thID4zIChCPXs0LDUsNn0pIGFkYWxhaCBrb21wcmVoZW5zaWYsIGthcmVuYSBB4oiqQj17MSwyLDMsNCw1LDZ9Pc6pLg0KICBBdHVyYW4gUHJvYmFiaWxpdGFzOiBQcm9iYWJpbGl0YXMgZ2FidW5nYW4gZGFyaSBzZW11YSBrZWphZGlhbiBrb21wcmVoZW5zaWYgc2VsYWx1IDE6DQogICAgUChBMeKAi+KIqkEy4oCL4oiq4ouv4oiqQW7igIspPVAozqkpPTENCiAgICANCjIuIFVuaW9uIG9mIEV2ZW50cyAoR2FidW5nYW4gS2VqYWRpYW4pDQoNCktvbnNlcCBnYWJ1bmdhbiBrZWphZGlhbiAoQeKIqkIpIGFkYWxhaCBub3Rhc2kgZnVuZGFtZW50YWwgZGFsYW0gbWVuZGVmaW5pc2lrYW4gcnVhbmcgcHJvYmFiaWxpdGFzLCBtZXNraXB1biBwZW5nZ3VuYWFubnlhIGRhbGFtIGRlcml2YXNpIG1vZGVsIEVTTCBiaWFzYW55YSBpbXBsaXNpdC4NCiAgRGVmaW5pc2k6IEdhYnVuZ2FuIGR1YSBrZWphZGlhbiBBIGRhbiBCIGFkYWxhaCBrZWphZGlhbiBkaSBtYW5hIHNldGlkYWtueWEgc2F0dSBkYXJpIEEgYXRhdSBCIHRlcmphZGkuDQoNCiAgQXR1cmFuIFBlbmp1bWxhaGFuIFVtdW0gKEdlbmVyYWwgQWRkaXRpb24gUnVsZSk6IFByb2JhYmlsaXRhcyB1bnR1ayBnYWJ1bmdhbiBkdWEga2VqYWRpYW4gZGloaXR1bmcgc2ViYWdhaToNCiAgICBQKEHiiKpCKT1QKEEpK1AoQiniiJJQKEHiiKlCKQ0KDQogIEFwbGlrYXNpIEVTTCBJbXBsaXNpdDogQXR1cmFuIGluaSBzZWNhcmEgbWVuZGFzYXIgdGVya2FpdCBkZW5nYW4gcHJvYmFiaWxpdGFzIGtlc2FsYWhhbiB0b3RhbCBhdGF1IGVycm9yIHJhdGUgc2VjYXJhIGtlc2VsdXJ1aGFuLCBkaSBtYW5hIGtlc2FsYWhhbiBiaXNhIGRpc2ViYWJrYW4gb2xlaCBrZWphZGlhbiBkaSBrYXRlZ29yaSBBIGF0YXUga2F0ZWdvcmkgQi4NCg0KDQotLS0NCg0KIyMgS2VqYWRpYW4gc2FsaW5nIExlcGFzIGRhbiBLZWphZGlhbiBLb21wcmVoZW5zaWYNCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9mN2FnVHY5bkE1ayIgd2lkdGg9Ijc1MHB4IiBoZWlnaHQ9IjQwMHB4IiB3aWR0aD0iNzUwcHgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCg0KDQoNCg0KVmlkZW8gaW5pIG1lbWJhaGFzIGR1YSBqZW5pcyBodWJ1bmdhbiBhbnRhciBrZWphZGlhbiBkYWxhbSBwcm9iYWJpbGl0YXMuIFBlcnRhbWEsIEtlamFkaWFuIFNhbGluZyBMZXBhcyAoTXV0dWFsbHkgRXhjbHVzaXZlKSBhZGFsYWggcGVyaXN0aXdhIHlhbmcgdGlkYWsgbXVuZ2tpbiB0ZXJqYWRpIGJlcnNhbWFhbiAodGlkYWsgYWRhIGlyaXNhbiwgUChBIGRhbiBCKT0wKS4gVW50dWsga2VqYWRpYW4gc2VwZXJ0aSBpbmksIHBlbHVhbmcgZ2FidW5nYW4gKEEgYXRhdSBCKSBoYW55YWxhaCBwZW5qdW1sYWhhbiBzZWRlcmhhbmE6IFAoQSBhdGF1IEIpPVAoQSkrUChCKS4gS2VkdWEsIEtlamFkaWFuIEtvbXByZWhlbnNpZiAoRXhoYXVzdGl2ZSkgYWRhbGFoIHNla3VtcHVsYW4gcGVyaXN0aXdhIHlhbmcgYmVyc2FtYS1zYW1hIG1lbmNha3VwIHNlbXVhIGhhc2lsIHlhbmcgbXVuZ2tpbiBkYWxhbSBydWFuZyBzYW1wZWwsIHNlaGluZ2dhIGppa2EgcGVsdWFuZyBzZW11YSBrZWphZGlhbiBpbmkgZGlqdW1sYWhrYW4sIGhhc2lsbnlhIHBhc3RpIHNhbWEgZGVuZ2FuIDEuDQpQKEUx4oCLKStQKEUy4oCLKSvii68rUChFbuKAiyk9MQ0KDQojIyMgUmVmZXJlbnNpIHRhbWJhaGFuIA0KTXV0dWFsbHkgRXhjbHVzaXZlIEV2ZW50cyAoS2VqYWRpYW4gU2FsaW5nIExlcGFzKQ0KS2VqYWRpYW4gQSBkYW4gQiBkaXNlYnV0IHNhbGluZyBsZXBhcyBqaWthIGtlZHVhIGtlamFkaWFuIHRlcnNlYnV0IHRpZGFrIGRhcGF0IHRlcmphZGkgc2VjYXJhIGJlcnNhbWFhbiBkYWxhbSBzYXR1IGthbGkgcGVyY29iYWFuLg0KDQogIERlZmluaXNpIFBlbnRpbmc6IElyaXNhbiAoaW50ZXJzZWN0aW9uKSBkYXJpIGtlZHVhIGtlamFkaWFuIHRlcnNlYnV0IGFkYWxhaCBoaW1wdW5hbiBrb3NvbmcuDQogICAgQeKIqUI94oiFDQpDb250b2g6IERhbGFtIHBlbGVtcGFyYW4gZGFkdSwgbWVuZGFwYXRrYW4gYW5na2EgZ2VuYXAgKEE9ezIsNCw2fSkgZGFuIG1lbmRhcGF0a2FuIGFuZ2thIGdhbmppbCAoQj17MSwzLDV9KSBhZGFsYWggc2FsaW5nIGxlcGFzIGthcmVuYSBtdXN0YWhpbCBtZW5kYXBhdGthbiBrZWR1YW55YSBzZWthbGlndXMuDQoNCkF0dXJhbiBQZW5qdW1sYWhhbiAoQWRkaXRpb24gUnVsZSk6IEthcmVuYSBBIGRhbiBCIHNhbGluZyBsZXBhcywgcHJvYmFiaWxpdGFzIGdhYnVuZ2FuIG1lcmVrYSAodW5pb24pIGFkYWxhaCBwZW5qdW1sYWhhbiBwcm9iYWJpbGl0YXMgbWFzaW5nLW1hc2luZzoNCiAgUChB4oiqQik9UChBKStQKEIpKEluaSBhZGFsYWgga2FzdXMga2h1c3VzIGRhcmkgQXR1cmFuIFBlbmp1bWxhaGFuIFVtdW0gUChB4oiqQik9UChBKStQKEIp4oiSUChB4oipQiksIGRpIG1hbmEgUChB4oipQik9MCkuDQpHZW5lcmFsaXNhc2k6IFNlYnVhaCBrb2xla3NpIGtlamFkaWFuIEEx4oCLLEEy4oCLLEEz4oCLLOKApixBbuKAiyBkaXNlYnV0IHNhbGluZyBsZXBhcyBiZXJwYXNhbmdhbiAocGFpcndpc2UgbXV0dWFsbHkgZXhjbHVzaXZlKSBqaWthIHNldGlhcCBwYXNhbmcga2VqYWRpYW4gZGkgZGFsYW1ueWEgYWRhbGFoIHNhbGluZyBsZXBhcy4NCg0KRXhoYXVzdGl2ZSBFdmVudHMgKEtlamFkaWFuIEtvbXByZWhlbnNpZi9NZW5jYWt1cCkNCg0KU2VidWFoIGtvbGVrc2kga2VqYWRpYW4gQTHigIssQTLigIssQTPigIss4oCmLEFu4oCLIGRpc2VidXQga2VqYWRpYW4ga29tcHJlaGVuc2lmIGF0YXUgbWVuY2FrdXAgamlrYSBnYWJ1bmdhbiBkYXJpIHNlbXVhIGtlamFkaWFuIHRlcnNlYnV0IG1lbmNha3VwIHNlbHVydWggUnVhbmcgU2FtcGVsICjOqSkuIERlbmdhbiBrYXRhIGxhaW4sIHNldGlkYWtueWEgc2F0dSBkYXJpIGtlamFkaWFuIHRlcnNlYnV0IGhhcnVzIHRlcmphZGkuDQoNClNhbGluZyBMZXBhcyBkYW4gS29tcHJlaGVuc2lmDQogIFBhcnRpc2kgUnVhbmcgU2FtcGVsOiBLZXRpa2Egc2VidWFoIGtvbGVrc2kga2VqYWRpYW4gKG1pc2FsbnlhIEEgZGFuIEFjKSBtZW1lbnVoaSBrZWR1YSBrb25kaXNpIGluaSwgbWVyZWthIGRpa2F0YWthbiBtZW1wYXJ0aXNpIFJ1YW5nIFNhbXBlbC4NCiAxLiAgQSBkYW4gQWMgKGtvbXBsZW1lbiBkYXJpIEEpIHNlbGFsdSBzYWxpbmcgbGVwYXMgKEHiiKlBYz3iiIUpLg0KDQogMi4gIEEgZGFuIEFjIHNlbGFsdSBrb21wcmVoZW5zaWYgKEHiiKpBYz3OqSkuDQoNCiAgSHVrdW0gUHJvYmFiaWxpdGFzIFRvdGFsIChMYXcgb2YgVG90YWwgUHJvYmFiaWxpdHkpOiBEaWd1bmFrYW4gdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgc3VhdHUga2VqYWRpYW4gZGVuZ2FuIG1lbWJhZ2lueWEga2UgZGFsYW0ga2FzdXMta2FzdXMgc2FsaW5nIGxlcGFzIGRhbiBrb21wcmVoZW5zaWYuDQogICBUZW9yZW1hIEJheWVzOiBSdW11cyBmdW5kYW1lbnRhbCBkYWxhbSBpbmZlcmVuc2kgcHJvYmFiaWxpdGFzLCB5YW5nIHBlbmdhcGxpa2FzaWFubnlhIHNhbmdhdCBiZXJnYW50dW5nIHBhZGEgcGVtYmFnaWFuIHJ1YW5nIHNhbXBlbCBtZW5qYWRpIGtlamFkaWFuLWtlamFkaWFuIHlhbmcgc2FsaW5nIGxlcGFzIGRhbiBrb21wcmVoZW5zaWYNCiAgIA0KLS0tDQoNCiMjIEVrc3BlcmltZW4gQmlub21pYWwgZGFuIFJ1bXVzIEJpbm9taWFsDQoNCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9uUnVRQXRhakpZayIgd2lkdGg9Ijc1MHB4IiBoZWlnaHQ9IjQwMHB4IiB3aWR0aD0iNzUwcHgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCg0KDQoNCg0KVmlkZW8gaW5pIG1lbmplbGFza2FuIHRlbnRhbmcgRWtzcGVyaW1lbiBCaW5vbWlhbCBkYW4gUnVtdXMgQmlub21pYWwsIHlhbmcgbWVydXBha2FuIGNhcmEgdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4ganVtbGFoIGtlYmVyaGFzaWxhbiAoayBzdWtzZXMpIHRlcnRlbnR1IGRhbGFtIHNlcmFuZ2thaWFuIHBlcmNvYmFhbiAobikgeWFuZyBkaXVsYW5nLiBTdWF0dSBla3NwZXJpbWVuIGRpYW5nZ2FwIGJpbm9taWFsIGppa2EgbWVtZW51aGkgZW1wYXQgc3lhcmF0IGtldGF0OiBqdW1sYWggcGVyY29iYWFuIChuKSBoYXJ1cyB0ZXRhcCwgaGFueWEgYWRhIGR1YSBoYXNpbCB5YW5nIG11bmdraW4gKHN1a3NlcyBhdGF1IGdhZ2FsKSwgcHJvYmFiaWxpdGFzIHN1a3NlcyAocCkgaGFydXMga29uc3RhbiBkaSBzZXRpYXAgcGVyY29iYWFuLCBkYW4gc2V0aWFwIHBlcmNvYmFhbiBoYXJ1cyBpbmRlcGVuZGVuIHNhdHUgc2FtYSBsYWluLiBVbnR1ayBtZW5naGl0dW5nIHBlbHVhbmcgbWVuZGFwYXRrYW4gdGVwYXQgayBzdWtzZXMsIGtpdGEgYmlzYSBtZW5nZ3VuYWthbiBSdW11cyBCaW5vbWlhbCBzZWJhZ2FpIGphbGFuIHBpbnRhcyB1bnR1ayBtZW5nZ2FudGlrYW4gcGVuZ2hpdHVuZ2FuIG1hbnVhbCBzZW11YSB1cnV0YW4gaGFzaWwgeWFuZyBtdW5na2luLg0KDQpSdW11cyBCaW5vbWlhbCB1bnR1ayBwcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4gdGVwYXQgayBzdWtzZXMgYWRhbGFoOg0KUChYPWspPShrbuKAiynii4Vwa+KLhSgx4oiScClu4oiSaw0KDQpEaSBtYW5hIChrbuKAiykgYWRhbGFoIGtvbWJpbmFzaSAobiBwaWxpaCBrKSwgeWFuZyBtZW5naGl0dW5nIGp1bWxhaCB0b3RhbCBjYXJhIGsgc3Vrc2VzIGRhcGF0IHRlcmphZGkgZGFsYW0gbiBwZXJjb2JhYW4uDQoNCiMjIyBSZWZlcmVuc2kgdGFtYmFoYW4gDQpSaW5na2FzYW4gbWVuZ2VuYWkgRWtzcGVyaW1lbiBCaW5vbWlhbCBkYW4gRGlzdHJpYnVzaSBCaW5vbWlhbCBiZXJkYXNhcmthbiBidWt1IEludHJvZHVjdGlvbiB0byBQcm9iYWJpbGl0eSBvbGVoIENoYXJsZXMgTS4gR3JpbnN0ZWFkICYgSi4gTGF1cmllIFNuZWxsLg0KDQogRWtzcGVyaW1lbiBCaW5vbWlhbCAoQmlub21pYWwgRXhwZXJpbWVudCkNCkRhbGFtIGtvbnRla3MgYnVrdSBpbmksIEVrc3BlcmltZW4gQmlub21pYWwgYWRhbGFoIHN1YXR1IHJhbmdrYWlhbiBwZXJjb2JhYW4geWFuZyBoYXJ1cyBtZW1lbnVoaSBlbXBhdCBrb25kaXNpIHNwZXNpZmlrOg0KDQogIDEuIEp1bWxhaCBQZXJjb2JhYW4gVGV0YXAgKG4pOiBFa3NwZXJpbWVuIHRlcmRpcmkgZGFyaSBzZWp1bWxhaCBwZXJjb2JhYW4gaW5kZXBlbmRlbiB5YW5nIGRpbGFrdWthbiBzZWJhbnlhayBuIGthbGkgeWFuZyBzdWRhaCBkaXRldGFwa2FuIHNlYmVsdW1ueWEuDQoNCiAgMi4gRHVhIEhhc2lsIHlhbmcgTXVuZ2tpbiAoRGljaG90b215KTogU2V0aWFwIHBlcmNvYmFhbiBoYW55YSBtZW1pbGlraSBkdWEgaGFzaWwgeWFuZyBtdW5na2luOiBTdWtzZXMgKFN1Y2Nlc3MsIFMpIGF0YXUgR2FnYWwgKEZhaWx1cmUsIEYpLg0KDQogIDMuIFByb2JhYmlsaXRhcyBTdWtzZXMgS29uc3RhbiAocCk6IFByb2JhYmlsaXRhcyB1bnR1ayBtZW5kYXBhdGthbiBoYXNpbCBTdWtzZXMgKHApIGhhcnVzIHNhbWEgdW50dWsgc2V0aWFwIHBlcmNvYmFhbi4gRGVuZ2FuIGRlbWlraWFuLCBwcm9iYWJpbGl0YXMgR2FnYWwgYWRhbGFoIHE9MeKIknAuDQoNCiAgNC4gSW5kZXBlbmRlbnNpOiBIYXNpbCBkYXJpIHNhdHUgcGVyY29iYWFuIHRpZGFrIG1lbWVuZ2FydWhpIGhhc2lsIGRhcmkgcGVyY29iYWFuIGxhaW5ueWEuIFNlbXVhIHBlcmNvYmFhbiBiZXJzaWZhdCBpbmRlcGVuZGVuLg0KDQpWYXJpYWJlbCBhY2FrIHlhbmcgZGltaW5hdGkgZGFsYW0gRWtzcGVyaW1lbiBCaW5vbWlhbCBhZGFsYWgganVtbGFoIHRvdGFsIHN1a3NlcyAoWCkgeWFuZyB0ZXJqYWRpIGRhbGFtIG4gcGVyY29iYWFuIHRlcnNlYnV0Lg0KDQotLS0NCg0KIyMgRGlzdHJpYnVzaSBCaW5vbWlhbA0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1kyLXZTV0ZtZ3lJIiB3aWR0aD0iNzUwcHgiIGhlaWdodD0iNDAwcHgiIHdpZHRoPSI3NTBweCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KDQoNCg0KDQpWaWRlbyBpbmkgbWVuZ2ludGVycHJldGFzaWthbiBEaXN0cmlidXNpIEJpbm9taWFsIHNlYmFnYWkgbW9kZWwgcHJvYmFiaWxpdGFzIHlhbmcgc2FuZ2F0IGZsZWtzaWJlbCwgeWFuZyBiZW50dWtueWEgc2VjYXJhIGxhbmdzdW5nIGRpa2VuZGFsaWthbiBvbGVoIHBhcmFtZXRlciBuIGRhbiBwLg0KICBJbnRlcnByZXRhc2kgbiAoRXZvbHVzaSBrZSBOb3JtYWwpOiBJbnRlcnByZXRhc2kga3VuY2kgZGFyaSBwZW5pbmdrYXRhbiBuIGFkYWxhaCBiYWh3YSBkZW5nYW4gc2VtYWtpbiBiYW55YWtueWEgcGVyY29iYWFuLCB2YXJpYXNpIGRhbGFtIGhhc2lsIG1lbmphZGkgbGViaWggaGFsdXMgZGFuIHRlcmRpc3RyaWJ1c2kgbWVyYXRhLCB5YW5nIHNlY2FyYSBtYXRlbWF0aXMgbWVuZ2FyYWggcGFkYSBEaXN0cmlidXNpIE5vcm1hbC4gSW5pIHNhbmdhdCBwZW50aW5nIGthcmVuYSBkYWxhbSBzdGF0aXN0aWssIGJlZ2l0dSBzZWJ1YWggZGlzdHJpYnVzaSBkYXBhdCBkaWFzdW1zaWthbiBub3JtYWwsIGtpdGEgZGFwYXQgbWVuZ2d1bmFrYW4gYmVyYmFnYWkgdGVrbmlrIHN0YXRpc3RpayB5YW5nIGxlYmloIHNlZGVyaGFuYSBkYW4ga3VhdCAoc2VwZXJ0aSBaLXNjb3JlKSB1bnR1ayBwZXJoaXR1bmdhbiBwcm9iYWJpbGl0YXMuDQogIA0KICAgSW50ZXJwcmV0YXNpIHAgKFBlbmNlbmcpOiBOaWxhaSBwIHRpZGFrIGhhbnlhIG1lbmVudHVrYW4gcGVsdWFuZyBzdWtzZXMsIHRldGFwaSBqdWdhIGFyYWggImtlbWlyaW5nYW4iIGhhc2lsLg0KS2V0aWthIHA9MC41LCBrZWJlcmhhc2lsYW4gZGFuIGtlZ2FnYWxhbiBzYW1hLXNhbWEgbXVuZ2tpbiwgc2VoaW5nZ2EgZGlzdHJpYnVzaSBtZW5qYWRpIHNlaW1iYW5nIChzaW1ldHJpcykgZGkgc2VraXRhciBuaWxhaSByYXRhLXJhdGEgKM68KS4NCiAgS2V0aWthIHAgamF1aCBkYXJpIDAuNSwgZGlzdHJpYnVzaSBtZW5qYWRpIG1lbmNlbmcga2FyZW5hIGhhc2lsIHlhbmcgcGFsaW5nIG11bmdraW4gYWRhbGFoIHlhbmcgc2FuZ2F0IGVrc3RyZW0gKHNhbmdhdCBzZWRpa2l0IHN1a3NlcyBqaWthIHAga2VjaWwsIGF0YXUgc2FuZ2F0IGJhbnlhayBzdWtzZXMgamlrYSBwIGJlc2FyKS4gRGF0YSBzZWxhbHUgbWVuZ2Vsb21wb2sgZGkgc2VraXRhciBSYXRhLXJhdGEgKM68PW5wKSB5YW5nIG1lcnVwYWthbiBoYXNpbCB5YW5nIHBhbGluZyBkaWhhcmFwa2FuIGRhbGFtIHBlcmNvYmFhbi4NCiAgSW50ZXJwcmV0YXNpIFJ1bXVzIFBhcmFtZXRlcjogUnVtdXMgzrw9bsOXcCBtZW1iZXJpa2FuIG5pbGFpIHlhbmcgZGloYXJhcGthbiAoZXhwZWN0ZWQgdmFsdWUpIGRhcmkganVtbGFoIGtlYmVyaGFzaWxhbi4gTWlzYWxueWEsIGppa2EgQW5kYSBtZWxlbXBhciBrb2luIDEwIGthbGkgKG49MTApIGRhbiBwcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4gc2lzaSBnYW1iYXIgYWRhbGFoIDAuNSAocD0wLjUpLCByYXRhLXJhdGEgKGVrc3Bla3Rhc2kpIHN1a3NlcyBhZGFsYWggMTDDlzAuNT01IGthbGkuIFJ1bXVzIFZhcmlhbnMgZGFuIFN0YW5kYXIgRGV2aWFzaSBtZW5ndWt1ciBzZWJlcmFwYSBqYXVoIGhhc2lsIHlhbmcgZGlhbWF0aSBrZW11bmdraW5hbiBha2FuIG1lbnlpbXBhbmcgZGFyaSBuaWxhaSByYXRhLXJhdGEgeWFuZyBkaWhhcmFwa2FuIHRlcnNlYnV0Lg0KICANCiMjIyBSZWZlcmVuc2kgdGFtYmFoYW4gDQpGdW5nc2kgTWFzc2EgUHJvYmFiaWxpdGFzIChQcm9iYWJpbGl0eSBNYXNzIEZ1bmN0aW9uLCBQTUYpDQoNClByb2JhYmlsaXRhcyB1bnR1ayBtZW5kYXBhdGthbiB0ZXBhdCBrIGthbGkgc3Vrc2VzIGRhbGFtIG4gcGVyY29iYWFuIGRpYmVyaWthbiBvbGVoIGZ1bmdzaSBtYXNzYSBwcm9iYWJpbGl0YXMgKFBNRikgQmlub21pYWw6DQpiKG4scCxrKT1QKFg9ayk9KGtu4oCLKXBrKDHiiJJwKW7iiJJrDQpEaSBtYW5hOg0KDQogMSwgUChYPWspOiBQcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4gdGVwYXQgayBzdWtzZXMuDQoNCiAyLiAoa27igIspPWshKG7iiJJrKSFuIeKAizogS29lZmlzaWVuIEJpbm9taWFsLCB5YW5nIG1lbmdoaXR1bmcganVtbGFoIGNhcmEgYmVyYmVkYSB1bnR1ayBtZW5kYXBhdGthbiBrIHN1a3NlcyBkYWxhbSBuIHBlcmNvYmFhbi4NCg0KIDMuIHBrOiBQcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4gayBzdWtzZXMuDQoNCiA0JyAoMeKIknApbuKIkms6IFByb2JhYmlsaXRhcyBtZW5kYXBhdGthbiBu4oiSayBnYWdhbC4NCg0KYS4gUGFyYW1ldGVyIERpc3RyaWJ1c2kNCg0KU2VidWFoIERpc3RyaWJ1c2kgQmlub21pYWwgc2VwZW51aG55YSBkaXRlbnR1a2FuIG9sZWggZHVhIHBhcmFtZXRlciwgbiAoanVtbGFoIHBlcmNvYmFhbikgZGFuIHAgKHByb2JhYmlsaXRhcyBzdWtzZXMpLiBEaXN0cmlidXNpIGluaSBzZXJpbmcgZGlub3Rhc2lrYW4gc2ViYWdhaSBCKG4scCkuDQoNCiAgTmlsYWkgSGFyYXBhbiAoRXhwZWN0ZWQgVmFsdWUpIGF0YXUgUmF0YS1yYXRhICjOvCk6DQogIEUoWCk9zrw9bnANCiAgSW50ZXJwcmV0YXNpOiBKaWthIGVrc3BlcmltZW4gZGl1bGFuZyBiZXJrYWxpLWthbGksIHJhdGEtcmF0YSBqdW1sYWggc3Vrc2VzIHlhbmcgZGlhbWF0aSBha2FuIG1lbmRla2F0aSBuw5dwLg0KDQpiLiBWYXJpYW5zICjPgzIpOg0Kz4MyPW5wKDHiiJJwKQ0KDQpJbnRlcnByZXRhc2k6IFZhcmlhbnMgbWVuZ3VrdXIgc2ViZXJhcGEgdGVyc2ViYXIgKGJlcnZhcmlhc2kpIGp1bWxhaCBzdWtzZXMgeWFuZyBtdW5na2luIHRlcmphZGkgZGkgc2VraXRhciByYXRhLXJhdGEuDQogIA0KLS0tDQoNCiMjIFJlZmVyZW5zaQ0KDQpodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvaW50cm9fc3RhdGlzdGljcy8wNi1Fc3NlbnRpYWxzX29mX1Byb2JhYmlsaXR5Lmh0bWwjRXhjbHVzaXZlDQoNCkdyaW5zdGVhZCwgQy4gTS4sICYgU25lbGwsIEouIEwuICgyMDA5KS4gSW50cm9kdWN0aW9uIHRvIFByb2JhYmlsaXR5LiBBbWVyaWNhbiBNYXRoZW1hdGljYWwgU29jaWV0eSAoQU1TKS4NCg0KSGFzdGllLCBULiwgVGlic2hpcmFuaSwgUi4sICYgRnJpZWRtYW4sIEouICgyMDA5KS4gVGhlIGVsZW1lbnRzIG9mIHN0YXRpc3RpY2FsIGxlYXJuaW5nOiBEYXRhIG1pbmluZywgaW5mZXJlbmNlLCBhbmQgcHJlZGljdGlvbiAoMm5kIGVkLikuIFNwcmluZ2VyLg0KDQoNCg0K