Probability Distribution

Exercises ~ Week 11


Profile Picture

Muhammad Nabil Khairil Anam
Data Science Student
Institut Teknologi Sains Bandung (ITSB)


1 Introduction

Probabilitas tidak hanya membantu kita memahami seberapa besar kemungkinan suatu peristiwa terjadi, tetapi juga membentuk dasar dari banyak metode statistik yang digunakan untuk pengambilan keputusan. Ketika suatu proses atau eksperimen menghasilkan berbagai hasil, kita menggunakan variabel acak untuk merepresentasikan hasil tersebut dan distribusi probabilitas untuk menjelaskan bagaimana probabilitas didistribusikan ke setiap nilai yang mungkin. Memahami bentuk dan sifat distribusi sangat penting karena hal ini menentukan perilaku data, cara menghitung probabilitas, serta cara membuat prediksi. Mulai dari distribusi untuk variabel kontinu hingga perilaku statistik seperti rata-rata sampel, distribusi probabilitas menjadi inti dari statistika inferensial.

Materi ini akan memandu Anda melalui beberapa konsep utama:

  • Variabel Acak Kontinu, yang menggambarkan kemungkinan nilai pada rentang kontinu.

  • Distribusi Sampling, yang mewakili distribusi statistik sampel seperti rata-rata sampel atau proporsi sampel.

  • Teorema Batas Pusat (CLT), salah satu hasil terpenting dalam statistika, menjelaskan mengapa distribusi rata-rata sampel cenderung mendekati distribusi normal, terlepas dari bentuk distribusi populasi asalnya.

  • Distribusi Proporsi Sampel, banyak digunakan dalam analisis survei dan penelitian kuantitatif.

Setiap bagian dilengkapi dengan penjelasan video untuk memperdalam pemahaman konseptual. Dengan menguasai topik-topik ini, Anda akan lebih siap untuk menganalisis data, membangun model statistik, dan menarik kesimpulan berdasarkan prinsip-prinsip probabilistik yang kuat.


2 Countinuous Random

Topik ini merupakan fondasi vital dalam statistika inferensial dan ilmu data, berfungsi sebagai kerangka kerja untuk memodelkan ketidakpastian (uncertainty) dan membuat keputusan berdasarkan data. Video ini tidak hanya menyajikan tinjauan teoretis, tetapi juga menyoroti aplikasi praktis dari berbagai jenis distribusi mulai dari diskrit hingga kontinu yang digunakan untuk memahami perilaku data. Fokus utama diletakkan pada pemahaman perbedaan mendasar antara Variabel Diskrit dan Variabel Kontinu, serta metode visualisasi dan perhitungan probabilitas yang sesuai untuk masing-masing.

2.1 Variabel Diskrit (Discrete Variables)

Video diawali dengan tinjauan singkat mengenai variabel diskrit sebagai dasar pemahaman.

Definisi: Variabel diskrit adalah variabel yang hanya dapat mengambil nilai yang dapat dihitung (countable number of values).

Sifat: Sifatnya terbatas atau terhingga (finite), meskipun nilai tersebut bisa saja melibatkan desimal (misalnya, jumlah uang di rekening atau skor ujian) selama nilainya masih dapat dihitung.

Contoh:

  • Jumlah sisi Heads saat melempar koin.
  • Jumlah kelereng biru yang diambil.
  • Nilai siswa pada ujian.
  • Jumlah anak dalam satu keluarga (misalnya 0, 1, 2, 3, dst., tidak mungkin 0.73 anak).

2.2 Variabel Kontinu (Continuous Variables)

Berbeda dengan variabel diskrit, variabel kontinu memiliki sifat yang tak terbatas.

Definisi: Variabel kontinu adalah variabel yang dapat mengambil nilai numerik apa pun dalam rentang tertentu.

Sifat: Data untuk variabel kontinu diperoleh melalui pengukuran (measuring) dan bukan perhitungan (counting). Oleh karena itu, nilainya tidak terbatas (infinite) dan tidak dapat dihitung (uncountable).

Contoh:

  • Usia: Jika diperiksa lebih dekat, seseorang yang berusia 23 tahun bisa jadi 23 tahun 6 bulan, 2 hari, 3 detik, 8 milidetik, dan seterusnya hingga tak terhingga.

  • Berat: Berat seseorang dapat diukur hingga titik desimal apa pun (misalnya 150.305482…), sehingga kemungkinannya tidak terbatas.

  • Suhu, jarak, dan waktu juga merupakan contoh variabel kontinu.

2.3 Representasi Distribusi Probabilitas

Distribusi probabilitas dari kedua jenis variabel ini direpresentasikan dengan berbeda secara visual.


Perbandingan Representasi Variabel Diskrit vs. Kontinu
Variabel Representasi Visual Ciri Khas
Diskrit Bar Chart (Diagram Batang) Setiap elemen ditampilkan sebagai entitas individual yang menunjukkan hasil yang dapat dihitung. Grafik batang memiliki celah di antara setiap batang untuk menunjukkan diskontinuitas.
Kontinu Histogram atau Density Curve (Kurva Kepadatan) Histogram tidak memiliki celah di antara setiap batang untuk mencerminkan kesinambungan (continuity) data. Kurva kepadatan (density curve) juga digunakan untuk mewakili variabel acak kontinu.

2.3.1 Contoh Barchart untuk Variabel Diskrit


Diagram Batang digunakan untuk merepresentasikan variabel diskrit karena secara visual mendukung sifat-sifat utama dari variabel tersebut.

  1. Representasi Entitas Individual

Variabel diskrit adalah variabel yang nilainya dapat dihitung (countable). Diagram batang merepresentasikan setiap kemungkinan hasil (misalnya, 0 anak, 1 anak, 2 anak) sebagai entitas atau batang individu. Ini sesuai dengan sifat data diskrit di mana nilai-nilai di antara batang tidak mungkin terjadi (misalnya, tidak ada nilai 1.5 anak).

  1. Adanya Celah (Gaps)

Ciri khas diagram batang—yang membedakannya dari histogram—adalah adanya celah di antara setiap batang. Celah ini penting karena:

  • Menunjukkan Diskontinuitas: Celah secara visual menunjukkan bahwa tidak ada kesinambungan (continuity) antar kategori. Artinya, nilai variabel meloncat dari 1 ke 2, tanpa nilai di antaranya.

  • Mencerminkan Perhitungan: Karena variabel diskrit didapatkan melalui perhitungan (counting) dan bukan pengukuran, representasi dengan celah ini paling tepat untuk menggambarkan hasil yang dapat dihitung (countable outcomes).

2.3.2 Contoh Histogram untuk Variabel Kontinu



Variabel kontinu seperti tinggi badan mahasiswa sangat cocok divisualisasikan menggunakan Histogram karena beberapa alasan utama yang berhubungan dengan sifat dasar data tersebut.

Tinggi badan adalah contoh klasik dari Variabel Kontinu (data yang diukur), bukan dihitung.

  1. Sifat Data Kontinu (Nilai Tak Terbatas)
  • Variabel kontinu dapat mengambil nilai apa pun dalam rentang tertentu, termasuk angka desimal yang tak terbatas.

  • Contoh: Tinggi badan mahasiswa tidak hanya 170 cm atau 171 cm. Tinggi yang mungkin adalah 170.5 cm, 170.53 cm, 170.5321 cm, dan seterusnya.

  • Jika kita mencoba membuat batang terpisah untuk setiap nilai tinggi yang unik, kita akan memiliki ribuan batang sangat pendek yang tidak memberikan informasi berarti.

  1. Kebutuhan Pengelompokan (Bins)

Histogram mengatasi masalah nilai yang tak terbatas ini dengan membuat Bins (Keranjang) atau Rentang Interval yang sama lebarnya.

  • Histogram Mengelompokkan: Data tinggi badan dikelompokkan (misalnya, 160–165 cm, 165–170 cm, 170–175 cm).

  • Fokus pada Frekuensi: Setiap batang pada histogram kemudian menunjukkan frekuensi (jumlah mahasiswa) yang tingginya jatuh ke dalam rentang bin tersebut.

  1. Representasi Distribusi

Tujuan utama visualisasi data kontinu adalah melihat Distribusi. Histogram adalah alat terbaik untuk ini karena:

  • Menunjukkan Kepadatan: Ketinggian batang histogram menunjukkan di mana data paling banyak terkonsentrasi (pusat data, yang mungkin berada di sekitar tinggi rata-rata).

  • Menunjukkan Bentuk: Anda dapat melihat bentuk distribusi data secara keseluruhan (misalnya, apakah tinggi badan mahasiswa membentuk kurva lonceng yang simetris—yaitu, Distribusi Normal—atau miring).

  • Batang Saling Menyentuh: Dalam histogram, batang-batang saling menyentuh. Ini secara visual menekankan sifat data yang berkesinambungan (continuity), yaitu, tidak ada celah nilai yang tidak mungkin terjadi antara satu rentang tinggi ke rentang tinggi berikutnya. (Berbeda dengan Bagan Batang untuk data diskret seperti “jumlah anak”, di mana batang memiliki celah karena tidak mungkin ada “1,5 anak”).

Singkatnya, Histogram mengubah data pengukuran kontinu yang kompleks menjadi ringkasan visual sederhana yang menunjukkan pola penyebaran dan konsentrasi data.


2.4 Perhitungan Probabilitas

Formula / rumus yang digunakan untuk menghitung probabilitas juga berbeda antara variabel diskrit dan kontinu.

  • Variabel Diskrit: Menggunakan formula probabilitas dasar.

  • Variabel Kontinu: Menggunakan formula yang terkait dengan Kurva Kepadatan (Density Curves). Hal ini karena area di bawah kurva kepadatan dapat merepresentasikan probabilitas atau proporsi untuk mengamati rentang hasil yang bersifat kontinu.

  • Distribusi Normal: Formula yang berkaitan dengan Distribusi Normal akan sering digunakan untuk variabel kontinu karena Distribusi Normal sendiri adalah bentuk dari Kurva Kepadatan. Video ini mengakhiri dengan menyebutkan bahwa materi selanjutnya dalam seri ini akan berfokus pada Distribusi Normal.


3 Sampling Distribution

Video ini menjelaskan konsep penting dalam statistika inferensial, yaitu Distribusi Sampel (Sampling Distribution). Distribusi sampel menjadi dasar untuk mengambil kesimpulan tentang populasi besar tanpa perlu mengukur setiap individu di dalamnya, sehingga sangat membantu dalam hal efisiensi dan kepraktisan.

Video dimulai dengan membedakan tiga jenis distribusi utama: Distribusi Sampel (Sample Distribution), Distribusi Populasi (Population Distribution), dan yang paling penting, Distribusi Sampel (Sampling Distribution).


3.1 Perbedaan Tiga Jenis Distribusi

Jenis Distribusi Keterangan
Distribusi Populasi Distribusi yang dibuat dari pengukuran setiap individu dalam populasi.
Distribusi Sampel Distribusi yang dibuat dari pengukuran setiap individu dalam satu sampel tunggal.
Sampling Distribution Distribusi dari statistik (misalnya, rata-rata x̄) yang dibuat dari berbagai sampel acak sederhana yang ditarik dari populasi yang sama.

Penting: Rata-rata sampel \((\bar{x})\) tidak selalu sama dengan rata-rata populasi \((\mu)\) karena sampel memiliki variabilitas lebih tinggi dan mengandung lebih sedikit informasi daripada populasi.

3.2 Proses Pembentukan Distribusi Sampel

Distribusi sampel dibentuk melalui proses pengambilan sampel berulang (repeated sampling):

  • Tentukan Populasi: Identifikasi populasi yang diminati (misalnya, tinggi badan).

  • Ambil Sampel 1: Ambil sampel acak sederhana pertama (ukuran n).

  • Hitung Statistik: Hitung rata-rata \((\bar{x})\) untuk sampel tersebut.

  • Plot Hasil: Plot nilai \(\bar{x}\) tersebut ke dalam grafik distribusi frekuensi.

  • Ulangi: Lakukan keseluruhan proses ini ratusan hingga ribuan kali (ambil sampel baru, hitung \(\bar{x}, plot)\).

  • Hasil akhirnya adalah distribusi yang terdiri dari tumpukan banyak rata-rata sampel \((\bar{x})\). Jika data yang dikumpulkan cukup banyak, distribusi sampel akan cenderung terdistribusi normal.

3.3 Perbandingan Rumus dan Karakteristik Utama

Perbedaan terbesar antara distribusi populasi dan distribusi sampel terletak pada sebaran dan simpangan baku-nya.


Karakteristik Distribusi Populasi Distribusi Sampel (Rata-rata Sampel)
Rata-rata (Mean) \(\mu\) \(\mu_{\bar{x}} = \mu\) (Rata-rata dari semua \(\bar{x}\) sama dengan rata-rata populasi)
Simpangan Baku (Standard Deviation) \(\sigma\) Simpangan baku lebih kecil dari \(\sigma\)
Nama Simpangan Baku Simpangan Baku Populasi Galat Baku (Standard Error)
Rumus Simpangan Baku / Galat Baku \(\sigma\) \(\sigma_{\bar{x}} = \frac{\sigma}{\sqrt{n}}\)
Rumus Standardisasi (Z-Score) \(Z = \frac{x - \mu}{\sigma}\) \(Z = \frac{\bar{x} - \mu}{\sigma / \sqrt{n}}\)

Mengapa Galat Baku Lebih Kecil?

Sebaran distribusi sampel selalu lebih kecil karena rata-rata kurang bervariasi dibandingkan dengan pengamatan individu. Karena distribusi sampel dibuat dari rata-rata (bukan dari nilai individu), sebarannya menjadi lebih sempit dan lebih tinggi.

3.4 Tujuan dan Kegunaan Distribusi Sampel

Tujuan utama dari distribusi sampel adalah kenyamanan dan efisiensi.

  • Menghindari Pengukuran Massal: Distribusi sampel memberikan ide tentang nilai rata-rata populasi \((\mu)\) tanpa harus mengukur setiap individu (misalnya, mengukur tinggi 8 miliar manusia).

  • Perhitungan Probabilitas: Distribusi sampel memungkinkan kita menghitung probabilitas untuk mendapatkan rata-rata sampel \((\bar{x})\) tertentu berdasarkan ukuran sampel (n) yang kita gunakan.

3.5 Contoh Soal (Aplikasi Rumus)

Contoh 1: Menghitung Probabilitas Rata-Rata Sampel (Menggunakan Distribusi Sampling)

\[Soal:\] Diketahui tinggi orang Kanada berdistribusi normal dengan rata-rata () 160 cm dan standar deviasi () 7 cm. Berapa probabilitas rata-rata tinggi badan dari 10 orang Kanada acak (n=10) adalah kurang dari 157 cm?

  • Penyelesaian:
  1. Hitung Standard Error \((\sigma_{\bar{x}})\): 7 / \(\sqrt{10} \approx\) 2.21.

  2. Hitung Z-score: Z = \(\frac{157 - 160}{2.21}\) \(\approx\) -1.36.

  3. Cari Luas dari Tabel Z: \(P(Z < -1.36)\) = 0.0869.

  4. Hasil: Probabilitasnya adalah 0.0869 atau 8.69%.

Contoh 2: Menghitung Proporsi Individu (Menggunakan Distribusi Populasi)

\[Soal:\] Berapa proporsi semua orang yang memiliki tinggi badan lebih dari 170 cm?

  • Penyelesaian:

Karena pertanyaannya tentang semua orang (individu), digunakan rumus Z-score populasi.

  1. Hitung Z-score: Z = \(\frac{170 - 160}{7}\) \(\approx\) 1.43.

  2. Cari Luas ke Kiri: Luas ke kiri dari Z=1.43 adalah 0.9236.

  3. Hitung Luas ke Kanan: 1 - 0.9236 = 0.0764.

  4. Hasil: Proporsinya adalah 0.0764 atau 7.64%.



4 Central Limit Theorem

Video ini membahas Teorema Limit Pusat (Central Limit Theorem/TLP), sebuah konsep fundamental dalam statistika inferensial. TLP adalah teorema yang memprediksi bentuk distribusi sampling dari rata-rata sampel \((\bar{x})\). Teorema ini sangat kuat karena memungkinkan kita untuk menganalisis dan menarik kesimpulan tentang populasi bahkan ketika kita tidak mengetahui bentuk asli dari distribusi populasi tersebut. Sebelum membahas TLP, video ini meninjau kembali bahwa distribusi sampling dibentuk dengan mengambil sampel berulang kali dari populasi, menghitung statistik (seperti \(\bar{x}\)) dari setiap sampel, dan kemudian menggabungkan hasilnya dalam sebuah grafik.

4.1 Pernyataan Utama Teorema Limit Pusat

Teorema Limit Pusat menyatakan bahwa:

  • Jika ukuran sampel (n) cukup besar, maka distribusi sampling dari rata-rata sampel \((\bar{x})\) akan berdistribusi mendekati normal (normal approximation).

  • Prinsip ini berlaku tanpa memandang seperti apa bentuk asli distribusi populasi (apakah miring/skewed, seragam, atau bentuk lainnya).

  • Secara visual, meskipun populasi aslinya miring, plotting semua rata-rata sampel \((\bar{x})\) secara berulang akan menghasilkan bentuk lonceng yang simetris (distribusi normal).

4.2 Mekanisme dan Logika di Balik TLP

  • Dalam pengambilan sampel acak, sebagian besar titik data cenderung berasal dari bagian utama (bulk) distribusi populasi, dan lebih sedikit yang berasal dari area yang lebih kecil (ekor).

  • Rata-rata sampel \((\bar{x})\) cenderung berada di sekitar rata-rata populasi sejati \((\mu)\).

  • Karena sebagian besar \(\bar{x}\) akan mengelompok di dekat \(\mu\), dan sampel yang sangat ekstrem (jauh dari \(\mu\)) jarang terjadi, kumpulan \(\bar{x}\) dari banyak sampel secara alami akan membentuk distribusi normal (simetris).

4.3 Aturan Praktis Penerapan TLP

Pertanyaan kunci adalah: Seberapa besar ukuran sampel (n) yang dianggap “cukup besar”?

\[Aturan Umum (Rule of Thumb):\] Aman untuk menerapkan Teorema Limit Pusat ketika ukuran sampel (n) lebih besar dari atau sama dengan 30 \((n \ge 30)\) .

  • Ketika \(n \ge 30\), distribusi sampling dijamin mendekati normal, terlepas dari bentuk populasi aslinya.

  • Jika n kecil (kurang dari 30), perkiraan normal menjadi tidak akurat karena sampel kecil memiliki variabilitas, kurang presisi, dan berisiko lebih besar menghasilkan sampel yang tidak biasa hanya karena kebetulan.

4.4 Kasus Pengecualian dan Persyaratan

Ada satu pengecualian penting terhadap aturan \(n \ge 30:\)

  • Jika distribusi populasi yang dijadikan sampel sudah berdistribusi normal sejak awal, maka distribusi sampling dari rata-rata sampel akan berdistribusi normal meskipun ukuran sampel (n) kecil (yaitu n < 30).

  • Oleh karena itu, jika Populasi Normal dan n < 30, Distribusi Sampling Normal.

  • Jika Populasi Tidak Normal dan n < 30, TLP Tidak Dapat diterapkan.

4.5 Kegunaan TLP

  • Teorema Limit Pusat sangat berguna untuk menganalisis kumpulan data besar.

  • Dengan mengetahui bahwa distribusi sampling akan normal, kita dapat menggunakan semua rumus dan metode yang terkait dengan distribusi normal (seperti Z-score dan tabel probabilitas) untuk menafsirkan data dan membuat kesimpulan statistik.


5 Sample Proportion

Video ini membahas konsep Distribusi Sampling Proporsi Sampel (Sampling Distribution of the Sample Proportion), yang dilambangkan dengan \(\hat{p}\) (P hat). Konsep ini merupakan bagian penting dari statistika inferensial dan berbeda dari distribusi sampling rata-rata \((\bar{x})\) karena fokusnya adalah pada variabel kategorikal atau probabilitas keberhasilan, bukan variabel kontinu. Materi ini menjelaskan bagaimana statistik proporsi yang dihitung dari berbagai sampel akan terdistribusi, serta syarat-syarat agar distribusi ini dapat diperkirakan sebagai distribusi normal menggunakan Teorema Limit Pusat (TLP).

5.1 Proporsi dan Notasi Dasar

Proporsi adalah fraksi atau bagian dari hasil yang “menguntungkan” (favorable outcomes) relatif terhadap keseluruhan. Hasil yang menguntungkan adalah variabel apa pun yang sedang dipelajari, seperti mata hijau, berat badan, atau skor tes.

Rumus Proporsi secara umum adalah: (Jumlah Hasil Menguntungkan) dibagi (Total Jumlah Hasil).

Dalam statistika, proporsi diwakili oleh simbol yang berbeda tergantung konteksnya:

  • Proporsi Populasi dilambangkan dengan P.

  • Proporsi Sampel dilambangkan dengan \(\hat{p}\).

5.2 Distribusi Sampling Proporsi \((\hat{p})\)

Distribusi Sampling dibentuk dengan mengambil sampel acak berulang kali dari populasi, menghitung \(\hat{p}\) untuk setiap sampel, dan kemudian memplot semua nilai \(\hat{p}\) tersebut ke dalam sebuah grafik.

Distribusi Sampling Proporsi Sampel adalah distribusi dari statistik \(\hat{p}\) yang dihasilkan dari proses pengambilan sampel berulang kali ini.

Nilai \(\hat{p}\) bervariasi dari satu sampel ke sampel lainnya karena adanya probabilitas dan sifat acak dalam pengambilan sampel.

5.3 Sifat-Sifat Jika Distribusi \(\hat{p}\) Normal

Jika distribusi sampling proporsi \((\hat{p})\) berdistribusi normal dan mengikuti Teorema Limit Pusat, maka akan memiliki sifat-sifat berikut:

  • Rata-Rata \((\mu_{\hat{p}})\): Rata-rata dari semua proporsi sampel \((\hat{p})\) yang digabungkan adalah sama dengan proporsi populasi sejati P \((\mu_{\hat{p}} = P)\).

  • Standard Error \((\sigma_{\hat{p}})\): Simpangan baku dari distribusi sampling proporsi disebut Standard Error dan dihitung menggunakan rumus:

\[\sigma_{\hat{p}} = \sqrt{\frac{P \cdot (1-P)}{n}}\]

Di mana n adalah ukuran sampel, P adalah proporsi keberhasilan, dan 1-P (sering dilambangkan Q) adalah proporsi kegagalan.

5.4 Rumus Standarisasi (Z-score) Proporsi

Untuk menghitung probabilitas (area di bawah kurva) yang terkait dengan nilai \(\hat{p}\) tertentu, kita dapat menggunakan rumus Z-score yang disesuaikan untuk proporsi:

\[Z = \frac{\hat{p} - P}{\sigma_{\hat{p}}} = \frac{\hat{p} - P}{\sqrt{\frac{P(1-P)}{n}}}\]

Dengan menghitung Z-score, kita dapat menggunakan tabel Z untuk mencari luasan area (probabilitas) yang diinginkan.

5.5 Syarat Penerapan Teorema Limit Pusat (TLP)

Syarat agar distribusi sampling proporsi \((\hat{p})\) dapat diperkirakan sebagai distribusi normal berbeda dengan syarat untuk rata-rata sampel \((\bar{x})\) yang hanya memerlukan \(n \ge\) 30.

Untuk proporsi \((\hat{p})\), Teorema Limit Pusat dapat diterapkan jika dua kondisi berikut terpenuhi secara simultan:

  • \(n \cdot P \ge 10:\) Jumlah perkiraan keberhasilan harus lebih besar dari atau sama dengan 10.

  • \(n \cdot (1 - P) \ge 10:\) Jumlah perkiraan kegagalan harus lebih besar dari atau sama dengan 10.

Jika kedua kondisi ini terpenuhi, maka TLP dapat diterapkan, distribusi \(\hat{p}\) diasumsikan normal, dan rumus Z-score di atas dapat digunakan.


6 Review Sampling Distribution

Video ini berfungsi sebagai ulasan dan perbandingan dari tiga konsep statistik yang saling terkait—Probabilitas Dasar, Distribusi Binomial, dan Distribusi Sampling Proporsi Sampel—melalui contoh kasus yang sama: pengambilan kelereng berwarna. Tujuannya adalah untuk menunjukkan metode perhitungan yang paling efisien dan tepat tergantung pada ukuran percobaan (n), mulai dari sampel kecil yang dihitung secara manual hingga sampel sangat besar yang memerlukan perkiraan Distribusi Normal berdasarkan Teorema Limit Pusat (TLP).

6.1 Kasus 1: Probabilitas Dasar (Jumlah Percobaan n Sangat Kecil)

Untuk jumlah percobaan (n) yang sangat kecil (misalnya, menarik kelereng sebanyak 3 kali), probabilitas dapat dihitung secara manual dengan membuat daftar seluruh ruang sampel yang mungkin.

Langkah: Hitung probabilitas keberhasilan (P) dan kegagalan (1-P) terlebih dahulu.

Contoh: Jika probabilitas kelereng hijau (P) adalah 0,4 dan kelereng biru (1-P) adalah 0,6.

Perhitungan: Tentukan semua kombinasi hasil yang memenuhi syarat (misalnya, mendapatkan minimal dua kelereng hijau). Probabilitas untuk setiap urutan dihitung dengan mengalikan probabilitas dari setiap peristiwa independen (misalnya, \(0,4 \times 0,4 \times 0,6\)).

Hasil Akhir: Jumlahkan probabilitas dari semua urutan yang memenuhi syarat tersebut. Metode ini menghasilkan probabilitas eksak, tetapi menjadi tidak praktis seiring bertambahnya jumlah percobaan.

6.2 Kasus 2: Distribusi Binomial (Jumlah Percobaan n Sedang)

Ketika jumlah percobaan (n) bertambah menjadi ukuran sedang (misalnya, menarik kelereng sebanyak 5 kali), metode ruang sampel menjadi tidak efisien. Untuk mendapatkan probabilitas eksak dari jumlah keberhasilan (k) tertentu, digunakan Rumus Distribusi Binomial.

Penerapan: Jika pertanyaan meminta probabilitas “minimal” atau “paling banyak” sejumlah keberhasilan, kita perlu menggunakan rumus Binomial secara berulang untuk setiap nilai k yang termasuk.

Contoh: Untuk mencari probabilitas minimal 2 kelereng hijau dari 5 tarikan, kita harus menghitung secara terpisah probabilitas untuk k=2, k=3, k=4, dan k=5, lalu menjumlahkan hasilnya. Metode ini juga menghasilkan probabilitas eksak, tetapi mulai memakan waktu jika jumlah k yang harus dihitung banyak.

6.3 Kasus 3: Distribusi Sampling Proporsi Sampel (Jumlah Percobaan n Besar)

Untuk jumlah percobaan (n) yang sangat besar (misalnya, menarik kelereng sebanyak 100 kali), baik metode ruang sampel maupun rumus binomial berulang menjadi tidak mungkin dilakukan. Dalam kasus ini, kita menggunakan Distribusi Sampling Proporsi sebagai perkiraan (approximate probability) menggunakan Distribusi Normal.

6.3.1 Verifikasi Syarat TLP

Sebelum menggunakan perkiraan Normal, kita harus memastikan Teorema Limit Pusat (TLP) dapat diterapkan untuk proporsi. Dua syarat harus terpenuhi:

  • Syarat Keberhasilan: Jumlah keberhasilan yang diharapkan \((n \cdot P)\) harus \(\ge 10.\)

  • Syarat Kegagalan: Jumlah kegagalan yang diharapkan \((n \cdot (1-P))\) harus \(\ge 10.\)

Jika kedua syarat ini terpenuhi (seperti contoh \(100 \times 0,4 = 40\) dan \(100 \times 0,6 = 60\)), maka distribusi \(\hat{p}\) dapat diasumsikan Normal.

6.3.2 Perhitungan dengan Z-score

Setelah TLP dipastikan berlaku, perhitungan dilakukan menggunakan Rumus Standarisasi Z-score untuk proporsi:

\[Z = \frac{\hat{p} - P}{\sqrt{\frac{P(1-P)}{n}}}\]

Langkah-langkah:

  1. Tentukan proporsi sampel minimal \((\hat{p})\) yang dicari (misalnya, 35 kelereng hijau dari 100, sehingga \(\hat{p} = 0,35\)).

  2. Hitung Skor Z menggunakan rumus di atas.

  3. Gunakan Tabel Z untuk menemukan luasan area (probabilitas) yang terkait dengan Skor Z.

  4. Hitung probabilitas yang diminta (misalnya, luas ke kanan untuk “setidaknya 35”) dengan mengurangkan luas yang ditemukan dari total area kurva (100% atau 1).

Catatan Penting: Metode ini selalu menghasilkan probabilitas perkiraan (approximate probability), yang biasanya cukup akurat untuk tujuan statistik tingkat dasar.


7 Referensi


LS0tDQp0aXRsZTogIlByb2JhYmlsaXR5IERpc3RyaWJ1dGlvbiINCnN1YnRpdGxlOiAiRXhlcmNpc2VzIH4gV2VlayAxMSINCmF1dGhvcjogIk11aGFtbWFkIE5hYmlsIEtoYWlyaWwgQW5hbSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCIgICMgQXV0byBkaXNwbGF5cyBjdXJyZW50IGRhdGUNCg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAgICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBjc3M6ICJjdXN0b20uY3NzIiAgICAgICAgICAgICAgICAgICAgICMgPC0tLSBQQU5HR0lMIEZJTEUgQ1NTIERJIFNJTkkNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZSAgICAgICAgICAgICAgICAgIyBFbWJlZCBhbGwgcmVzb3VyY2VzDQogICAgdGh1bWJuYWlsczogdHJ1ZSAgICAgICAgICAgICAgICAgICAgICMgU2hvdyBpbWFnZSB0aHVtYm5haWxzDQogICAgbGlnaHRib3g6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICMgRW5hYmxlIGNsaWNrLXRvLXpvb20gaW1hZ2VzDQogICAgZ2FsbGVyeTogdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICMgR3JvdXAgaW1hZ2VzIGludG8gZ2FsbGVyeQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZSAgICAgICAgICAgICAgICAjIE51bWJlciBhbGwgc2VjdGlvbnMNCiAgICBsaWJfZGlyOiBsaWJzICAgICAgICAgICAgICAgICAgICAgICAgIyBTYXZlIEpTL0NTUyBsaWJyYXJpZXMNCiAgICBkZl9wcmludDogInBhZ2VkIiAgICAgICAgICAgICAgICAgICAgIyBQYWdlZCBkYXRhIGZyYW1lcw0KICAgIGNvZGVfZm9sZGluZzogInNob3ciICAgICAgICAgICAgICAgICAjIEV4cGFuZGFibGUgY29kZSBibG9ja3MNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMgICAgICAgICAgICAgICAgICAgIyBBZGQgYnV0dG9uIHRvIGRvd25sb2FkIFIgY29kZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkgIyBUYW1iYWhrYW4gbWVzc2FnZS93YXJuaW5nPUZBTFNFDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocm1kZm9ybWF0cykgIyBPcHRpb25hbCwgamlrYSBpbmdpbiBtZW1hc3Rpa2FuIHBhY2thZ2UgdGVybG9hZA0KDQpgYGANCg0KLS0tDQoNCjxkaXYgY2xhc3M9InByb2ZpbGUtY29udGFpbmVyIj4NCiAgDQogIDxpbWcgDQogICAgc3JjPSJDOi9Vc2Vycy9JeWFuL0Rvd25sb2Fkcy9Qcm9iYWJpbGl0eSBEaXN0cmlidXRpb24gd2VlayAxMS9NeUZvdG8uanBnLmpwZyIgDQogICAgYWx0PSJQcm9maWxlIFBpY3R1cmUiIA0KICAgIGNsYXNzPSJwcm9maWxlLXBpYy1uZXciIA0KICAgIHN0eWxlPSINCiAgICAgIHdpZHRoOiAxODBweCAhaW1wb3J0YW50OyANCiAgICAgIGhlaWdodDogMTgwcHggIWltcG9ydGFudDsgDQogICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsgDQogICAgICBib3JkZXI6IDRweCBzb2xpZCAjMzQ5OGRiICFpbXBvcnRhbnQ7IA0KICAgICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSg1MiwgMTUyLCAyMTksIDAuNykgIWltcG9ydGFudDsNCiAgICAgIG9iamVjdC1maXQ6IGNvdmVyOw0KICAgICAgbWFyZ2luLWJvdHRvbTogNXB4Ow0KICAgICINCiAgLz4NCg0KICA8ZGl2IGNsYXNzPSJwcm9maWxlLW5hbWUiPk11aGFtbWFkIE5hYmlsIEtoYWlyaWwgQW5hbTwvZGl2Pg0KICA8ZGl2IGNsYXNzPSJwcm9maWxlLXByb2RpIj5EYXRhIFNjaWVuY2UgU3R1ZGVudDwvZGl2Pg0KICA8ZGl2IGNsYXNzPSJwcm9maWxlLWluc3RhbnNpIj5JbnN0aXR1dCBUZWtub2xvZ2kgU2FpbnMgQmFuZHVuZyAoSVRTQik8L2Rpdj4NCiAgDQogIDxicj4gPC9kaXY+DQoNCi0tLQ0KDQo8ZGl2IGNsYXNzPSJleHBsYW5hdGlvbi1ib3giPg0KDQojIEludHJvZHVjdGlvbg0KDQpQcm9iYWJpbGl0YXMgdGlkYWsgaGFueWEgbWVtYmFudHUga2l0YSBtZW1haGFtaSBzZWJlcmFwYSBiZXNhciBrZW11bmdraW5hbiBzdWF0dSBwZXJpc3Rpd2EgdGVyamFkaSwgdGV0YXBpIGp1Z2EgbWVtYmVudHVrIGRhc2FyIGRhcmkgYmFueWFrIG1ldG9kZSBzdGF0aXN0aWsgeWFuZyBkaWd1bmFrYW4gdW50dWsgcGVuZ2FtYmlsYW4ga2VwdXR1c2FuLiBLZXRpa2Egc3VhdHUgcHJvc2VzIGF0YXUgZWtzcGVyaW1lbiBtZW5naGFzaWxrYW4gYmVyYmFnYWkgaGFzaWwsIGtpdGEgbWVuZ2d1bmFrYW4gdmFyaWFiZWwgYWNhayB1bnR1ayBtZXJlcHJlc2VudGFzaWthbiBoYXNpbCB0ZXJzZWJ1dCBkYW4gZGlzdHJpYnVzaSBwcm9iYWJpbGl0YXMgdW50dWsgbWVuamVsYXNrYW4gYmFnYWltYW5hIHByb2JhYmlsaXRhcyBkaWRpc3RyaWJ1c2lrYW4ga2Ugc2V0aWFwIG5pbGFpIHlhbmcgbXVuZ2tpbi4gTWVtYWhhbWkgYmVudHVrIGRhbiBzaWZhdCBkaXN0cmlidXNpIHNhbmdhdCBwZW50aW5nIGthcmVuYSBoYWwgaW5pIG1lbmVudHVrYW4gcGVyaWxha3UgZGF0YSwgY2FyYSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcywgc2VydGEgY2FyYSBtZW1idWF0IHByZWRpa3NpLiBNdWxhaSBkYXJpIGRpc3RyaWJ1c2kgdW50dWsgdmFyaWFiZWwga29udGludSBoaW5nZ2EgcGVyaWxha3Ugc3RhdGlzdGlrIHNlcGVydGkgcmF0YS1yYXRhIHNhbXBlbCwgZGlzdHJpYnVzaSBwcm9iYWJpbGl0YXMgbWVuamFkaSBpbnRpIGRhcmkgc3RhdGlzdGlrYSBpbmZlcmVuc2lhbC4NCg0KTWF0ZXJpIGluaSBha2FuIG1lbWFuZHUgQW5kYSBtZWxhbHVpIGJlYmVyYXBhIGtvbnNlcCB1dGFtYToNCg0KKiBWYXJpYWJlbCBBY2FrIEtvbnRpbnUsIHlhbmcgbWVuZ2dhbWJhcmthbiBrZW11bmdraW5hbiBuaWxhaSBwYWRhIHJlbnRhbmcga29udGludS4NCg0KKiBEaXN0cmlidXNpIFNhbXBsaW5nLCB5YW5nIG1ld2FraWxpIGRpc3RyaWJ1c2kgc3RhdGlzdGlrIHNhbXBlbCBzZXBlcnRpIHJhdGEtcmF0YSBzYW1wZWwgYXRhdSBwcm9wb3JzaSBzYW1wZWwuDQoNCiogVGVvcmVtYSBCYXRhcyBQdXNhdCAoQ0xUKSwgc2FsYWggc2F0dSBoYXNpbCB0ZXJwZW50aW5nIGRhbGFtIHN0YXRpc3Rpa2EsIG1lbmplbGFza2FuIG1lbmdhcGEgZGlzdHJpYnVzaSByYXRhLXJhdGEgc2FtcGVsIGNlbmRlcnVuZyBtZW5kZWthdGkgZGlzdHJpYnVzaSBub3JtYWwsIHRlcmxlcGFzIGRhcmkgYmVudHVrIGRpc3RyaWJ1c2kgcG9wdWxhc2kgYXNhbG55YS4NCg0KKiBEaXN0cmlidXNpIFByb3BvcnNpIFNhbXBlbCwgYmFueWFrIGRpZ3VuYWthbiBkYWxhbSBhbmFsaXNpcyBzdXJ2ZWkgZGFuIHBlbmVsaXRpYW4ga3VhbnRpdGF0aWYuDQoNClNldGlhcCBiYWdpYW4gZGlsZW5na2FwaSBkZW5nYW4gcGVuamVsYXNhbiB2aWRlbyB1bnR1ayBtZW1wZXJkYWxhbSBwZW1haGFtYW4ga29uc2VwdHVhbC4gRGVuZ2FuIG1lbmd1YXNhaSB0b3Bpay10b3BpayBpbmksIEFuZGEgYWthbiBsZWJpaCBzaWFwIHVudHVrIG1lbmdhbmFsaXNpcyBkYXRhLCBtZW1iYW5ndW4gbW9kZWwgc3RhdGlzdGlrLCBkYW4gbWVuYXJpayBrZXNpbXB1bGFuIGJlcmRhc2Fya2FuIHByaW5zaXAtcHJpbnNpcCBwcm9iYWJpbGlzdGlrIHlhbmcga3VhdC4NCg0KPC9kaXY+ICANCg0KLS0tDQoNCjxkaXYgY2xhc3M9ImV4cGxhbmF0aW9uLWJveCI+DQoNCiMgQ291bnRpbnVvdXMgUmFuZG9tDQoNClRvcGlrIGluaSBtZXJ1cGFrYW4gZm9uZGFzaSB2aXRhbCBkYWxhbSBzdGF0aXN0aWthIGluZmVyZW5zaWFsIGRhbiBpbG11IGRhdGEsIGJlcmZ1bmdzaSBzZWJhZ2FpIGtlcmFuZ2thIGtlcmphIHVudHVrIG1lbW9kZWxrYW4ga2V0aWRha3Bhc3RpYW4gKHVuY2VydGFpbnR5KSBkYW4gbWVtYnVhdCBrZXB1dHVzYW4gYmVyZGFzYXJrYW4gZGF0YS4gVmlkZW8gaW5pIHRpZGFrIGhhbnlhIG1lbnlhamlrYW4gdGluamF1YW4gdGVvcmV0aXMsIHRldGFwaSBqdWdhIG1lbnlvcm90aSBhcGxpa2FzaSBwcmFrdGlzIGRhcmkgYmVyYmFnYWkgamVuaXMgZGlzdHJpYnVzaSBtdWxhaSBkYXJpIGRpc2tyaXQgaGluZ2dhIGtvbnRpbnUgeWFuZyBkaWd1bmFrYW4gdW50dWsgbWVtYWhhbWkgcGVyaWxha3UgZGF0YS4gRm9rdXMgdXRhbWEgZGlsZXRha2thbiBwYWRhIHBlbWFoYW1hbiBwZXJiZWRhYW4gbWVuZGFzYXIgYW50YXJhIFZhcmlhYmVsIERpc2tyaXQgZGFuIFZhcmlhYmVsIEtvbnRpbnUsIHNlcnRhIG1ldG9kZSB2aXN1YWxpc2FzaSBkYW4gcGVyaGl0dW5nYW4gcHJvYmFiaWxpdGFzIHlhbmcgc2VzdWFpIHVudHVrIG1hc2luZy1tYXNpbmcuDQoNCjxjZW50ZXI+DQo8aWZyYW1lIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvWnlVelJWYTZoQ00iIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiB3aWR0aD0iNzY4IiBoZWlnaHQ9IjQwMHB4IiBkYXRhLWV4dGVybmFsPSIxIj4gPC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgVmFyaWFiZWwgRGlza3JpdCAoRGlzY3JldGUgVmFyaWFibGVzKQ0KDQpWaWRlbyBkaWF3YWxpIGRlbmdhbiB0aW5qYXVhbiBzaW5na2F0IG1lbmdlbmFpIHZhcmlhYmVsIGRpc2tyaXQgc2ViYWdhaSBkYXNhciBwZW1haGFtYW4uDQoNCioqRGVmaW5pc2k6KiogVmFyaWFiZWwgZGlza3JpdCBhZGFsYWggdmFyaWFiZWwgeWFuZyBoYW55YSBkYXBhdCBtZW5nYW1iaWwgbmlsYWkgeWFuZyBkYXBhdCBkaWhpdHVuZyAoY291bnRhYmxlIG51bWJlciBvZiB2YWx1ZXMpLg0KDQoqKlNpZmF0OioqIFNpZmF0bnlhIHRlcmJhdGFzIGF0YXUgdGVyaGluZ2dhIChmaW5pdGUpLCBtZXNraXB1biBuaWxhaSB0ZXJzZWJ1dCBiaXNhIHNhamEgbWVsaWJhdGthbiBkZXNpbWFsIChtaXNhbG55YSwganVtbGFoIHVhbmcgZGkgcmVrZW5pbmcgYXRhdSBza29yIHVqaWFuKSBzZWxhbWEgbmlsYWlueWEgbWFzaWggZGFwYXQgZGloaXR1bmcuDQoNCioqQ29udG9oOioqDQoNCiogSnVtbGFoIHNpc2kgSGVhZHMgc2FhdCBtZWxlbXBhciBrb2luLg0KKiBKdW1sYWgga2VsZXJlbmcgYmlydSB5YW5nIGRpYW1iaWwuDQoqIE5pbGFpIHNpc3dhIHBhZGEgdWppYW4uDQoqIEp1bWxhaCBhbmFrIGRhbGFtIHNhdHUga2VsdWFyZ2EgKG1pc2FsbnlhIDAsIDEsIDIsIDMsIGRzdC4sIHRpZGFrIG11bmdraW4gMC43MyBhbmFrKS4NCg0KIyMgVmFyaWFiZWwgS29udGludSAoQ29udGludW91cyBWYXJpYWJsZXMpDQoNCkJlcmJlZGEgZGVuZ2FuIHZhcmlhYmVsIGRpc2tyaXQsIHZhcmlhYmVsIGtvbnRpbnUgbWVtaWxpa2kgc2lmYXQgeWFuZyB0YWsgdGVyYmF0YXMuDQoNCioqRGVmaW5pc2k6KiogVmFyaWFiZWwga29udGludSBhZGFsYWggdmFyaWFiZWwgeWFuZyBkYXBhdCBtZW5nYW1iaWwgbmlsYWkgbnVtZXJpayBhcGEgcHVuIGRhbGFtIHJlbnRhbmcgdGVydGVudHUuDQoNCioqU2lmYXQ6KiogRGF0YSB1bnR1ayB2YXJpYWJlbCBrb250aW51IGRpcGVyb2xlaCBtZWxhbHVpIHBlbmd1a3VyYW4gKG1lYXN1cmluZykgZGFuIGJ1a2FuIHBlcmhpdHVuZ2FuIChjb3VudGluZykuIE9sZWgga2FyZW5hIGl0dSwgbmlsYWlueWEgdGlkYWsgdGVyYmF0YXMgKGluZmluaXRlKSBkYW4gdGlkYWsgZGFwYXQgZGloaXR1bmcgKHVuY291bnRhYmxlKS4NCg0KKipDb250b2g6KioNCg0KKiBVc2lhOiBKaWthIGRpcGVyaWtzYSBsZWJpaCBkZWthdCwgc2VzZW9yYW5nIHlhbmcgYmVydXNpYSAyMyB0YWh1biBiaXNhIGphZGkgMjMgdGFodW4gNiBidWxhbiwgMiBoYXJpLCAzIGRldGlrLCA4IG1pbGlkZXRpaywgZGFuIHNldGVydXNueWEgaGluZ2dhIHRhayB0ZXJoaW5nZ2EuDQoNCiogQmVyYXQ6IEJlcmF0IHNlc2VvcmFuZyBkYXBhdCBkaXVrdXIgaGluZ2dhIHRpdGlrIGRlc2ltYWwgYXBhIHB1biAobWlzYWxueWEgMTUwLjMwNTQ4Mi4uLiksIHNlaGluZ2dhIGtlbXVuZ2tpbmFubnlhIHRpZGFrIHRlcmJhdGFzLg0KDQoqIFN1aHUsIGphcmFrLCBkYW4gd2FrdHUganVnYSBtZXJ1cGFrYW4gY29udG9oIHZhcmlhYmVsIGtvbnRpbnUuDQoNCiMjIFJlcHJlc2VudGFzaSBEaXN0cmlidXNpIFByb2JhYmlsaXRhcw0KDQpEaXN0cmlidXNpIHByb2JhYmlsaXRhcyBkYXJpIGtlZHVhIGplbmlzIHZhcmlhYmVsIGluaSBkaXJlcHJlc2VudGFzaWthbiBkZW5nYW4gYmVyYmVkYSBzZWNhcmEgdmlzdWFsLg0KDQotLS0NCg0KYGBge3IgY29tcGFyaXNvbl90YWJsZV9jbGVhbiwgZWNobz1GQUxTRSwgcmVzdWx0cz0nYXNpcycsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5IHlhbmcgZGlwZXJsdWthbiAobWVzc2FnZT1GQUxTRSBtZW5naGlsYW5na2FuIHBlc2FuIG1hc2tpbmcpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShkcGx5cikNCg0KIyAxLiBNZW1idWF0IERhdGEgRnJhbWUNCmRhdGFfcGVyYmFuZGluZ2FuIDwtIGRhdGEuZnJhbWUoDQogIFZhcmlhYmVsID0gYygiKipEaXNrcml0KioiLCAiKipLb250aW51KioiKSwNCiAgUmVwcmVzZW50YXNpLlZpc3VhbCA9IGMoIkJhciBDaGFydCAoRGlhZ3JhbSBCYXRhbmcpIiwgIkhpc3RvZ3JhbSBhdGF1IERlbnNpdHkgQ3VydmUgKEt1cnZhIEtlcGFkYXRhbikiKSwNCiAgQ2lyaS5LaGFzID0gYygiU2V0aWFwIGVsZW1lbiBkaXRhbXBpbGthbiBzZWJhZ2FpIGVudGl0YXMgaW5kaXZpZHVhbCB5YW5nIG1lbnVuanVra2FuIGhhc2lsIHlhbmcgZGFwYXQgZGloaXR1bmcuIEdyYWZpayBiYXRhbmcgbWVtaWxpa2kgY2VsYWggZGkgYW50YXJhIHNldGlhcCBiYXRhbmcgdW50dWsgbWVudW5qdWtrYW4gZGlza29udGludWl0YXMuIiwgDQogICAgICAgICAgICAgICAgIkhpc3RvZ3JhbSB0aWRhayBtZW1pbGlraSBjZWxhaCBkaSBhbnRhcmEgc2V0aWFwIGJhdGFuZyB1bnR1ayBtZW5jZXJtaW5rYW4ga2VzaW5hbWJ1bmdhbiAoY29udGludWl0eSkgZGF0YS4gS3VydmEga2VwYWRhdGFuIChkZW5zaXR5IGN1cnZlKSBqdWdhIGRpZ3VuYWthbiB1bnR1ayBtZXdha2lsaSB2YXJpYWJlbCBhY2FrIGtvbnRpbnUuIikNCikNCg0KIyAyLiBNZW1idWF0IFRhYmVsIHlhbmcgSW5kYWggbWVuZ2d1bmFrYW4ga2FibGVFeHRyYQ0KZGF0YV9wZXJiYW5kaW5nYW4gJT4lDQogIGtibCgNCiAgICBjYXB0aW9uID0gIlBlcmJhbmRpbmdhbiBSZXByZXNlbnRhc2kgVmFyaWFiZWwgRGlza3JpdCB2cy4gS29udGludSIsDQogICAgY29sLm5hbWVzID0gYygiVmFyaWFiZWwiLCAiUmVwcmVzZW50YXNpIFZpc3VhbCIsICJDaXJpIEtoYXMiKSwNCiAgICBhbGlnbiA9ICdsY2MnIA0KICApICU+JQ0KICBrYWJsZV9zdHlsaW5nKA0KICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLA0KICAgIGZ1bGxfd2lkdGggPSBGLCAjIE1lbmdhdGFzaSBrb25mbGlrIHN0eWxpbmcNCiAgICBmb250X3NpemUgPSAxMg0KICApICU+JQ0KICAjIE1lbmFtYmFoa2FuIHdhcm5hIGhlYWRlciBzZXBlcnRpIGRpIFJQdWJzDQogIHJvd19zcGVjKDAsIGJhY2tncm91bmQgPSAiIzM0OThkYiIsIGNvbG9yPSJ3aGl0ZSIpDQpgYGANCg0KLS0tDQoNCiMjIyBDb250b2ggQmFyY2hhcnQgdW50dWsgVmFyaWFiZWwgRGlza3JpdA0KDQpgYGB7ciBiYXJjaGFydF9kaXNjcmV0ZSwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NH0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KGdncGxvdDIpDQoNCiMgMS4gRGF0YSBWYXJpYWJlbCBEaXNrcml0IChKdW1sYWggQW5hayBwZXIgS2VsdWFyZ2EpDQpkYXRhX2FuYWsgPC0gZGF0YS5mcmFtZSgNCiAgSnVtbGFoX0FuYWsgPSBmYWN0b3IoYygwLCAxLCAyLCAzLCA0KSksICMgVmFyaWFiZWwgRGlza3JpdCAoZGlidWF0IGZha3RvcikNCiAgRnJla3VlbnNpID0gYyg1LCAxMiwgMTgsIDksIDMpICAgICAgICAgICMgRnJla3VlbnNpIChqdW1sYWgga2VsdWFyZ2EpDQopDQoNCiMgMi4gTWVtYnVhdCBEaWFncmFtIEJhdGFuZw0KZ2dwbG90KGRhdGFfYW5haywgYWVzKHggPSBKdW1sYWhfQW5haywgeSA9IEZyZWt1ZW5zaSkpICsNCiAgZ2VvbV9jb2woZmlsbCA9ICIjMmVjYzcxIiwgd2lkdGggPSAwLjcpICsgIyBnZW9tX2NvbCBtZW1idWF0IGJhdGFuZyBiZXJkYXNhcmthbiB0aW5nZ2kgRnJla3VlbnNpDQogIGxhYnMoDQogICAgdGl0bGUgPSAiRnJla3VlbnNpIEp1bWxhaCBBbmFrIHBlciBLZWx1YXJnYSIsDQogICAgeCA9ICJKdW1sYWggQW5hayIsDQogICAgeSA9ICJGcmVrdWVuc2kgKEp1bWxhaCBLZWx1YXJnYSkiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICAjIFRhbWJhaGthbiBsYWJlbCBkaSBhdGFzIHNldGlhcCBiYXRhbmcNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IEZyZWt1ZW5zaSksIHZqdXN0ID0tMC41LHNpemU9NCkNCg0KYGBgDQoNCi0tLQ0KDQpEaWFncmFtIEJhdGFuZyBkaWd1bmFrYW4gdW50dWsgbWVyZXByZXNlbnRhc2lrYW4gdmFyaWFiZWwgZGlza3JpdCBrYXJlbmEgc2VjYXJhIHZpc3VhbCBtZW5kdWt1bmcgc2lmYXQtc2lmYXQgdXRhbWEgZGFyaSB2YXJpYWJlbCB0ZXJzZWJ1dC4NCg0KMS4gUmVwcmVzZW50YXNpIEVudGl0YXMgSW5kaXZpZHVhbA0KDQpWYXJpYWJlbCBkaXNrcml0IGFkYWxhaCB2YXJpYWJlbCB5YW5nIG5pbGFpbnlhIGRhcGF0IGRpaGl0dW5nIChjb3VudGFibGUpLiBEaWFncmFtIGJhdGFuZyBtZXJlcHJlc2VudGFzaWthbiBzZXRpYXAga2VtdW5na2luYW4gaGFzaWwgKG1pc2FsbnlhLCAwIGFuYWssIDEgYW5haywgMiBhbmFrKSBzZWJhZ2FpIGVudGl0YXMgYXRhdSBiYXRhbmcgaW5kaXZpZHUuIEluaSBzZXN1YWkgZGVuZ2FuIHNpZmF0IGRhdGEgZGlza3JpdCBkaSBtYW5hIG5pbGFpLW5pbGFpIGRpIGFudGFyYSBiYXRhbmcgdGlkYWsgbXVuZ2tpbiB0ZXJqYWRpIChtaXNhbG55YSwgdGlkYWsgYWRhIG5pbGFpIDEuNSBhbmFrKS4NCg0KMi4gQWRhbnlhIENlbGFoIChHYXBzKQ0KDQpDaXJpIGtoYXMgZGlhZ3JhbSBiYXRhbmfigJR5YW5nIG1lbWJlZGFrYW5ueWEgZGFyaSBoaXN0b2dyYW3igJRhZGFsYWggYWRhbnlhIGNlbGFoIGRpIGFudGFyYSBzZXRpYXAgYmF0YW5nLiBDZWxhaCBpbmkgcGVudGluZyBrYXJlbmE6DQoNCiogTWVudW5qdWtrYW4gRGlza29udGludWl0YXM6IENlbGFoIHNlY2FyYSB2aXN1YWwgbWVudW5qdWtrYW4gYmFod2EgdGlkYWsgYWRhIGtlc2luYW1idW5nYW4gKGNvbnRpbnVpdHkpIGFudGFyIGthdGVnb3JpLiBBcnRpbnlhLCBuaWxhaSB2YXJpYWJlbCBtZWxvbmNhdCBkYXJpIDEga2UgMiwgdGFucGEgbmlsYWkgZGkgYW50YXJhbnlhLg0KDQoqIE1lbmNlcm1pbmthbiBQZXJoaXR1bmdhbjogS2FyZW5hIHZhcmlhYmVsIGRpc2tyaXQgZGlkYXBhdGthbiBtZWxhbHVpIHBlcmhpdHVuZ2FuIChjb3VudGluZykgZGFuIGJ1a2FuIHBlbmd1a3VyYW4sIHJlcHJlc2VudGFzaSBkZW5nYW4gY2VsYWggaW5pIHBhbGluZyB0ZXBhdCB1bnR1ayBtZW5nZ2FtYmFya2FuIGhhc2lsIHlhbmcgZGFwYXQgZGloaXR1bmcgKGNvdW50YWJsZSBvdXRjb21lcykuDQoNCiMjIyBDb250b2ggSGlzdG9ncmFtIHVudHVrIFZhcmlhYmVsIEtvbnRpbnUNCg0KLS0tDQoNCmBgYHtyLGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCiMgLS0tIDEuIE1lbXVhdCBQYWtldCB5YW5nIERpcGVybHVrYW4gLS0tDQojIEtpdGEgaGFueWEgYnV0dWggZ2dwbG90MiB1bnR1ayBwbG90IHN0YXRpcyB5YW5nIHJhcGkNCmxpYnJhcnkoZ2dwbG90MikNCg0KIyAtLS0gMi4gRGF0YSBUaW5nZ2kgQmFkYW4gTWFoYXNpc3dhIChLb250aW51IGRhbiBSZWFsaXN0aXMpIC0tLQ0KIyBEaXN0cmlidXNpIG5vcm1hbCB1bnR1ayBtZW5zaW11bGFzaWthbiB0aW5nZ2kgYmFkYW4gbWFudXNpYQ0Kc2V0LnNlZWQoMzAwKSANCmRhdGFfdGluZ2dpX2JhZGFuIDwtIHJub3JtKA0KICBuID0gNTAwLCAgICAgIyBKdW1sYWggZGF0YTogNTAwIG1haGFzaXN3YQ0KICBtZWFuID0gMTY4LCAgIyBSYXRhLXJhdGEgdGluZ2dpOiAxNjggY20NCiAgc2QgPSA4ICAgICAgICMgU2ltcGFuZ2FuIGJha3U6IDggY20gKHNlYmFyYW4gZGF0YSkNCikgDQpkYXRhX2ZyYW1lX3RpbmdnaSA8LSBkYXRhLmZyYW1lKFRpbmdnaSA9IGRhdGFfdGluZ2dpX2JhZGFuKQ0KDQojIC0tLSAzLiBNZW1idWF0IEhpc3RvZ3JhbSBEZW5zaXR5IFBsb3QgLS0tDQpwbG90X3RpbmdnaV9iYWRhbiA8LSBnZ3Bsb3QoZGF0YV9mcmFtZV90aW5nZ2ksIGFlcyh4ID0gVGluZ2dpKSkgKw0KICANCiAgIyBhKSBIaXN0b2dyYW0gKEJhdGFuZyBIaWphdSkNCiAgZ2VvbV9oaXN0b2dyYW0oDQogICAgYWVzKHkgPSBhZnRlcl9zdGF0KGRlbnNpdHkpKSwgIyBTa2FsYSBZIG1lbmdndW5ha2FuIERlbnNpdHkNCiAgICBiaW53aWR0aCA9IDQsICAgICAgICAgICAgICAgICAjIFNldGlhcCBiYXRhbmcgbWV3YWtpbGkgcmVudGFuZyA0IGNtDQogICAgZmlsbCA9ICIjMWFiYzljIiwgICAgICAgICAgICAgIyBXYXJuYSBIaWphdSBLZWJpcnVhbiAoQXF1YSkNCiAgICBjb2xvciA9ICJ3aGl0ZSIsDQogICAgYWxwaGEgPSAwLjcgICAgICAgICAgICAgICAgICAgDQogICkgKw0KICANCiAgIyBiKSBLdXJ2YSBEZW5zaXR5IChHYXJpcyBMb25jZW5nIFNpbWV0cmlzKQ0KICBnZW9tX2RlbnNpdHkoDQogICAgY29sb3IgPSAiIzM0NDk1ZSIsICAgICAgICAgICAgIyBHYXJpcyBBYnUtYWJ1IEdlbGFwIChEYXJrIEJsdWUtR3JleSkNCiAgICBsaW5ld2lkdGggPSAxLjIgICAgICAgICAgICAgICANCiAgKSArDQogIA0KICAjIGMpIEp1ZHVsIGRhbiBMYWJlbCB5YW5nIEplbGFzDQogIGxhYnMoDQogICAgdGl0bGUgPSAiSGlzdG9ncmFtIERlbnNpdHkgUGxvdCBUaW5nZ2kgQmFkYW4gTWFoYXNpc3dhIiwNCiAgICBzdWJ0aXRsZSA9IHBhc3RlKCJSYXRhLXJhdGEgVGluZ2dpOiIsIHJvdW5kKG1lYW4oZGF0YV90aW5nZ2lfYmFkYW4pLCAxKSwgImNtIiksDQogICAgeCA9ICJSZW50YW5nIFRpbmdnaSBCYWRhbiAoY20pIiwNCiAgICB5ID0gIkRlbnNpdHkgKEtlcGFkYXRhbikiDQogICkgKw0KICANCiAgIyBkKSBUZW1hIFRhbXBpbGFuIFJhcGkNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkNCiAgKQ0KDQojIC0tLSA0LiBUYW1waWxrYW4gSGFzaWwgLS0tDQpwbG90X3RpbmdnaV9iYWRhbg0KYGBgDQoNCi0tLQ0KDQpWYXJpYWJlbCBrb250aW51IHNlcGVydGkgdGluZ2dpIGJhZGFuIG1haGFzaXN3YSBzYW5nYXQgY29jb2sgZGl2aXN1YWxpc2FzaWthbiBtZW5nZ3VuYWthbiBIaXN0b2dyYW0ga2FyZW5hIGJlYmVyYXBhIGFsYXNhbiB1dGFtYSB5YW5nIGJlcmh1YnVuZ2FuIGRlbmdhbiBzaWZhdCBkYXNhciBkYXRhIHRlcnNlYnV0Lg0KDQpUaW5nZ2kgYmFkYW4gYWRhbGFoIGNvbnRvaCBrbGFzaWsgZGFyaSBWYXJpYWJlbCBLb250aW51IChkYXRhIHlhbmcgZGl1a3VyKSwgYnVrYW4gZGloaXR1bmcuDQoNCjEuIFNpZmF0IERhdGEgS29udGludSAoTmlsYWkgVGFrIFRlcmJhdGFzKQ0KDQoqIFZhcmlhYmVsIGtvbnRpbnUgZGFwYXQgbWVuZ2FtYmlsIG5pbGFpIGFwYSBwdW4gZGFsYW0gcmVudGFuZyB0ZXJ0ZW50dSwgdGVybWFzdWsgYW5na2EgZGVzaW1hbCB5YW5nIHRhayB0ZXJiYXRhcy4NCg0KKiBDb250b2g6IFRpbmdnaSBiYWRhbiBtYWhhc2lzd2EgdGlkYWsgaGFueWEgMTcwIGNtIGF0YXUgMTcxIGNtLiBUaW5nZ2kgeWFuZyBtdW5na2luIGFkYWxhaCAxNzAuNSBjbSwgMTcwLjUzIGNtLCAxNzAuNTMyMSBjbSwgZGFuIHNldGVydXNueWEuDQoNCiogSmlrYSBraXRhIG1lbmNvYmEgbWVtYnVhdCBiYXRhbmcgdGVycGlzYWggdW50dWsgc2V0aWFwIG5pbGFpIHRpbmdnaSB5YW5nIHVuaWssIGtpdGEgYWthbiBtZW1pbGlraSByaWJ1YW4gYmF0YW5nIHNhbmdhdCBwZW5kZWsgeWFuZyB0aWRhayBtZW1iZXJpa2FuIGluZm9ybWFzaSBiZXJhcnRpLg0KDQoyLiBLZWJ1dHVoYW4gUGVuZ2Vsb21wb2thbiAoQmlucykNCg0KSGlzdG9ncmFtIG1lbmdhdGFzaSBtYXNhbGFoIG5pbGFpIHlhbmcgdGFrIHRlcmJhdGFzIGluaSBkZW5nYW4gbWVtYnVhdCBCaW5zIChLZXJhbmphbmcpIGF0YXUgUmVudGFuZyBJbnRlcnZhbCB5YW5nIHNhbWEgbGViYXJueWEuDQoNCiogSGlzdG9ncmFtIE1lbmdlbG9tcG9ra2FuOiBEYXRhIHRpbmdnaSBiYWRhbiBkaWtlbG9tcG9ra2FuIChtaXNhbG55YSwgMTYw4oCTMTY1IGNtLCAxNjXigJMxNzAgY20sIDE3MOKAkzE3NSBjbSkuDQoNCiogRm9rdXMgcGFkYSBGcmVrdWVuc2k6IFNldGlhcCBiYXRhbmcgcGFkYSBoaXN0b2dyYW0ga2VtdWRpYW4gbWVudW5qdWtrYW4gZnJla3VlbnNpIChqdW1sYWggbWFoYXNpc3dhKSB5YW5nIHRpbmdnaW55YSBqYXR1aCBrZSBkYWxhbSByZW50YW5nIGJpbiB0ZXJzZWJ1dC4NCg0KMy4gUmVwcmVzZW50YXNpIERpc3RyaWJ1c2kNCg0KVHVqdWFuIHV0YW1hIHZpc3VhbGlzYXNpIGRhdGEga29udGludSBhZGFsYWggbWVsaWhhdCBEaXN0cmlidXNpLiBIaXN0b2dyYW0gYWRhbGFoIGFsYXQgdGVyYmFpayB1bnR1ayBpbmkga2FyZW5hOg0KDQoqIE1lbnVuanVra2FuIEtlcGFkYXRhbjogS2V0aW5nZ2lhbiBiYXRhbmcgaGlzdG9ncmFtIG1lbnVuanVra2FuIGRpIG1hbmEgZGF0YSBwYWxpbmcgYmFueWFrIHRlcmtvbnNlbnRyYXNpIChwdXNhdCBkYXRhLCB5YW5nIG11bmdraW4gYmVyYWRhIGRpIHNla2l0YXIgdGluZ2dpIHJhdGEtcmF0YSkuDQoNCiogTWVudW5qdWtrYW4gQmVudHVrOiBBbmRhIGRhcGF0IG1lbGloYXQgYmVudHVrIGRpc3RyaWJ1c2kgZGF0YSBzZWNhcmEga2VzZWx1cnVoYW4gKG1pc2FsbnlhLCBhcGFrYWggdGluZ2dpIGJhZGFuIG1haGFzaXN3YSBtZW1iZW50dWsga3VydmEgbG9uY2VuZyB5YW5nIHNpbWV0cmlz4oCUeWFpdHUsIERpc3RyaWJ1c2kgTm9ybWFs4oCUYXRhdSBtaXJpbmcpLg0KDQoqIEJhdGFuZyBTYWxpbmcgTWVueWVudHVoOiBEYWxhbSBoaXN0b2dyYW0sIGJhdGFuZy1iYXRhbmcgc2FsaW5nIG1lbnllbnR1aC4gSW5pIHNlY2FyYSB2aXN1YWwgbWVuZWthbmthbiBzaWZhdCBkYXRhIHlhbmcgYmVya2VzaW5hbWJ1bmdhbiAoY29udGludWl0eSksIHlhaXR1LCB0aWRhayBhZGEgY2VsYWggbmlsYWkgeWFuZyB0aWRhayBtdW5na2luIHRlcmphZGkgYW50YXJhIHNhdHUgcmVudGFuZyB0aW5nZ2kga2UgcmVudGFuZyB0aW5nZ2kgYmVyaWt1dG55YS4gKEJlcmJlZGEgZGVuZ2FuIEJhZ2FuIEJhdGFuZyB1bnR1ayBkYXRhIGRpc2tyZXQgc2VwZXJ0aSAianVtbGFoIGFuYWsiLCBkaSBtYW5hIGJhdGFuZyBtZW1pbGlraSBjZWxhaCBrYXJlbmEgdGlkYWsgbXVuZ2tpbiBhZGEgIjEsNSBhbmFrIikuDQoNClNpbmdrYXRueWEsIEhpc3RvZ3JhbSBtZW5ndWJhaCBkYXRhIHBlbmd1a3VyYW4ga29udGludSB5YW5nIGtvbXBsZWtzIG1lbmphZGkgcmluZ2thc2FuIHZpc3VhbCBzZWRlcmhhbmEgeWFuZyBtZW51bmp1a2thbiBwb2xhIHBlbnllYmFyYW4gZGFuIGtvbnNlbnRyYXNpIGRhdGEuDQoNCi0tLQ0KDQojIyBQZXJoaXR1bmdhbiBQcm9iYWJpbGl0YXMNCg0KRm9ybXVsYSAvIHJ1bXVzIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGp1Z2EgYmVyYmVkYSBhbnRhcmEgdmFyaWFiZWwgZGlza3JpdCBkYW4ga29udGludS4NCg0KKiBWYXJpYWJlbCBEaXNrcml0OiBNZW5nZ3VuYWthbiBmb3JtdWxhIHByb2JhYmlsaXRhcyBkYXNhci4NCg0KKiBWYXJpYWJlbCBLb250aW51OiBNZW5nZ3VuYWthbiBmb3JtdWxhIHlhbmcgdGVya2FpdCBkZW5nYW4gS3VydmEgS2VwYWRhdGFuIChEZW5zaXR5IEN1cnZlcykuIEhhbCBpbmkga2FyZW5hIGFyZWEgZGkgYmF3YWgga3VydmEga2VwYWRhdGFuIGRhcGF0IG1lcmVwcmVzZW50YXNpa2FuIHByb2JhYmlsaXRhcyBhdGF1IHByb3BvcnNpIHVudHVrIG1lbmdhbWF0aSByZW50YW5nIGhhc2lsIHlhbmcgYmVyc2lmYXQga29udGludS4NCg0KKiBEaXN0cmlidXNpIE5vcm1hbDogRm9ybXVsYSB5YW5nIGJlcmthaXRhbiBkZW5nYW4gRGlzdHJpYnVzaSBOb3JtYWwgYWthbiBzZXJpbmcgZGlndW5ha2FuIHVudHVrIHZhcmlhYmVsIGtvbnRpbnUga2FyZW5hIERpc3RyaWJ1c2kgTm9ybWFsIHNlbmRpcmkgYWRhbGFoIGJlbnR1ayBkYXJpIEt1cnZhIEtlcGFkYXRhbi4gVmlkZW8gaW5pIG1lbmdha2hpcmkgZGVuZ2FuIG1lbnllYnV0a2FuIGJhaHdhIG1hdGVyaSBzZWxhbmp1dG55YSBkYWxhbSBzZXJpIGluaSBha2FuIGJlcmZva3VzIHBhZGEgRGlzdHJpYnVzaSBOb3JtYWwuDQoNCjwvZGl2PiANCg0KLS0tDQoNCjxkaXYgY2xhc3M9ImV4cGxhbmF0aW9uLWJveCI+DQoNCiMgU2FtcGxpbmcgRGlzdHJpYnV0aW9uDQoNClZpZGVvIGluaSBtZW5qZWxhc2thbiBrb25zZXAgcGVudGluZyBkYWxhbSBzdGF0aXN0aWthIGluZmVyZW5zaWFsLCB5YWl0dSBEaXN0cmlidXNpIFNhbXBlbCAoU2FtcGxpbmcgRGlzdHJpYnV0aW9uKS4gRGlzdHJpYnVzaSBzYW1wZWwgbWVuamFkaSBkYXNhciB1bnR1ayBtZW5nYW1iaWwga2VzaW1wdWxhbiB0ZW50YW5nIHBvcHVsYXNpIGJlc2FyIHRhbnBhIHBlcmx1IG1lbmd1a3VyIHNldGlhcCBpbmRpdmlkdSBkaSBkYWxhbW55YSwgc2VoaW5nZ2Egc2FuZ2F0IG1lbWJhbnR1IGRhbGFtIGhhbCBlZmlzaWVuc2kgZGFuIGtlcHJha3Rpc2FuLg0KDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzdTN2o3NWQzR000IiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNClZpZGVvIGRpbXVsYWkgZGVuZ2FuIG1lbWJlZGFrYW4gdGlnYSBqZW5pcyBkaXN0cmlidXNpIHV0YW1hOiBEaXN0cmlidXNpIFNhbXBlbCAoU2FtcGxlIERpc3RyaWJ1dGlvbiksIERpc3RyaWJ1c2kgUG9wdWxhc2kgKFBvcHVsYXRpb24gRGlzdHJpYnV0aW9uKSwgZGFuIHlhbmcgcGFsaW5nIHBlbnRpbmcsIERpc3RyaWJ1c2kgU2FtcGVsIChTYW1wbGluZyBEaXN0cmlidXRpb24pLg0KDQotLS0NCg0KIyMgUGVyYmVkYWFuIFRpZ2EgSmVuaXMgRGlzdHJpYnVzaQ0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KIyAtLS0gTWVtdWF0IFBha2V0IHlhbmcgRGlwZXJsdWthbiAtLS0NCiMga25pdHI6IERpZ3VuYWthbiB1bnR1ayBtZW1idWF0IHRhYmVsDQojIGthYmxlRXh0cmE6IERpZ3VuYWthbiB1bnR1ayBtZW1wZXJjYW50aWsgZGFuIG1lbWZvcm1hdCB0YWJlbA0KbGlicmFyeShrbml0cikNCmxpYnJhcnkoa2FibGVFeHRyYSkNCg0KIyAtLS0gMS4gUGVyc2lhcGFuIERhdGEgVGFiZWwgLS0tDQpkYXRhX3RhYmVsIDwtIGRhdGEuZnJhbWUoDQogICMgS29sb20gcGVydGFtYTogSmVuaXMgVmFyaWFiZWwNCiAgSmVuaXNfVmFyaWFiZWwgPSBjKA0KICAgICIqKkRpc3RyaWJ1c2kgUG9wdWxhc2kqKiIsIA0KICAgICIqKkRpc3RyaWJ1c2kgU2FtcGVsKioiLA0KICAgICIqKlNhbXBsaW5nIERpc3RyaWJ1dGlvbioqIg0KICApLA0KICANCiAgIyBLb2xvbSBrZWR1YTogQ2lyaSBLaGFzL1BlbmplbGFzYW4NCiAgQ2lyaV9LaGFzID0gYygNCiAgICAiRGlzdHJpYnVzaSB5YW5nIGRpYnVhdCBkYXJpIHBlbmd1a3VyYW4gc2V0aWFwIGluZGl2aWR1IGRhbGFtIHBvcHVsYXNpLiIsDQogICAgIkRpc3RyaWJ1c2kgeWFuZyBkaWJ1YXQgZGFyaSBwZW5ndWt1cmFuIHNldGlhcCBpbmRpdmlkdSBkYWxhbSBzYXR1IHNhbXBlbCB0dW5nZ2FsLiIsDQogICAgIkRpc3RyaWJ1c2kgZGFyaSBzdGF0aXN0aWsgKG1pc2FsbnlhLCByYXRhLXJhdGEgeMyEKSB5YW5nIGRpYnVhdCBkYXJpIGJlcmJhZ2FpIHNhbXBlbCBhY2FrIHNlZGVyaGFuYSB5YW5nIGRpdGFyaWsgZGFyaSBwb3B1bGFzaSB5YW5nIHNhbWEuIg0KICApDQopDQoNCiMgLS0tIDIuIE1lbWJ1YXQgVGFiZWwgZGVuZ2FuIGthYmxlIGRhbiBrYWJsZUV4dHJhIC0tLQ0KdGFiZWxfa29tcGFyYXNpIDwtIGthYmxlKGRhdGFfdGFiZWwsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVuZW50dWthbiBmb3JtYXQgb3V0cHV0IChtaXNhbG55YSBIVE1MKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9ICJodG1sIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIyBNZW1iZXJpIG5hbWEgcGFkYSBrb2xvbQ0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5uYW1lcyA9IGMoIkplbmlzIERpc3RyaWJ1c2kiLCAiS2V0ZXJhbmdhbiIpKSAlPiUNCiAgDQogICMgU3R5bGluZyB0YW1iYWhhbiBhZ2FyIHRhYmVsIHRlcmxpaGF0IHJhcGkgZGFuIG1lbWlsaWtpIGdhcmlzDQogIGthYmxlX3N0eWxpbmcoDQogICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksDQogICAgZnVsbF93aWR0aCA9IEYsICMgQWdhciB0YWJlbCB0aWRhayBtZWxlYmFyIHBlbnVoDQogICAgZm9udF9zaXplID0gMTINCiAgKSAlPiUNCiAgDQogICMgTWVtYmVyaSB3YXJuYSBsYXRhciBiZWxha2FuZyBwYWRhIGhlYWRlcg0KICByb3dfc3BlYygwLCBib2xkID0gVFJVRSwgYmFja2dyb3VuZCA9ICIjMzQ5OGRiIikgDQoNCiMgLS0tIDMuIFRhbXBpbGthbiBIYXNpbCAtLS0NCnRhYmVsX2tvbXBhcmFzaQ0KDQpgYGANCg0KKipQZW50aW5nOioqIFJhdGEtcmF0YSBzYW1wZWwgJChcYmFye3h9KSQgdGlkYWsgc2VsYWx1IHNhbWEgZGVuZ2FuIHJhdGEtcmF0YSBwb3B1bGFzaSAkKFxtdSkkIGthcmVuYSBzYW1wZWwgbWVtaWxpa2kgdmFyaWFiaWxpdGFzIGxlYmloIHRpbmdnaSBkYW4gbWVuZ2FuZHVuZyBsZWJpaCBzZWRpa2l0IGluZm9ybWFzaSBkYXJpcGFkYSBwb3B1bGFzaS4NCg0KIyMgUHJvc2VzIFBlbWJlbnR1a2FuIERpc3RyaWJ1c2kgU2FtcGVsDQoNCkRpc3RyaWJ1c2kgc2FtcGVsIGRpYmVudHVrIG1lbGFsdWkgcHJvc2VzIHBlbmdhbWJpbGFuIHNhbXBlbCBiZXJ1bGFuZyAocmVwZWF0ZWQgc2FtcGxpbmcpOg0KDQoqIFRlbnR1a2FuIFBvcHVsYXNpOiBJZGVudGlmaWthc2kgcG9wdWxhc2kgeWFuZyBkaW1pbmF0aSAobWlzYWxueWEsIHRpbmdnaSBiYWRhbikuDQoNCiogQW1iaWwgU2FtcGVsIDE6IEFtYmlsIHNhbXBlbCBhY2FrIHNlZGVyaGFuYSBwZXJ0YW1hICh1a3VyYW4gbikuDQoNCiogSGl0dW5nIFN0YXRpc3RpazogSGl0dW5nIHJhdGEtcmF0YSAkKFxiYXJ7eH0pJCB1bnR1ayBzYW1wZWwgdGVyc2VidXQuDQoNCiogUGxvdCBIYXNpbDogUGxvdCBuaWxhaSAkXGJhcnt4fSQgdGVyc2VidXQga2UgZGFsYW0gZ3JhZmlrIGRpc3RyaWJ1c2kgZnJla3VlbnNpLg0KDQoqIFVsYW5naTogTGFrdWthbiBrZXNlbHVydWhhbiBwcm9zZXMgaW5pIHJhdHVzYW4gaGluZ2dhIHJpYnVhbiBrYWxpIChhbWJpbCBzYW1wZWwgYmFydSwgaGl0dW5nICRcYmFye3h9LCBwbG90KSQuDQoNCiogSGFzaWwgYWtoaXJueWEgYWRhbGFoIGRpc3RyaWJ1c2kgeWFuZyB0ZXJkaXJpIGRhcmkgdHVtcHVrYW4gYmFueWFrIHJhdGEtcmF0YSBzYW1wZWwgJChcYmFye3h9KSQuIEppa2EgZGF0YSB5YW5nIGRpa3VtcHVsa2FuIGN1a3VwIGJhbnlhaywgZGlzdHJpYnVzaSBzYW1wZWwgYWthbiBjZW5kZXJ1bmcgdGVyZGlzdHJpYnVzaSBub3JtYWwuDQoNCiMjIFBlcmJhbmRpbmdhbiBSdW11cyBkYW4gS2FyYWt0ZXJpc3RpayBVdGFtYQ0KDQpQZXJiZWRhYW4gdGVyYmVzYXIgYW50YXJhIGRpc3RyaWJ1c2kgcG9wdWxhc2kgZGFuIGRpc3RyaWJ1c2kgc2FtcGVsIHRlcmxldGFrIHBhZGEgc2ViYXJhbiBkYW4gc2ltcGFuZ2FuIGJha3UtbnlhLg0KDQotLS0NCg0KYGBge3IsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCiMgLS0tIE1lbXVhdCBQYWtldCB5YW5nIERpcGVybHVrYW4gLS0tDQojIGtuaXRyOiBVbnR1ayBtZW1idWF0IHRhYmVsIGRhc2FyDQojIGthYmxlRXh0cmE6IFVudHVrIHN0eWxpbmcgdGFiZWwNCiMgaHRtbHRvb2xzOiBVbnR1ayBzdHlsaW5nIExhVGVYL01hdGgNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQoNCiMgLS0tIDEuIFBlcnNpYXBhbiBEYXRhIFRhYmVsIC0tLQ0KZGF0YV9rYXJha3RlcmlzdGlrIDwtIGRhdGEuZnJhbWUoDQogICMgS2FyYWt0ZXJpc3RpayB5YW5nIGRpYmFuZGluZ2thbg0KICBLYXJha3RlcmlzdGlrID0gYygNCiAgICAiUmF0YS1yYXRhIChNZWFuKSIsIA0KICAgICJTaW1wYW5nYW4gQmFrdSAoU3RhbmRhcmQgRGV2aWF0aW9uKSIsIA0KICAgICJOYW1hIFNpbXBhbmdhbiBCYWt1IiwNCiAgICAiUnVtdXMgU2ltcGFuZ2FuIEJha3UgLyBHYWxhdCBCYWt1IiwNCiAgICAiUnVtdXMgU3RhbmRhcmRpc2FzaSAoWi1TY29yZSkiDQogICksDQogIA0KICAjIEtvbG9tIGtlZHVhOiBEaXN0cmlidXNpIFBvcHVsYXNpDQogIERpc3RyaWJ1c2lfUG9wdWxhc2kgPSBjKA0KICAgICIkXFxtdSQiLA0KICAgICIkXFxzaWdtYSQiLA0KICAgICJTaW1wYW5nYW4gQmFrdSBQb3B1bGFzaSIsDQogICAgIiRcXHNpZ21hJCIsDQogICAgIiRaID0gXFxmcmFje3ggLSBcXG11fXtcXHNpZ21hfSQiDQogICksDQogIA0KICAjIEtvbG9tIGtldGlnYTogRGlzdHJpYnVzaSBTYW1wZWwgKFJhdGEtcmF0YSBTYW1wZWwpDQogIERpc3RyaWJ1c2lfU2FtcGVsID0gYygNCiAgICAiJFxcbXVfe1xcYmFye3h9fSA9IFxcbXUkIChSYXRhLXJhdGEgZGFyaSBzZW11YSAkXFxiYXJ7eH0kIHNhbWEgZGVuZ2FuIHJhdGEtcmF0YSBwb3B1bGFzaSkiLA0KICAgICJTaW1wYW5nYW4gYmFrdSBsZWJpaCBrZWNpbCBkYXJpICRcXHNpZ21hJCIsDQogICAgIkdhbGF0IEJha3UgKFN0YW5kYXJkIEVycm9yKSIsDQogICAgIiRcXHNpZ21hX3tcXGJhcnt4fX0gPSBcXGZyYWN7XFxzaWdtYX17XFxzcXJ0e259fSQiLA0KICAgICIkWiA9IFxcZnJhY3tcXGJhcnt4fSAtIFxcbXV9e1xcc2lnbWEgLyBcXHNxcnR7bn19JCINCiAgKQ0KKQ0KDQojIC0tLSAyLiBNZW1idWF0IFRhYmVsIGRlbmdhbiBrYWJsZSBkYW4ga2FibGVFeHRyYSAtLS0NCnRhYmVsX2thcmFrdGVyaXN0aWsgPC0ga2FibGUoZGF0YV9rYXJha3RlcmlzdGlrLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAjIE1lbmVudHVrYW4gZm9ybWF0IG91dHB1dCBIVE1MDQogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gImh0bWwiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAjIE1lbWJlcmkgbmFtYSBwYWRhIGtvbG9tDQogICAgICAgICAgICAgICAgICAgICAgICAgY29sLm5hbWVzID0gYygiS2FyYWt0ZXJpc3RpayIsICJEaXN0cmlidXNpIFBvcHVsYXNpIiwgIkRpc3RyaWJ1c2kgU2FtcGVsIChSYXRhLXJhdGEgU2FtcGVsKSIpKSAlPiUNCiAgDQogICMgU3R5bGluZyB0YWJlbCAobWVtYnVhdG55YSBpbnRlcmFrdGlmIGRhbiByYXBpKQ0KICBrYWJsZV9zdHlsaW5nKA0KICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLA0KICAgIGZ1bGxfd2lkdGggPSBGLCANCiAgICBmb250X3NpemUgPSAxMg0KICApICU+JQ0KICANCiAgIyBSZW5kZXJpbmcgTGFUZVgvTWF0aCAoUGVudGluZyBhZ2FyIHJ1bXVzIHRhbXBpbCBkZW5nYW4gYmVuYXIpDQogICMgZXNjYXBlID0gRkFMU0UgZGlhdHVyIGRpIHNpbmksIHdhbGF1IGtuaXRyIHN1ZGFoIGN1a3VwIHBpbnRhcg0KICAjIGJvb2t0YWJzID0gVFJVRQ0KICANCiAgIyBNZW1iZXJpIHdhcm5hIGxhdGFyIGJlbGFrYW5nIHBhZGEgaGVhZGVyDQogIHJvd19zcGVjKDAsIGJvbGQgPSBUUlVFLCBiYWNrZ3JvdW5kID0gIiMzNDk4ZGIiKSANCg0KIyAtLS0gMy4gVGFtcGlsa2FuIEhhc2lsIC0tLQ0KdGFiZWxfa2FyYWt0ZXJpc3Rpaw0KDQpgYGANCg0KKipNZW5nYXBhIEdhbGF0IEJha3UgTGViaWggS2VjaWw/KioNCg0KU2ViYXJhbiBkaXN0cmlidXNpIHNhbXBlbCBzZWxhbHUgbGViaWgga2VjaWwga2FyZW5hIHJhdGEtcmF0YSBrdXJhbmcgYmVydmFyaWFzaSBkaWJhbmRpbmdrYW4gZGVuZ2FuIHBlbmdhbWF0YW4gaW5kaXZpZHUuIEthcmVuYSBkaXN0cmlidXNpIHNhbXBlbCBkaWJ1YXQgZGFyaSByYXRhLXJhdGEgKGJ1a2FuIGRhcmkgbmlsYWkgaW5kaXZpZHUpLCBzZWJhcmFubnlhIG1lbmphZGkgbGViaWggc2VtcGl0IGRhbiBsZWJpaCB0aW5nZ2kuDQoNCiMjIFR1anVhbiBkYW4gS2VndW5hYW4gRGlzdHJpYnVzaSBTYW1wZWwNCg0KVHVqdWFuIHV0YW1hIGRhcmkgZGlzdHJpYnVzaSBzYW1wZWwgYWRhbGFoIGtlbnlhbWFuYW4gZGFuIGVmaXNpZW5zaS4NCg0KKiBNZW5naGluZGFyaSBQZW5ndWt1cmFuIE1hc3NhbDogRGlzdHJpYnVzaSBzYW1wZWwgbWVtYmVyaWthbiBpZGUgdGVudGFuZyBuaWxhaSByYXRhLXJhdGEgcG9wdWxhc2kgJChcbXUpJCB0YW5wYSBoYXJ1cyBtZW5ndWt1ciBzZXRpYXAgaW5kaXZpZHUgKG1pc2FsbnlhLCBtZW5ndWt1ciB0aW5nZ2kgOCBtaWxpYXIgbWFudXNpYSkuDQoNCiogUGVyaGl0dW5nYW4gUHJvYmFiaWxpdGFzOiBEaXN0cmlidXNpIHNhbXBlbCBtZW11bmdraW5rYW4ga2l0YSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyB1bnR1ayBtZW5kYXBhdGthbiByYXRhLXJhdGEgc2FtcGVsICQoXGJhcnt4fSkkIHRlcnRlbnR1IGJlcmRhc2Fya2FuIHVrdXJhbiBzYW1wZWwgKG4pIHlhbmcga2l0YSBndW5ha2FuLg0KDQojIyBDb250b2ggU29hbCAoQXBsaWthc2kgUnVtdXMpDQoNCioqQ29udG9oIDE6KiogTWVuZ2hpdHVuZyBQcm9iYWJpbGl0YXMgUmF0YS1SYXRhIFNhbXBlbCAoTWVuZ2d1bmFrYW4gRGlzdHJpYnVzaSBTYW1wbGluZykNCg0KJCRTb2FsOiQkIERpa2V0YWh1aSB0aW5nZ2kgb3JhbmcgS2FuYWRhIGJlcmRpc3RyaWJ1c2kgbm9ybWFsIGRlbmdhbiByYXRhLXJhdGEgKFxtdSkgMTYwIGNtIGRhbiBzdGFuZGFyIGRldmlhc2kgKFxzaWdtYSkgNyBjbS4gQmVyYXBhIHByb2JhYmlsaXRhcyByYXRhLXJhdGEgdGluZ2dpIGJhZGFuIGRhcmkgMTAgb3JhbmcgS2FuYWRhIGFjYWsgKG49MTApIGFkYWxhaCBrdXJhbmcgZGFyaSAxNTcgY20/DQoNCiogUGVueWVsZXNhaWFuOg0KDQoxLiBIaXR1bmcgU3RhbmRhcmQgRXJyb3IgJChcc2lnbWFfe1xiYXJ7eH19KSQ6IDcgLyAkXHNxcnR7MTB9IFxhcHByb3gkIDIuMjEuDQoNCjIuIEhpdHVuZyBaLXNjb3JlOiBaID0gJFxmcmFjezE1NyAtIDE2MH17Mi4yMX0kICRcYXBwcm94JCAtMS4zNi4NCg0KMy4gQ2FyaSBMdWFzIGRhcmkgVGFiZWwgWjogJFAoWiA8IC0xLjM2KSQgPSAwLjA4NjkuDQoNCjQuIEhhc2lsOiBQcm9iYWJpbGl0YXNueWEgYWRhbGFoIDAuMDg2OSBhdGF1IDguNjklLg0KDQoqKkNvbnRvaCAyOioqIE1lbmdoaXR1bmcgUHJvcG9yc2kgSW5kaXZpZHUgKE1lbmdndW5ha2FuIERpc3RyaWJ1c2kgUG9wdWxhc2kpDQoNCiQkU29hbDokJCBCZXJhcGEgcHJvcG9yc2kgc2VtdWEgb3JhbmcgeWFuZyBtZW1pbGlraSB0aW5nZ2kgYmFkYW4gbGViaWggZGFyaSAxNzAgY20/DQoNCiogUGVueWVsZXNhaWFuOg0KDQpLYXJlbmEgcGVydGFueWFhbm55YSB0ZW50YW5nIHNlbXVhIG9yYW5nIChpbmRpdmlkdSksIGRpZ3VuYWthbiBydW11cyBaLXNjb3JlIHBvcHVsYXNpLg0KDQoxLiBIaXR1bmcgWi1zY29yZTogWiA9ICRcZnJhY3sxNzAgLSAxNjB9ezd9JCAkXGFwcHJveCQgMS40My4NCg0KMi4gQ2FyaSBMdWFzIGtlIEtpcmk6IEx1YXMga2Uga2lyaSBkYXJpIFo9MS40MyBhZGFsYWggMC45MjM2Lg0KDQozLiBIaXR1bmcgTHVhcyBrZSBLYW5hbjogMSAtIDAuOTIzNiA9IDAuMDc2NC4NCg0KNC4gSGFzaWw6IFByb3BvcnNpbnlhIGFkYWxhaCAwLjA3NjQgYXRhdSA3LjY0JS4NCg0KLS0tDQoNCjwvZGl2PiANCg0KLS0tDQoNCjxkaXYgY2xhc3M9ImV4cGxhbmF0aW9uLWJveCI+DQoNCiMgQ2VudHJhbCBMaW1pdCBUaGVvcmVtDQoNClZpZGVvIGluaSBtZW1iYWhhcyBUZW9yZW1hIExpbWl0IFB1c2F0IChDZW50cmFsIExpbWl0IFRoZW9yZW0vVExQKSwgc2VidWFoIGtvbnNlcCBmdW5kYW1lbnRhbCBkYWxhbSBzdGF0aXN0aWthIGluZmVyZW5zaWFsLiBUTFAgYWRhbGFoIHRlb3JlbWEgeWFuZyBtZW1wcmVkaWtzaSBiZW50dWsgZGlzdHJpYnVzaSBzYW1wbGluZyBkYXJpIHJhdGEtcmF0YSBzYW1wZWwgJChcYmFye3h9KSQuIFRlb3JlbWEgaW5pIHNhbmdhdCBrdWF0IGthcmVuYSBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW5nYW5hbGlzaXMgZGFuIG1lbmFyaWsga2VzaW1wdWxhbiB0ZW50YW5nIHBvcHVsYXNpIGJhaGthbiBrZXRpa2Ega2l0YSB0aWRhayBtZW5nZXRhaHVpIGJlbnR1ayBhc2xpIGRhcmkgZGlzdHJpYnVzaSBwb3B1bGFzaSB0ZXJzZWJ1dC4gU2ViZWx1bSBtZW1iYWhhcyBUTFAsIHZpZGVvIGluaSBtZW5pbmphdSBrZW1iYWxpIGJhaHdhIGRpc3RyaWJ1c2kgc2FtcGxpbmcgZGliZW50dWsgZGVuZ2FuIG1lbmdhbWJpbCBzYW1wZWwgYmVydWxhbmcga2FsaSBkYXJpIHBvcHVsYXNpLCBtZW5naGl0dW5nIHN0YXRpc3RpayAoc2VwZXJ0aSAkXGJhcnt4fSQpIGRhcmkgc2V0aWFwIHNhbXBlbCwgZGFuIGtlbXVkaWFuIG1lbmdnYWJ1bmdrYW4gaGFzaWxueWEgZGFsYW0gc2VidWFoIGdyYWZpay4NCg0KPGNlbnRlcj4NCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9pdmQ4d0VIbk1DZyIgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHdpZHRoPSI3NjgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBQZXJueWF0YWFuIFV0YW1hIFRlb3JlbWEgTGltaXQgUHVzYXQNCg0KVGVvcmVtYSBMaW1pdCBQdXNhdCBtZW55YXRha2FuIGJhaHdhOg0KDQoqIEppa2EgdWt1cmFuIHNhbXBlbCAobikgY3VrdXAgYmVzYXIsIG1ha2EgZGlzdHJpYnVzaSBzYW1wbGluZyBkYXJpIHJhdGEtcmF0YSBzYW1wZWwgJChcYmFye3h9KSQgYWthbiBiZXJkaXN0cmlidXNpIG1lbmRla2F0aSBub3JtYWwgKG5vcm1hbCBhcHByb3hpbWF0aW9uKS4NCg0KKiBQcmluc2lwIGluaSBiZXJsYWt1IHRhbnBhIG1lbWFuZGFuZyBzZXBlcnRpIGFwYSBiZW50dWsgYXNsaSBkaXN0cmlidXNpIHBvcHVsYXNpIChhcGFrYWggbWlyaW5nL3NrZXdlZCwgc2VyYWdhbSwgYXRhdSBiZW50dWsgbGFpbm55YSkuDQoNCiogU2VjYXJhIHZpc3VhbCwgbWVza2lwdW4gcG9wdWxhc2kgYXNsaW55YSBtaXJpbmcsIHBsb3R0aW5nIHNlbXVhIHJhdGEtcmF0YSBzYW1wZWwgJChcYmFye3h9KSQgc2VjYXJhIGJlcnVsYW5nIGFrYW4gbWVuZ2hhc2lsa2FuIGJlbnR1ayBsb25jZW5nIHlhbmcgc2ltZXRyaXMgKGRpc3RyaWJ1c2kgbm9ybWFsKS4NCg0KIyMgTWVrYW5pc21lIGRhbiBMb2dpa2EgZGkgQmFsaWsgVExQDQoNCiogRGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsIGFjYWssIHNlYmFnaWFuIGJlc2FyIHRpdGlrIGRhdGEgY2VuZGVydW5nIGJlcmFzYWwgZGFyaSBiYWdpYW4gdXRhbWEgKGJ1bGspIGRpc3RyaWJ1c2kgcG9wdWxhc2ksIGRhbiBsZWJpaCBzZWRpa2l0IHlhbmcgYmVyYXNhbCBkYXJpIGFyZWEgeWFuZyBsZWJpaCBrZWNpbCAoZWtvcikuDQoNCiogUmF0YS1yYXRhIHNhbXBlbCAkKFxiYXJ7eH0pJCBjZW5kZXJ1bmcgYmVyYWRhIGRpIHNla2l0YXIgcmF0YS1yYXRhIHBvcHVsYXNpIHNlamF0aSAkKFxtdSkkLg0KDQoqIEthcmVuYSBzZWJhZ2lhbiBiZXNhciAkXGJhcnt4fSQgYWthbiBtZW5nZWxvbXBvayBkaSBkZWthdCAkXG11JCwgZGFuIHNhbXBlbCB5YW5nIHNhbmdhdCBla3N0cmVtIChqYXVoIGRhcmkgJFxtdSQpIGphcmFuZyB0ZXJqYWRpLCBrdW1wdWxhbiAkXGJhcnt4fSQgZGFyaSBiYW55YWsgc2FtcGVsIHNlY2FyYSBhbGFtaSBha2FuIG1lbWJlbnR1ayBkaXN0cmlidXNpIG5vcm1hbCAoc2ltZXRyaXMpLg0KDQojIyBBdHVyYW4gUHJha3RpcyBQZW5lcmFwYW4gVExQDQoNCioqUGVydGFueWFhbiBrdW5jaSBhZGFsYWg6KiogU2ViZXJhcGEgYmVzYXIgdWt1cmFuIHNhbXBlbCAobikgeWFuZyBkaWFuZ2dhcCAiY3VrdXAgYmVzYXIiPw0KDQokJEF0dXJhbiBVbXVtIChSdWxlIG9mIFRodW1iKTokJCBBbWFuIHVudHVrIG1lbmVyYXBrYW4gVGVvcmVtYSBMaW1pdCBQdXNhdCBrZXRpa2EgdWt1cmFuIHNhbXBlbCAobikgbGViaWggYmVzYXIgZGFyaSBhdGF1IHNhbWEgZGVuZ2FuIDMwICQobiBcZ2UgMzApJCAuDQoNCiogS2V0aWthICRuIFxnZSAzMCQsIGRpc3RyaWJ1c2kgc2FtcGxpbmcgZGlqYW1pbiBtZW5kZWthdGkgbm9ybWFsLCB0ZXJsZXBhcyBkYXJpIGJlbnR1ayBwb3B1bGFzaSBhc2xpbnlhLg0KDQoqIEppa2EgbiBrZWNpbCAoa3VyYW5nIGRhcmkgMzApLCBwZXJraXJhYW4gbm9ybWFsIG1lbmphZGkgdGlkYWsgYWt1cmF0IGthcmVuYSBzYW1wZWwga2VjaWwgbWVtaWxpa2kgdmFyaWFiaWxpdGFzLCBrdXJhbmcgcHJlc2lzaSwgZGFuIGJlcmlzaWtvIGxlYmloIGJlc2FyIG1lbmdoYXNpbGthbiBzYW1wZWwgeWFuZyB0aWRhayBiaWFzYSBoYW55YSBrYXJlbmEga2ViZXR1bGFuLg0KDQojIyBLYXN1cyBQZW5nZWN1YWxpYW4gZGFuIFBlcnN5YXJhdGFuDQoNCkFkYSBzYXR1IHBlbmdlY3VhbGlhbiBwZW50aW5nIHRlcmhhZGFwIGF0dXJhbiAkbiBcZ2UgMzA6JA0KDQoqIEppa2EgZGlzdHJpYnVzaSBwb3B1bGFzaSB5YW5nIGRpamFkaWthbiBzYW1wZWwgc3VkYWggYmVyZGlzdHJpYnVzaSBub3JtYWwgc2VqYWsgYXdhbCwgbWFrYSBkaXN0cmlidXNpIHNhbXBsaW5nIGRhcmkgcmF0YS1yYXRhIHNhbXBlbCBha2FuIGJlcmRpc3RyaWJ1c2kgbm9ybWFsIG1lc2tpcHVuIHVrdXJhbiBzYW1wZWwgKG4pIGtlY2lsICh5YWl0dSBuIDwgMzApLg0KDQoqIE9sZWgga2FyZW5hIGl0dSwgamlrYSBQb3B1bGFzaSBOb3JtYWwgZGFuIG4gPCAzMCwgRGlzdHJpYnVzaSBTYW1wbGluZyBOb3JtYWwuDQoNCiogSmlrYSBQb3B1bGFzaSBUaWRhayBOb3JtYWwgZGFuIG4gPCAzMCwgVExQIFRpZGFrIERhcGF0IGRpdGVyYXBrYW4uDQoNCiMjIEtlZ3VuYWFuIFRMUA0KDQoqIFRlb3JlbWEgTGltaXQgUHVzYXQgc2FuZ2F0IGJlcmd1bmEgdW50dWsgbWVuZ2FuYWxpc2lzIGt1bXB1bGFuIGRhdGEgYmVzYXIuDQoNCiogRGVuZ2FuIG1lbmdldGFodWkgYmFod2EgZGlzdHJpYnVzaSBzYW1wbGluZyBha2FuIG5vcm1hbCwga2l0YSBkYXBhdCBtZW5nZ3VuYWthbiBzZW11YSBydW11cyBkYW4gbWV0b2RlIHlhbmcgdGVya2FpdCBkZW5nYW4gZGlzdHJpYnVzaSBub3JtYWwgKHNlcGVydGkgWi1zY29yZSBkYW4gdGFiZWwgcHJvYmFiaWxpdGFzKSB1bnR1ayBtZW5hZnNpcmthbiBkYXRhIGRhbiBtZW1idWF0IGtlc2ltcHVsYW4gc3RhdGlzdGlrLg0KDQo8L2Rpdj4gDQoNCi0tLQ0KDQo8ZGl2IGNsYXNzPSJleHBsYW5hdGlvbi1ib3giPg0KDQojIFNhbXBsZSBQcm9wb3J0aW9uDQoNClZpZGVvIGluaSBtZW1iYWhhcyBrb25zZXAgRGlzdHJpYnVzaSBTYW1wbGluZyBQcm9wb3JzaSBTYW1wZWwgKFNhbXBsaW5nIERpc3RyaWJ1dGlvbiBvZiB0aGUgU2FtcGxlIFByb3BvcnRpb24pLCB5YW5nIGRpbGFtYmFuZ2thbiBkZW5nYW4gJFxoYXR7cH0kIChQIGhhdCkuIEtvbnNlcCBpbmkgbWVydXBha2FuIGJhZ2lhbiBwZW50aW5nIGRhcmkgc3RhdGlzdGlrYSBpbmZlcmVuc2lhbCBkYW4gYmVyYmVkYSBkYXJpIGRpc3RyaWJ1c2kgc2FtcGxpbmcgcmF0YS1yYXRhICQoXGJhcnt4fSkkIGthcmVuYSBmb2t1c255YSBhZGFsYWggcGFkYSB2YXJpYWJlbCBrYXRlZ29yaWthbCBhdGF1IHByb2JhYmlsaXRhcyBrZWJlcmhhc2lsYW4sIGJ1a2FuIHZhcmlhYmVsIGtvbnRpbnUuIE1hdGVyaSBpbmkgbWVuamVsYXNrYW4gYmFnYWltYW5hIHN0YXRpc3RpayBwcm9wb3JzaSB5YW5nIGRpaGl0dW5nIGRhcmkgYmVyYmFnYWkgc2FtcGVsIGFrYW4gdGVyZGlzdHJpYnVzaSwgc2VydGEgc3lhcmF0LXN5YXJhdCBhZ2FyIGRpc3RyaWJ1c2kgaW5pIGRhcGF0IGRpcGVya2lyYWthbiBzZWJhZ2FpIGRpc3RyaWJ1c2kgbm9ybWFsIG1lbmdndW5ha2FuIFRlb3JlbWEgTGltaXQgUHVzYXQgKFRMUCkuDQoNCjxjZW50ZXI+DQo8aWZyYW1lIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvcTJlNG1LMEZUYnciIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiB3aWR0aD0iNzY4IiBoZWlnaHQ9IjQwMHB4IiBkYXRhLWV4dGVybmFsPSIxIj4gPC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUHJvcG9yc2kgZGFuIE5vdGFzaSBEYXNhcg0KDQpQcm9wb3JzaSBhZGFsYWggZnJha3NpIGF0YXUgYmFnaWFuIGRhcmkgaGFzaWwgeWFuZyAibWVuZ3VudHVuZ2thbiIgKGZhdm9yYWJsZSBvdXRjb21lcykgcmVsYXRpZiB0ZXJoYWRhcCBrZXNlbHVydWhhbi4gSGFzaWwgeWFuZyBtZW5ndW50dW5na2FuIGFkYWxhaCB2YXJpYWJlbCBhcGEgcHVuIHlhbmcgc2VkYW5nIGRpcGVsYWphcmksIHNlcGVydGkgbWF0YSBoaWphdSwgYmVyYXQgYmFkYW4sIGF0YXUgc2tvciB0ZXMuDQoNClJ1bXVzIFByb3BvcnNpIHNlY2FyYSB1bXVtIGFkYWxhaDogKEp1bWxhaCBIYXNpbCBNZW5ndW50dW5na2FuKSBkaWJhZ2kgKFRvdGFsIEp1bWxhaCBIYXNpbCkuDQoNCkRhbGFtIHN0YXRpc3Rpa2EsIHByb3BvcnNpIGRpd2FraWxpIG9sZWggc2ltYm9sIHlhbmcgYmVyYmVkYSB0ZXJnYW50dW5nIGtvbnRla3NueWE6DQoNCiogUHJvcG9yc2kgUG9wdWxhc2kgZGlsYW1iYW5na2FuIGRlbmdhbiBQLg0KDQoqIFByb3BvcnNpIFNhbXBlbCBkaWxhbWJhbmdrYW4gZGVuZ2FuICRcaGF0e3B9JC4NCg0KIyMgRGlzdHJpYnVzaSBTYW1wbGluZyBQcm9wb3JzaSAkKFxoYXR7cH0pJA0KDQpEaXN0cmlidXNpIFNhbXBsaW5nIGRpYmVudHVrIGRlbmdhbiBtZW5nYW1iaWwgc2FtcGVsIGFjYWsgYmVydWxhbmcga2FsaSBkYXJpIHBvcHVsYXNpLCBtZW5naGl0dW5nICRcaGF0e3B9JCB1bnR1ayBzZXRpYXAgc2FtcGVsLCBkYW4ga2VtdWRpYW4gbWVtcGxvdCBzZW11YSBuaWxhaSAkXGhhdHtwfSQgdGVyc2VidXQga2UgZGFsYW0gc2VidWFoIGdyYWZpay4NCg0KRGlzdHJpYnVzaSBTYW1wbGluZyBQcm9wb3JzaSBTYW1wZWwgYWRhbGFoIGRpc3RyaWJ1c2kgZGFyaSBzdGF0aXN0aWsgJFxoYXR7cH0kIHlhbmcgZGloYXNpbGthbiBkYXJpIHByb3NlcyBwZW5nYW1iaWxhbiBzYW1wZWwgYmVydWxhbmcga2FsaSBpbmkuDQoNCk5pbGFpICRcaGF0e3B9JCBiZXJ2YXJpYXNpIGRhcmkgc2F0dSBzYW1wZWwga2Ugc2FtcGVsIGxhaW5ueWEga2FyZW5hIGFkYW55YSBwcm9iYWJpbGl0YXMgZGFuIHNpZmF0IGFjYWsgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLg0KDQojIyBTaWZhdC1TaWZhdCBKaWthIERpc3RyaWJ1c2kgJFxoYXR7cH0kIE5vcm1hbA0KDQpKaWthIGRpc3RyaWJ1c2kgc2FtcGxpbmcgcHJvcG9yc2kgJChcaGF0e3B9KSQgYmVyZGlzdHJpYnVzaSBub3JtYWwgZGFuIG1lbmdpa3V0aSBUZW9yZW1hIExpbWl0IFB1c2F0LCBtYWthIGFrYW4gbWVtaWxpa2kgc2lmYXQtc2lmYXQgYmVyaWt1dDoNCg0KKiBSYXRhLVJhdGEgJChcbXVfe1xoYXR7cH19KSQ6IFJhdGEtcmF0YSBkYXJpIHNlbXVhIHByb3BvcnNpIHNhbXBlbCAkKFxoYXR7cH0pJCB5YW5nIGRpZ2FidW5na2FuIGFkYWxhaCBzYW1hIGRlbmdhbiBwcm9wb3JzaSBwb3B1bGFzaSBzZWphdGkgUCAkKFxtdV97XGhhdHtwfX0gPSBQKSQuDQoNCiogU3RhbmRhcmQgRXJyb3IgJChcc2lnbWFfe1xoYXR7cH19KSQ6IFNpbXBhbmdhbiBiYWt1IGRhcmkgZGlzdHJpYnVzaSBzYW1wbGluZyBwcm9wb3JzaSBkaXNlYnV0IFN0YW5kYXJkIEVycm9yIGRhbiBkaWhpdHVuZyBtZW5nZ3VuYWthbiBydW11czoNCg0KJCRcc2lnbWFfe1xoYXR7cH19ID0gXHNxcnR7XGZyYWN7UCBcY2RvdCAoMS1QKX17bn19JCQNCg0KRGkgbWFuYSBuIGFkYWxhaCB1a3VyYW4gc2FtcGVsLCBQIGFkYWxhaCBwcm9wb3JzaSBrZWJlcmhhc2lsYW4sIGRhbiAxLVAgKHNlcmluZyBkaWxhbWJhbmdrYW4gUSkgYWRhbGFoIHByb3BvcnNpIGtlZ2FnYWxhbi4NCg0KIyMgUnVtdXMgU3RhbmRhcmlzYXNpIChaLXNjb3JlKSBQcm9wb3JzaQ0KDQpVbnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyAoYXJlYSBkaSBiYXdhaCBrdXJ2YSkgeWFuZyB0ZXJrYWl0IGRlbmdhbiBuaWxhaSAkXGhhdHtwfSQgdGVydGVudHUsIGtpdGEgZGFwYXQgbWVuZ2d1bmFrYW4gcnVtdXMgWi1zY29yZSB5YW5nIGRpc2VzdWFpa2FuIHVudHVrIHByb3BvcnNpOg0KDQokJFogPSBcZnJhY3tcaGF0e3B9IC0gUH17XHNpZ21hX3tcaGF0e3B9fX0gPSBcZnJhY3tcaGF0e3B9IC0gUH17XHNxcnR7XGZyYWN7UCgxLVApfXtufX19JCQNCg0KRGVuZ2FuIG1lbmdoaXR1bmcgWi1zY29yZSwga2l0YSBkYXBhdCBtZW5nZ3VuYWthbiB0YWJlbCBaIHVudHVrIG1lbmNhcmkgbHVhc2FuIGFyZWEgKHByb2JhYmlsaXRhcykgeWFuZyBkaWluZ2lua2FuLg0KDQojIyBTeWFyYXQgUGVuZXJhcGFuIFRlb3JlbWEgTGltaXQgUHVzYXQgKFRMUCkNCg0KU3lhcmF0IGFnYXIgZGlzdHJpYnVzaSBzYW1wbGluZyBwcm9wb3JzaSAkKFxoYXR7cH0pJCBkYXBhdCBkaXBlcmtpcmFrYW4gc2ViYWdhaSBkaXN0cmlidXNpIG5vcm1hbCBiZXJiZWRhIGRlbmdhbiBzeWFyYXQgdW50dWsgcmF0YS1yYXRhIHNhbXBlbCAkKFxiYXJ7eH0pJCB5YW5nIGhhbnlhIG1lbWVybHVrYW4gJG4gXGdlJCAzMC4NCg0KVW50dWsgcHJvcG9yc2kgJChcaGF0e3B9KSQsIFRlb3JlbWEgTGltaXQgUHVzYXQgZGFwYXQgZGl0ZXJhcGthbiBqaWthIGR1YSBrb25kaXNpIGJlcmlrdXQgdGVycGVudWhpIHNlY2FyYSBzaW11bHRhbjoNCg0KKiAkbiBcY2RvdCBQIFxnZSAxMDokIEp1bWxhaCBwZXJraXJhYW4ga2ViZXJoYXNpbGFuIGhhcnVzIGxlYmloIGJlc2FyIGRhcmkgYXRhdSBzYW1hIGRlbmdhbiAxMC4NCg0KKiAkbiBcY2RvdCAoMSAtIFApIFxnZSAxMDokIEp1bWxhaCBwZXJraXJhYW4ga2VnYWdhbGFuIGhhcnVzIGxlYmloIGJlc2FyIGRhcmkgYXRhdSBzYW1hIGRlbmdhbiAxMC4NCg0KSmlrYSBrZWR1YSBrb25kaXNpIGluaSB0ZXJwZW51aGksIG1ha2EgVExQIGRhcGF0IGRpdGVyYXBrYW4sIGRpc3RyaWJ1c2kgJFxoYXR7cH0kIGRpYXN1bXNpa2FuIG5vcm1hbCwgZGFuIHJ1bXVzIFotc2NvcmUgZGkgYXRhcyBkYXBhdCBkaWd1bmFrYW4uDQoNCjwvZGl2PiANCg0KLS0tDQoNCjxkaXYgY2xhc3M9ImV4cGxhbmF0aW9uLWJveCI+DQoNCiMgUmV2aWV3IFNhbXBsaW5nIERpc3RyaWJ1dGlvbg0KDQpWaWRlbyBpbmkgYmVyZnVuZ3NpIHNlYmFnYWkgdWxhc2FuIGRhbiBwZXJiYW5kaW5nYW4gZGFyaSB0aWdhIGtvbnNlcCBzdGF0aXN0aWsgeWFuZyBzYWxpbmcgdGVya2FpdOKAlFByb2JhYmlsaXRhcyBEYXNhciwgRGlzdHJpYnVzaSBCaW5vbWlhbCwgZGFuIERpc3RyaWJ1c2kgU2FtcGxpbmcgUHJvcG9yc2kgU2FtcGVs4oCUbWVsYWx1aSBjb250b2gga2FzdXMgeWFuZyBzYW1hOiBwZW5nYW1iaWxhbiBrZWxlcmVuZyBiZXJ3YXJuYS4gVHVqdWFubnlhIGFkYWxhaCB1bnR1ayBtZW51bmp1a2thbiBtZXRvZGUgcGVyaGl0dW5nYW4geWFuZyBwYWxpbmcgZWZpc2llbiBkYW4gdGVwYXQgdGVyZ2FudHVuZyBwYWRhIHVrdXJhbiBwZXJjb2JhYW4gKG4pLCBtdWxhaSBkYXJpIHNhbXBlbCBrZWNpbCB5YW5nIGRpaGl0dW5nIHNlY2FyYSBtYW51YWwgaGluZ2dhIHNhbXBlbCBzYW5nYXQgYmVzYXIgeWFuZyBtZW1lcmx1a2FuIHBlcmtpcmFhbiBEaXN0cmlidXNpIE5vcm1hbCBiZXJkYXNhcmthbiBUZW9yZW1hIExpbWl0IFB1c2F0IChUTFApLg0KDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2MwbUZFTF9TV3pFIiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIEthc3VzIDE6IFByb2JhYmlsaXRhcyBEYXNhciAoSnVtbGFoIFBlcmNvYmFhbiBuIFNhbmdhdCBLZWNpbCkNCg0KVW50dWsganVtbGFoIHBlcmNvYmFhbiAobikgeWFuZyBzYW5nYXQga2VjaWwgKG1pc2FsbnlhLCBtZW5hcmlrIGtlbGVyZW5nIHNlYmFueWFrIDMga2FsaSksIHByb2JhYmlsaXRhcyBkYXBhdCBkaWhpdHVuZyBzZWNhcmEgbWFudWFsIGRlbmdhbiBtZW1idWF0IGRhZnRhciBzZWx1cnVoIHJ1YW5nIHNhbXBlbCB5YW5nIG11bmdraW4uDQoNCioqTGFuZ2thaDoqKiBIaXR1bmcgcHJvYmFiaWxpdGFzIGtlYmVyaGFzaWxhbiAoUCkgZGFuIGtlZ2FnYWxhbiAoMS1QKSB0ZXJsZWJpaCBkYWh1bHUuDQoNCioqQ29udG9oOioqIEppa2EgcHJvYmFiaWxpdGFzIGtlbGVyZW5nIGhpamF1IChQKSBhZGFsYWggMCw0IGRhbiBrZWxlcmVuZyBiaXJ1ICgxLVApIGFkYWxhaCAwLDYuDQoNCioqUGVyaGl0dW5nYW46KiogVGVudHVrYW4gc2VtdWEga29tYmluYXNpIGhhc2lsIHlhbmcgbWVtZW51aGkgc3lhcmF0IChtaXNhbG55YSwgbWVuZGFwYXRrYW4gbWluaW1hbCBkdWEga2VsZXJlbmcgaGlqYXUpLiBQcm9iYWJpbGl0YXMgdW50dWsgc2V0aWFwIHVydXRhbiBkaWhpdHVuZyBkZW5nYW4gbWVuZ2FsaWthbiBwcm9iYWJpbGl0YXMgZGFyaSBzZXRpYXAgcGVyaXN0aXdhIGluZGVwZW5kZW4gKG1pc2FsbnlhLCAkMCw0IFx0aW1lcyAwLDQgXHRpbWVzIDAsNiQpLg0KDQoqKkhhc2lsIEFraGlyOioqIEp1bWxhaGthbiBwcm9iYWJpbGl0YXMgZGFyaSBzZW11YSB1cnV0YW4geWFuZyBtZW1lbnVoaSBzeWFyYXQgdGVyc2VidXQuIE1ldG9kZSBpbmkgbWVuZ2hhc2lsa2FuIHByb2JhYmlsaXRhcyBla3NhaywgdGV0YXBpIG1lbmphZGkgdGlkYWsgcHJha3RpcyBzZWlyaW5nIGJlcnRhbWJhaG55YSBqdW1sYWggcGVyY29iYWFuLg0KDQojIyBLYXN1cyAyOiBEaXN0cmlidXNpIEJpbm9taWFsIChKdW1sYWggUGVyY29iYWFuIG4gU2VkYW5nKQ0KDQpLZXRpa2EganVtbGFoIHBlcmNvYmFhbiAobikgYmVydGFtYmFoIG1lbmphZGkgdWt1cmFuIHNlZGFuZyAobWlzYWxueWEsIG1lbmFyaWsga2VsZXJlbmcgc2ViYW55YWsgNSBrYWxpKSwgbWV0b2RlIHJ1YW5nIHNhbXBlbCBtZW5qYWRpIHRpZGFrIGVmaXNpZW4uIFVudHVrIG1lbmRhcGF0a2FuIHByb2JhYmlsaXRhcyBla3NhayBkYXJpIGp1bWxhaCBrZWJlcmhhc2lsYW4gKGspIHRlcnRlbnR1LCBkaWd1bmFrYW4gUnVtdXMgRGlzdHJpYnVzaSBCaW5vbWlhbC4NCg0KKipQZW5lcmFwYW46KiogSmlrYSBwZXJ0YW55YWFuIG1lbWludGEgcHJvYmFiaWxpdGFzICJtaW5pbWFsIiBhdGF1ICJwYWxpbmcgYmFueWFrIiBzZWp1bWxhaCBrZWJlcmhhc2lsYW4sIGtpdGEgcGVybHUgbWVuZ2d1bmFrYW4gcnVtdXMgQmlub21pYWwgc2VjYXJhIGJlcnVsYW5nIHVudHVrIHNldGlhcCBuaWxhaSBrIHlhbmcgdGVybWFzdWsuDQoNCioqQ29udG9oOioqIFVudHVrIG1lbmNhcmkgcHJvYmFiaWxpdGFzIG1pbmltYWwgMiBrZWxlcmVuZyBoaWphdSBkYXJpIDUgdGFyaWthbiwga2l0YSBoYXJ1cyBtZW5naGl0dW5nIHNlY2FyYSB0ZXJwaXNhaCBwcm9iYWJpbGl0YXMgdW50dWsgaz0yLCBrPTMsIGs9NCwgZGFuIGs9NSwgbGFsdSBtZW5qdW1sYWhrYW4gaGFzaWxueWEuIE1ldG9kZSBpbmkganVnYSBtZW5naGFzaWxrYW4gcHJvYmFiaWxpdGFzIGVrc2FrLCB0ZXRhcGkgbXVsYWkgbWVtYWthbiB3YWt0dSBqaWthIGp1bWxhaCBrIHlhbmcgaGFydXMgZGloaXR1bmcgYmFueWFrLg0KDQojIyBLYXN1cyAzOiBEaXN0cmlidXNpIFNhbXBsaW5nIFByb3BvcnNpIFNhbXBlbCAoSnVtbGFoIFBlcmNvYmFhbiBuIEJlc2FyKSANCg0KVW50dWsganVtbGFoIHBlcmNvYmFhbiAobikgeWFuZyBzYW5nYXQgYmVzYXIgKG1pc2FsbnlhLCBtZW5hcmlrIGtlbGVyZW5nIHNlYmFueWFrIDEwMCBrYWxpKSwgYmFpayBtZXRvZGUgcnVhbmcgc2FtcGVsIG1hdXB1biBydW11cyBiaW5vbWlhbCBiZXJ1bGFuZyBtZW5qYWRpIHRpZGFrIG11bmdraW4gZGlsYWt1a2FuLiBEYWxhbSBrYXN1cyBpbmksIGtpdGEgbWVuZ2d1bmFrYW4gRGlzdHJpYnVzaSBTYW1wbGluZyBQcm9wb3JzaSBzZWJhZ2FpIHBlcmtpcmFhbiAoYXBwcm94aW1hdGUgcHJvYmFiaWxpdHkpIG1lbmdndW5ha2FuIERpc3RyaWJ1c2kgTm9ybWFsLg0KDQojIyMgVmVyaWZpa2FzaSBTeWFyYXQgVExQDQoNClNlYmVsdW0gbWVuZ2d1bmFrYW4gcGVya2lyYWFuIE5vcm1hbCwga2l0YSBoYXJ1cyBtZW1hc3Rpa2FuIFRlb3JlbWEgTGltaXQgUHVzYXQgKFRMUCkgZGFwYXQgZGl0ZXJhcGthbiB1bnR1ayBwcm9wb3JzaS4gRHVhIHN5YXJhdCBoYXJ1cyB0ZXJwZW51aGk6DQoNCiogU3lhcmF0IEtlYmVyaGFzaWxhbjogSnVtbGFoIGtlYmVyaGFzaWxhbiB5YW5nIGRpaGFyYXBrYW4gJChuIFxjZG90IFApJCBoYXJ1cyAkXGdlIDEwLiQNCg0KKiBTeWFyYXQgS2VnYWdhbGFuOiBKdW1sYWgga2VnYWdhbGFuIHlhbmcgZGloYXJhcGthbiAkKG4gXGNkb3QgKDEtUCkpJCBoYXJ1cyAkXGdlIDEwLiQNCg0KSmlrYSBrZWR1YSBzeWFyYXQgaW5pIHRlcnBlbnVoaSAoc2VwZXJ0aSBjb250b2ggJDEwMCBcdGltZXMgMCw0ID0gNDAkIGRhbiAkMTAwIFx0aW1lcyAwLDYgPSA2MCQpLCBtYWthIGRpc3RyaWJ1c2kgJFxoYXR7cH0kIGRhcGF0IGRpYXN1bXNpa2FuIE5vcm1hbC4NCg0KIyMjIFBlcmhpdHVuZ2FuIGRlbmdhbiBaLXNjb3JlDQoNClNldGVsYWggVExQIGRpcGFzdGlrYW4gYmVybGFrdSwgcGVyaGl0dW5nYW4gZGlsYWt1a2FuIG1lbmdndW5ha2FuIFJ1bXVzIFN0YW5kYXJpc2FzaSBaLXNjb3JlIHVudHVrIHByb3BvcnNpOg0KDQokJFogPSBcZnJhY3tcaGF0e3B9IC0gUH17XHNxcnR7XGZyYWN7UCgxLVApfXtufX19JCQNCg0KKipMYW5na2FoLWxhbmdrYWg6KioNCg0KMS4gVGVudHVrYW4gcHJvcG9yc2kgc2FtcGVsIG1pbmltYWwgJChcaGF0e3B9KSQgeWFuZyBkaWNhcmkgKG1pc2FsbnlhLCAzNSBrZWxlcmVuZyBoaWphdSBkYXJpIDEwMCwgc2VoaW5nZ2EgJFxoYXR7cH0gPSAwLDM1JCkuDQoNCjIuIEhpdHVuZyBTa29yIFogbWVuZ2d1bmFrYW4gcnVtdXMgZGkgYXRhcy4NCg0KMy4gR3VuYWthbiBUYWJlbCBaIHVudHVrIG1lbmVtdWthbiBsdWFzYW4gYXJlYSAocHJvYmFiaWxpdGFzKSB5YW5nIHRlcmthaXQgZGVuZ2FuIFNrb3IgWi4NCg0KNC4gSGl0dW5nIHByb2JhYmlsaXRhcyB5YW5nIGRpbWludGEgKG1pc2FsbnlhLCBsdWFzIGtlIGthbmFuIHVudHVrICJzZXRpZGFrbnlhIDM1IikgZGVuZ2FuIG1lbmd1cmFuZ2thbiBsdWFzIHlhbmcgZGl0ZW11a2FuIGRhcmkgdG90YWwgYXJlYSBrdXJ2YSAoMTAwJSBhdGF1IDEpLg0KDQoqKkNhdGF0YW4gUGVudGluZzoqKiBNZXRvZGUgaW5pIHNlbGFsdSBtZW5naGFzaWxrYW4gcHJvYmFiaWxpdGFzIHBlcmtpcmFhbiAoYXBwcm94aW1hdGUgcHJvYmFiaWxpdHkpLCB5YW5nIGJpYXNhbnlhIGN1a3VwIGFrdXJhdCB1bnR1ayB0dWp1YW4gc3RhdGlzdGlrIHRpbmdrYXQgZGFzYXIuDQoNCjwvZGl2PiANCg0KLS0tDQoNCjxkaXYgY2xhc3M9ImV4cGxhbmF0aW9uLWJveCI+DQoNCiMgUmVmZXJlbnNpDQoNCiogaHR0cHM6Ly9ib29rZG93bi5vcmcvZHNjaWVuY2VsYWJzL2ludHJvX3N0YXRpc3RpY3MvMDctUHJvYmFiaWxpdHlfRGlzdHJpYnV0aW9ucy5odG1sDQoNCiogaHR0cHM6Ly95b3V0dS5iZS9aeVV6UlZhNmhDTT9zaT1LeVJOeWJrUG44S2VUMGh3DQoNCiogaHR0cHM6Ly95b3V0dS5iZS83UzdqNzVkM0dNND9zaT1vMDlncGhRNllBc2RVY3RTDQoNCiogaHR0cHM6Ly95b3V0dS5iZS9pdmQ4d0VIbk1DZz9zaT01MGFER1FfUWdmc0ZoRk9QDQoNCiogaHR0cHM6Ly95b3V0dS5iZS9xMmU0bUswRlRidz9zaT1HSF9wWThKeTk0YkhZaTZGDQoNCiogaHR0cHM6Ly95b3V0dS5iZS9jMG1GRUxfU1d6RT9zaT1YT0hOMkc3bTFzZG1LTVVjDQoNCiogTGluZCwgRC4gQS4sIE1hcmNoYWwsIFcuIEcuLCAmIFdhdGhlbiwgUy4gQS4gKDIwMjEpLiBTdGF0aXN0aWNhbCB0ZWNobmlxdWVzIGluIGJ1c2luZXNzIGFuZCBlY29ub21pY3MgKDE4dGggZWQuKS4gTWNHcmF3IEhpbGwuDQoNCiogV2FscG9sZSwgUi4gRS4sIE15ZXJzLCBSLiBILiwgTXllcnMsIFMuIEwuLCAmIFllLCBLLiAoMjAxNykuIFByb2JhYmlsaXR5ICYgc3RhdGlzdGljcyBmb3IgZW5naW5lZXJzICYgc2NpZW50aXN0cyAoOXRoIGVkLikuIFBlYXJzb24gRWR1Y2F0aW9uLg0KDQoqIFRyaW9sYSwgTS4gRi4gKDIwMjQpLiBFbGVtZW50YXJ5IHN0YXRpc3RpY3MgKDE0dGggZWQuKS4gUGVhcnNvbiBFZHVjYXRpb24uDQoNCiogTGV2aW4sIEouLCAmIEZveCwgSi4gQS4gKDIwMTgpLiBFbGVtZW50YXJ5IHN0YXRpc3RpY3MgaW4gc29jaWFsIHJlc2VhcmNoICgxM3RoIGVkLikuIChEaXRlcmplbWFoa2FuIGRhbiBkaXRlcmJpdGthbiBvbGVoIGJlcmJhZ2FpIHBlbmVyYml0IGxva2FsKS4NCg0KPC9kaXY+IA0KDQotLS0NCg0KDQoNCg==