Tugas Individu

Probabilitas

Foto Diri

Penjelasan lengkap mengenai probabilitas, Teorema Bayes, dan bagaimana keduanya saling berkorelasi.


1. Probabilitas

Definisi

Probabilitas adalah ukuran kemungkinan terjadinya suatu peristiwa dalam ruang sampel tertentu. Probabilitas dinyatakan dengan nilai antara 0 dan 1: - 0 berarti peristiwa tidak mungkin terjadi. - 1 berarti peristiwa pasti terjadi.

Dalam bentuk persentase, probabilitas sering dinyatakan antara 0% dan 100%.

Rumus Dasar Probabilitas

Jika \(S\) adalah ruang sampel dari semua kemungkinan hasil dan \(A\) adalah kejadian tertentu, maka probabilitas \(P(A)\) didefinisikan sebagai: \[ P(A) = \frac{\text{Jumlah kejadian dalam } A}{\text{Jumlah kejadian dalam } S} \]

Jenis Probabilitas

  1. Probabilitas Marginal: Probabilitas suatu kejadian tunggal tanpa mempertimbangkan kejadian lain.
    Contoh: Probabilitas hujan hari ini, \(P(\text{Hujan})\).

  2. Probabilitas Bersyarat: Probabilitas suatu kejadian terjadi, diberikan informasi bahwa kejadian lain telah terjadi.
    Contoh: Probabilitas seseorang sakit flu jika ia demam, \(P(\text{Flu} \mid \text{Demam})\).

  3. Probabilitas Gabungan: Probabilitas dua kejadian terjadi bersama-sama.
    Contoh: Probabilitas seseorang demam dan sakit flu, \(P(\text{Demam} \cap \text{Flu})\).


2. Teorema Bayes

Definisi

Teorema Bayes adalah aturan dalam probabilitas yang digunakan untuk menghitung probabilitas bersyarat. Teorema ini memungkinkan kita untuk memperbarui keyakinan awal terhadap suatu kejadian berdasarkan informasi baru.

Rumus Teorema Bayes

\[ P(A \mid B) = \frac{P(B \mid A) \cdot P(A)}{P(B)} \]

Di sini: - \(P(A \mid B)\): Probabilitas kejadian \(A\) terjadi, diberikan \(B\) telah terjadi (probabilitas bersyarat). - \(P(B \mid A)\): Probabilitas kejadian \(B\) terjadi, diberikan \(A\) telah terjadi. - \(P(A)\): Probabilitas awal atau prior kejadian \(A\) (probabilitas marginal). - \(P(B)\): Probabilitas awal atau prior kejadian \(B\) (probabilitas marginal).

Cara Kerja

Teorema Bayes bekerja dengan memperbarui informasi: 1. Kita mulai dengan probabilitas awal (\(P(A)\)), yaitu keyakinan awal terhadap kejadian \(A\). 2. Ketika ada informasi baru (\(B\)), kita menghitung seberapa besar informasi tersebut cocok dengan kejadian \(A\) (\(P(B \mid A)\)). 3. Dengan menggunakan informasi ini, kita menghitung probabilitas baru (\(P(A \mid B)\)).

Aplikasi Teorema Bayes

  1. Deteksi Penipuan: Menentukan apakah transaksi merupakan penipuan berdasarkan pola tertentu.
  2. Diagnosis Medis: Menghitung kemungkinan pasien memiliki penyakit tertentu berdasarkan gejala.
  3. Klasifikasi dalam Pembelajaran Mesin: Misalnya, algoritma Naïve Bayes dalam klasifikasi data.

3. Korelasi Antara Probabilitas dan Teorema Bayes

Probabilitas Sebagai Dasar Teorema Bayes

Teorema Bayes adalah salah satu aplikasi tingkat lanjut dari probabilitas. Probabilitas dasar (\(P(A)\), \(P(B)\), dan \(P(B \mid A)\)) menjadi komponen utama dalam menghitung probabilitas bersyarat (\(P(A \mid B)\)).

Keterkaitan Utama

  1. Probabilitas Awal (\(P(A)\)): Teorema Bayes dimulai dengan keyakinan awal kita tentang kejadian \(A\).
  2. Informasi Baru (\(P(B \mid A)\)): Probabilitas bahwa informasi baru cocok dengan kejadian \(A\) menjadi elemen penting dalam memperbarui keyakinan.
  3. Probabilitas Bersyarat (\(P(A \mid B)\)): Hasil akhir dari Teorema Bayes adalah probabilitas bersyarat, yang mencerminkan keyakinan yang diperbarui terhadap \(A\), setelah mempertimbangkan \(B\).

Contoh

Misalkan: - Probabilitas awal seseorang sakit flu adalah 5% (\(P(\text{Flu}) = 0.05\)). - Jika seseorang demam, 80% dari mereka biasanya sakit flu (\(P(\text{Demam} \mid \text{Flu}) = 0.8\)). - Probabilitas seseorang demam secara umum adalah 10% (\(P(\text{Demam}) = 0.1\)).

Dengan Teorema Bayes: \[ P(\text{Flu} \mid \text{Demam}) = \frac{P(\text{Demam} \mid \text{Flu}) \cdot P(\text{Flu})}{P(\text{Demam})} \] \[ P(\text{Flu} \mid \text{Demam}) = \frac{0.8 \cdot 0.05}{0.1} = 0.4 \text{ atau } 40\% \]

Interpretasi: Jika seseorang demam, maka kemungkinan dia sakit flu meningkat menjadi 40%.

Berdasarkan penjelasan diatas dapat disimpulkan bahwa:

  1. Probabilitas adalah dasar pengukuran kemungkinan suatu kejadian, baik dalam konteks kejadian tunggal (marginal), kombinasi kejadian (gabungan), atau kejadian yang bergantung pada informasi lain (bersyarat).
  2. Teorema Bayes adalah alat untuk memperbarui probabilitas dengan informasi baru, yang memungkinkan kita membuat keputusan lebih cerdas berdasarkan data.
  3. Hubungan antara keduanya adalah fungsional dan tak terpisahkan. Teorema Bayes menggunakan prinsip probabilitas untuk memberikan jawaban yang lebih akurat dalam situasi dengan ketidakpastian dan informasi tambahan.

Studi Kasus 1

Penerapan Probabilitas dalam Prediksi Kualitas Produk:


Masalah yang Ingin Diselesaikan

Perusahaan manufaktur menghadapi tantangan dalam memastikan kualitas produk. Sebagai bagian dari evaluasi kualitas, mereka ingin mengetahui seberapa besar kemungkinan produk cacat jika diketahui: 1. Komponen yang digunakan berkualitas rendah. 2. Proses produksi dilakukan di bawah standar.

Apa yang Ingin Kita Cari?

Kita diminta menghitung probabilitas bahwa suatu produk cacat (\(D = Yes\)) berdasarkan informasi: - Komponen berkualitas rendah (\(C = Low\)). - Proses produksi di bawah standar (\(P = Below\)).

Dengan kata lain, kita mencari probabilitas bersyarat: \[ P(D = Yes \mid C = Low, P = Below) \]

Mengapa Menggunakan Teorema Bayes?

Teorema Bayes adalah alat yang sangat berguna untuk menghitung probabilitas bersyarat. Dalam konteks ini, Teorema Bayes memungkinkan kita untuk memperbarui probabilitas bahwa produk cacat (\(D = Yes\)) berdasarkan dua informasi tambahan (\(C = Low\) dan \(P = Below\)).


Data yang Diberikan

Data historis perusahaan memberikan probabilitas dasar sebagai berikut:

  1. Probabilitas produk cacat:
    • \(P(D = Yes) = 5\%\) (5% dari semua produk cacat).
    • \(P(D = No) = 95\%\) (95% dari semua produk tidak cacat).
  2. Probabilitas terkait komponen dan proses produksi:
    • Untuk produk cacat (\(D = Yes\)):
      • 60% menggunakan komponen berkualitas rendah (\(P(C = Low \mid D = Yes) = 60\%\)).
      • 70% diproduksi di bawah standar (\(P(P = Below \mid D = Yes) = 70\%\)).
    • Untuk produk tidak cacat (\(D = No\)):
      • 20% menggunakan komponen berkualitas rendah (\(P(C = Low \mid D = No) = 20\%\)).
      • 30% diproduksi di bawah standar (\(P(P = Below \mid D = No) = 30\%\)).

Langkah-Langkah Menggunakan Teorema Bayes

1. Rumus Teorema Bayes

Rumus utama Teorema Bayes untuk probabilitas bersyarat: \[ P(D = Yes \mid C = Low, P = Below) = \frac{P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes)}{P(C = Low, P = Below)} \]

Dalam rumus ini: - \(P(D = Yes \mid C = Low, P = Below)\): Probabilitas produk cacat, jika diketahui komponen berkualitas rendah dan proses produksi di bawah standar. - \(P(C = Low, P = Below \mid D = Yes)\): Probabilitas bahwa produk menggunakan komponen berkualitas rendah dan proses produksi di bawah standar, jika produk cacat. - \(P(D = Yes)\): Probabilitas dasar bahwa produk cacat. - \(P(C = Low, P = Below)\): Probabilitas produk menggunakan komponen rendah dan proses produksi di bawah standar secara keseluruhan.


2. Menghitung Komponen Rumus

a. Hitung \(P(C = Low, P = Below \mid D = Yes)\)

\[ P(C = Low, P = Below \mid D = Yes) = P(C = Low \mid D = Yes) \cdot P(P = Below \mid D = Yes) \] Substitusi data: \[ P(C = Low, P = Below \mid D = Yes) = 60\% \cdot 70\% = 42\% \]

b. Hitung \(P(C = Low, P = Below \mid D = No)\)

\[ P(C = Low, P = Below \mid D = No) = P(C = Low \mid D = No) \cdot P(P = Below \mid D = No) \] Substitusi data: \[ P(C = Low, P = Below \mid D = No) = 20\% \cdot 30\% = 6\% \]

c. Hitung \(P(C = Low, P = Below)\)

Menggunakan hukum probabilitas total: \[ P(C = Low, P = Below) = P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes) + P(C = Low, P = Below \mid D = No) \cdot P(D = No) \] Substitusi data: \[ P(C = Low, P = Below) = (42\% \cdot 5\%) + (6\% \cdot 95\%) \] \[ P(C = Low, P = Below) = 2.1\% + 5.7\% = 7.8\% \]


3. Hitung Probabilitas Bersyarat

Gunakan rumus Teorema Bayes: \[ P(D = Yes \mid C = Low, P = Below) = \frac{P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes)}{P(C = Low, P = Below)} \] Substitusi nilai: \[ P(D = Yes \mid C = Low, P = Below) = \frac{42\% \cdot 5\%}{7.8\%} \] \[ P(D = Yes \mid C = Low, P = Below) = \frac{2.1\%}{7.8\%} \approx 26.92\% \]


Kesimpulan

Dalam Studi Kasus 1, kita berhasil menggunakan Teorema Bayes untuk menghitung probabilitas bersyarat bahwa suatu produk akan cacat (\(D = Yes\)), dengan informasi tambahan bahwa produk tersebut menggunakan komponen berkualitas rendah (\(C = Low\)) dan diproduksi dengan proses di bawah standar (\(P = Below\)).

Hasil perhitungan menunjukkan bahwa probabilitas tersebut adalah 26.92%. Berikut adalah penjelasan lengkap untuk menyimpulkan hasil ini:

1. Relevansi Teorema Bayes

Teorema Bayes merupakan alat yang sangat penting dalam pengambilan keputusan berbasis data. Dengan menggunakan Teorema Bayes, kita dapat menghitung probabilitas kondisi tertentu (\(D = Yes\)) berdasarkan informasi baru (\(C = Low, P = Below\)) yang tersedia. Rumus utama dari Teorema Bayes adalah: \[ P(D = Yes \mid C = Low, P = Below) = \frac{P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes)}{P(C = Low, P = Below)} \]

Rumus ini menggabungkan probabilitas awal (\(P(D = Yes)\)), probabilitas bersyarat (\(P(C = Low, P = Below \mid D = Yes)\)), dan probabilitas total (\(P(C = Low, P = Below)\)) untuk memberikan probabilitas bersyarat yang diperbarui (\(P(D = Yes \mid C = Low, P = Below)\)).

2. Mengapa Probabilitas Tidak Tinggi?

Meskipun diketahui bahwa komponen berkualitas rendah dan proses di bawah standar meningkatkan risiko cacat, hasil akhirnya tetap 26.92% karena beberapa alasan: - Hanya 5% dari semua produk yang cacat (\(P(D = Yes) = 5\%\)). Probabilitas dasar ini membatasi hasil akhir. - Sebagian besar produk (\(95\%\)) tidak cacat (\(P(D = No)\)), sehingga kombinasi komponen rendah dan proses buruk juga sering terjadi pada produk yang tidak cacat.

3. Mengapa Hasil Ini Penting?

Probabilitas bersyarat ini sangat penting dalam pengambilan keputusan: - Perusahaan dapat menggunakan hasil ini untuk fokus pada proses inspeksi dan pengawasan komponen. Jika produk menggunakan komponen berkualitas rendah dan prosesnya di bawah standar, ada risiko lebih tinggi bahwa produk akan cacat. - Namun, probabilitas 26.92% menunjukkan bahwa kombinasi ini tidak selalu menghasilkan produk cacat, sehingga keputusan untuk memeriksa seluruh produk mungkin tidak efisien secara biaya.

4. Bagaimana Teorema Bayes Membantu di Dunia Nyata?

  • Teorema Bayes digunakan secara luas dalam analisis risiko, deteksi penipuan, diagnosis medis, dan pemeliharaan prediktif.
  • Dalam konteks ini, Teorema Bayes memungkinkan perusahaan memanfaatkan data historis untuk memperkirakan risiko dengan lebih akurat.
  • Kombinasi probabilitas bersyarat \(P(C = Low, P = Below \mid D = Yes)\) dan probabilitas dasar \(P(D = Yes)\) mencerminkan hubungan antara penyebab (komponen dan proses) dengan efek (cacat produk).

5. Bagaimana Probabilitas Bisa Berubah?

Jika asumsi data berubah, hasil akhirnya juga akan berbeda. Misalnya: - Jika \(P(D = Yes)\) meningkat menjadi 10%, hasil akhir akan lebih tinggi. - Jika produk cacat hanya sebagian kecil yang menggunakan komponen rendah atau proses buruk, probabilitas bersyarat akan lebih rendah.

6. Nilai Praktis dari Probabilitas 26.92%

Hasil ini menunjukkan bahwa ada risiko signifikan (sekitar 27%) bahwa produk akan cacat dalam kondisi yang disebutkan. Dengan informasi ini, perusahaan dapat: - Mengurangi risiko dengan meningkatkan kualitas komponen dan standar produksi. - Mengalokasikan sumber daya untuk inspeksi pada produk dengan risiko lebih tinggi.

Kesimpulan Akhir:
Teorema Bayes memungkinkan kita untuk memperbarui keyakinan awal (\(P(D = Yes)\)) dengan informasi tambahan (\(C = Low\) dan \(P = Below\)). Hasil ini memberikan wawasan yang mendalam tentang risiko cacat produk, membantu perusahaan membuat keputusan yang lebih baik untuk mengoptimalkan kualitas dan efisiensi.

Studi Kasus 2

Penerapan Probabilitas dalam Deteksi Penipuan Transaksi:

Sebuah perusahaan e-commerce ingin mendeteksi transaksi yang berpotensi penipuan. Berdasarkan data historis:

  1. Hanya 1% transaksi yang merupakan penipuan (\(P(F = Fraud) = 1\%\)).

  2. 99% transaksi adalah transaksi normal (\(P(F = Not Fraud) = 99\%\)).

Fitur tambahan untuk mendeteksi penipuan transaksi: - Lokasi transaksi (\(L\)): Apakah dilakukan di luar negeri (Foreign). - Jumlah pembelian (\(A\)): Apakah lebih dari $500 (High). - Metode pembayaran (\(M\)): Menggunakan kartu kredit (Credit Card).

Dari data historis: - Untuk transaksi penipuan (\(F = Fraud\)): - 60% dilakukan di luar negeri (\(P(L = Foreign \mid F = Fraud) = 60\%\)). - 70% memiliki jumlah pembelian lebih dari $500 (\(P(A = High \mid F = Fraud) = 70\%\)). - 80% menggunakan kartu kredit (\(P(M = Credit Card \mid F = Fraud) = 80\%\)). - Untuk transaksi normal (\(F = Not Fraud\)): - 20% dilakukan di luar negeri (\(P(L = Foreign \mid F = Not Fraud) = 20\%\)). - 10% memiliki jumlah pembelian lebih dari $500 (\(P(A = High \mid F = Not Fraud) = 10\%\)). - 50% menggunakan kartu kredit (\(P(M = Credit Card \mid F = Not Fraud) = 50\%\)).

Tujuan: Hitung probabilitas bahwa transaksi merupakan penipuan (\(F = Fraud\)) jika diketahui bahwa transaksi:
1. Dilakukan di luar negeri (\(L = Foreign\)).
2. Jumlah pembelian lebih dari $500 (\(A = High\)).
3. Menggunakan kartu kredit (\(M = Credit Card\)).


Langkah-Langkah

1. Gunakan Rumus Teorema Bayes

\[ P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A, M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)} \]

2. Data Awal dalam Persentase

  • Probabilitas transaksi penipuan:
    • \(P(F = Fraud) = 1\%\)
    • \(P(F = Not Fraud) = 99\%\)
  • Probabilitas fitur untuk transaksi penipuan:
    • \(P(L = Foreign \mid F = Fraud) = 60\%\)
    • \(P(A = High \mid F = Fraud) = 70\%\)
    • \(P(M = Credit Card \mid F = Fraud) = 80\%\)
  • Probabilitas fitur untuk transaksi normal:
    • \(P(L = Foreign \mid F = Not Fraud) = 20\%\)
    • \(P(A = High \mid F = Not Fraud) = 10\%\)
    • \(P(M = Credit Card \mid F = Not Fraud) = 50\%\)

3. Hitung Komponen Rumus

a. Hitung \(P(L, A, M \mid F = Fraud)\):

Dengan asumsi independensi antar fitur: \[ P(L, A, M \mid F = Fraud) = P(L = Foreign \mid F = Fraud) \cdot P(A = High \mid F = Fraud) \cdot P(M = Credit Card \mid F = Fraud) \] Substitusi nilai (persentase): \[ P(L, A, M \mid F = Fraud) = 60\% \cdot 70\% \cdot 80\% = 33.6\% \]

b. Hitung \(P(L, A, M \mid F = Not Fraud)\):

Dengan asumsi independensi antar fitur: \[ P(L, A, M \mid F = Not Fraud) = P(L = Foreign \mid F = Not Fraud) \cdot P(A = High \mid F = Not Fraud) \cdot P(M = Credit Card \mid F = Not Fraud) \] Substitusi nilai: \[ P(L, A, M \mid F = Not Fraud) = 20\% \cdot 10\% \cdot 50\% = 1\% \]

c. Hitung \(P(L, A, M)\):

Menggunakan hukum probabilitas total: \[ P(L, A, M) = P(L, A, M \mid F = Fraud) \cdot P(F = Fraud) + P(L, A, M \mid F = Not Fraud) \cdot P(F = Not Fraud) \] Substitusi nilai (persentase): \[ P(L, A, M) = (33.6\% \cdot 1\%) + (1\% \cdot 99\%) \] \[ P(L, A, M) = 0.336\% + 0.99\% = 1.326\% \]


4. Hitung Probabilitas Bersyarat

Gunakan rumus: \[ P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A, M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)} \] Substitusi nilai (persentase): \[ P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{33.6\% \cdot 1\%}{1.326\%} \] \[ P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{0.336\%}{1.326\%} \approx 25.34\% \]


Kesimpulan

Dalam Studi Kasus 2, kita berhasil menggunakan Teorema Bayes untuk menghitung probabilitas bersyarat bahwa suatu transaksi adalah penipuan (\(F = Fraud\)), dengan informasi tambahan bahwa:

  1. Transaksi dilakukan di luar negeri (\(L = Foreign\)).
  2. Jumlah pembelian lebih dari $500 (\(A = High\)).
  3. Metode pembayaran menggunakan kartu kredit (\(M = Credit Card\)).

Hasil perhitungan menunjukkan bahwa probabilitas tersebut adalah 25.34%. Berikut adalah penjelasan lengkap untuk menyimpulkan hasil ini:

1. Relevansi Teorema Bayes

Teorema Bayes adalah alat yang sangat penting dalam analisis risiko dan deteksi anomali. Dalam konteks ini, Teorema Bayes memungkinkan kita untuk memperbarui probabilitas awal (\(P(F = Fraud)\)) berdasarkan informasi tambahan (\(L = Foreign, A = High, M = Credit Card\)). Rumus utamanya adalah: \[ P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A, M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)} \]

Rumus ini menggabungkan probabilitas awal, probabilitas bersyarat, dan probabilitas total untuk memberikan prediksi berbasis data yang lebih akurat.

2. Mengapa Probabilitas Tidak Tinggi?

Meskipun ketiga fitur (lokasi, jumlah pembelian, dan metode pembayaran) meningkatkan kemungkinan penipuan, hasil akhirnya hanya 25.34%. Hal ini disebabkan oleh: - Probabilitas dasar bahwa suatu transaksi adalah penipuan (\(P(F = Fraud)\)) sangat kecil, yaitu hanya 1%. - Sebagian besar transaksi (\(99\%\)) bukan penipuan, sehingga fitur seperti lokasi luar negeri, jumlah pembelian tinggi, dan penggunaan kartu kredit juga sering terjadi pada transaksi yang bukan penipuan.

3. Mengapa Hasil Ini Penting?

Probabilitas bersyarat ini sangat penting dalam pengambilan keputusan: - Perusahaan dapat memprioritaskan pemeriksaan pada transaksi dengan fitur seperti ini karena memiliki risiko lebih tinggi dibandingkan transaksi biasa. - Namun, probabilitas 25.34% menunjukkan bahwa tidak semua transaksi dengan fitur ini adalah penipuan, sehingga pemeriksaan secara selektif lebih efisien dibandingkan memeriksa seluruh transaksi.

4. Bagaimana Teorema Bayes Membantu di Dunia Nyata?

  • Teorema Bayes digunakan secara luas dalam deteksi penipuan, analisis risiko, dan pengambilan keputusan berbasis data.
  • Dalam konteks ini, Teorema Bayes memungkinkan perusahaan untuk memperkirakan risiko transaksi berdasarkan data historis yang ada.
  • Probabilitas bersyarat \(P(L, A, M \mid F = Fraud)\) dan \(P(F = Fraud)\) mencerminkan hubungan antara penyebab (fitur transaksi) dengan efek (penipuan).

5. Bagaimana Probabilitas Bisa Berubah?

Jika asumsi data berubah, hasil akhirnya juga akan berubah. Contoh: - Jika \(P(F = Fraud)\) meningkat menjadi 5%, probabilitas akhir juga akan meningkat. - Jika transaksi penipuan memiliki pola baru yang berbeda dari data historis (misalnya, lebih jarang menggunakan kartu kredit), probabilitas bersyarat akan berubah.

6. Nilai Praktis dari Probabilitas 25.34%

Hasil ini menunjukkan bahwa ada risiko signifikan bahwa transaksi dengan fitur ini adalah penipuan. Dengan informasi ini, perusahaan dapat: - Meningkatkan efisiensi pemeriksaan dengan fokus pada transaksi dengan risiko tinggi. - Mengurangi biaya operasional dengan menghindari pemeriksaan transaksi berisiko rendah.

Kesimpulan Akhir:
Teorema Bayes memungkinkan kita untuk memperbarui keyakinan awal (\(P(F = Fraud)\)) dengan informasi tambahan (\(L = Foreign, A = High, M = Credit Card\)). Hasil ini memberikan wawasan mendalam tentang risiko transaksi, membantu perusahaan mendeteksi penipuan secara lebih efisien, dan meningkatkan akurasi pengambilan keputusan berbasis data.

Referensi

Siregar, B. (2024). Konsep dasar probabilitas. Diakses dari https://bookdown.org/dsciencelabs/statistika_dasar/_book/Konsep_Dasar_Probabilitas.html

LOPEZ, J. (2022). Epistemologi, Probabilitas, dan Sains. Pengantar Filsafat: Epistemologi.

Handayani, R., & Purnomo, A. S. (2024). Penerapan Teorema Bayes Untuk Mendiagnosa Hama dan Penyakit Pada Tanaman Kelapa Sawit. JEKIN-Jurnal Teknik Informatika, 4(2), 287-299.

Syamsul, M. (2022). Bab 2 Probabilitas. Statistik Kesehatan: Teori dan Aplikasi, 10.

Marliana, R. R., & Stat, M. (2016). Statistika dan Probabilitas. Retrieved April, 1, 2023.

LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1Ig0Kc3VidGl0bGU6ICJQcm9iYWJpbGl0YXMiDQphdXRob3I6ICJPbGl2aWEgTWVpbGluZGEgRGF2dGluIFBlc2lyZXJvbiINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgc3JjPSJMSUJJLmpwZyIgd2lkdGg9IjMwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IkZvdG8gRGlyaSI+DQoNCiMgUGVuamVsYXNhbiBsZW5na2FwIG1lbmdlbmFpICoqcHJvYmFiaWxpdGFzKiosICoqVGVvcmVtYSBCYXllcyoqLCBkYW4gYmFnYWltYW5hIGtlZHVhbnlhIHNhbGluZyBiZXJrb3JlbGFzaS4NCg0KLS0tDQoNCiMjICoqMS4gUHJvYmFiaWxpdGFzKioNCg0KIyMjICoqRGVmaW5pc2kqKg0KUHJvYmFiaWxpdGFzIGFkYWxhaCB1a3VyYW4ga2VtdW5na2luYW4gdGVyamFkaW55YSBzdWF0dSBwZXJpc3Rpd2EgZGFsYW0gcnVhbmcgc2FtcGVsIHRlcnRlbnR1LiBQcm9iYWJpbGl0YXMgZGlueWF0YWthbiBkZW5nYW4gbmlsYWkgYW50YXJhIDAgZGFuIDE6DQotICoqMCoqIGJlcmFydGkgcGVyaXN0aXdhICoqdGlkYWsgbXVuZ2tpbiB0ZXJqYWRpKiouDQotICoqMSoqIGJlcmFydGkgcGVyaXN0aXdhICoqcGFzdGkgdGVyamFkaSoqLg0KDQpEYWxhbSBiZW50dWsgcGVyc2VudGFzZSwgcHJvYmFiaWxpdGFzIHNlcmluZyBkaW55YXRha2FuIGFudGFyYSAwJSBkYW4gMTAwJS4NCg0KIyMjICoqUnVtdXMgRGFzYXIgUHJvYmFiaWxpdGFzKioNCkppa2EgXChTXCkgYWRhbGFoIHJ1YW5nIHNhbXBlbCBkYXJpIHNlbXVhIGtlbXVuZ2tpbmFuIGhhc2lsIGRhbiBcKEFcKSBhZGFsYWgga2VqYWRpYW4gdGVydGVudHUsIG1ha2EgcHJvYmFiaWxpdGFzIFwoUChBKVwpIGRpZGVmaW5pc2lrYW4gc2ViYWdhaToNClxbDQpQKEEpID0gXGZyYWN7XHRleHR7SnVtbGFoIGtlamFkaWFuIGRhbGFtIH0gQX17XHRleHR7SnVtbGFoIGtlamFkaWFuIGRhbGFtIH0gU30NClxdDQoNCiMjIyAqKkplbmlzIFByb2JhYmlsaXRhcyoqDQoxLiAqKlByb2JhYmlsaXRhcyBNYXJnaW5hbCoqOiBQcm9iYWJpbGl0YXMgc3VhdHUga2VqYWRpYW4gdHVuZ2dhbCB0YW5wYSBtZW1wZXJ0aW1iYW5na2FuIGtlamFkaWFuIGxhaW4uICANCiAgIENvbnRvaDogUHJvYmFiaWxpdGFzIGh1amFuIGhhcmkgaW5pLCBcKFAoXHRleHR7SHVqYW59KVwpLg0KDQoyLiAqKlByb2JhYmlsaXRhcyBCZXJzeWFyYXQqKjogUHJvYmFiaWxpdGFzIHN1YXR1IGtlamFkaWFuIHRlcmphZGksIGRpYmVyaWthbiBpbmZvcm1hc2kgYmFod2Ega2VqYWRpYW4gbGFpbiB0ZWxhaCB0ZXJqYWRpLiAgDQogICBDb250b2g6IFByb2JhYmlsaXRhcyBzZXNlb3Jhbmcgc2FraXQgZmx1IGppa2EgaWEgZGVtYW0sIFwoUChcdGV4dHtGbHV9IFxtaWQgXHRleHR7RGVtYW19KVwpLg0KDQozLiAqKlByb2JhYmlsaXRhcyBHYWJ1bmdhbioqOiBQcm9iYWJpbGl0YXMgZHVhIGtlamFkaWFuIHRlcmphZGkgYmVyc2FtYS1zYW1hLiAgDQogICBDb250b2g6IFByb2JhYmlsaXRhcyBzZXNlb3JhbmcgZGVtYW0gZGFuIHNha2l0IGZsdSwgXChQKFx0ZXh0e0RlbWFtfSBcY2FwIFx0ZXh0e0ZsdX0pXCkuDQoNCi0tLQ0KDQojIyAqKjIuIFRlb3JlbWEgQmF5ZXMqKg0KDQojIyMgKipEZWZpbmlzaSoqDQpUZW9yZW1hIEJheWVzIGFkYWxhaCBhdHVyYW4gZGFsYW0gcHJvYmFiaWxpdGFzIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdC4gVGVvcmVtYSBpbmkgbWVtdW5na2lua2FuIGtpdGEgdW50dWsgKiptZW1wZXJiYXJ1aSBrZXlha2luYW4gYXdhbCoqIHRlcmhhZGFwIHN1YXR1IGtlamFkaWFuIGJlcmRhc2Fya2FuIGluZm9ybWFzaSBiYXJ1Lg0KDQojIyMgKipSdW11cyBUZW9yZW1hIEJheWVzKioNClxbDQpQKEEgXG1pZCBCKSA9IFxmcmFje1AoQiBcbWlkIEEpIFxjZG90IFAoQSl9e1AoQil9DQpcXQ0KDQpEaSBzaW5pOg0KLSBcKFAoQSBcbWlkIEIpXCk6IFByb2JhYmlsaXRhcyBrZWphZGlhbiBcKEFcKSB0ZXJqYWRpLCBkaWJlcmlrYW4gXChCXCkgdGVsYWggdGVyamFkaSAoKipwcm9iYWJpbGl0YXMgYmVyc3lhcmF0KiopLg0KLSBcKFAoQiBcbWlkIEEpXCk6IFByb2JhYmlsaXRhcyBrZWphZGlhbiBcKEJcKSB0ZXJqYWRpLCBkaWJlcmlrYW4gXChBXCkgdGVsYWggdGVyamFkaS4NCi0gXChQKEEpXCk6IFByb2JhYmlsaXRhcyBhd2FsIGF0YXUgcHJpb3Iga2VqYWRpYW4gXChBXCkgKCoqcHJvYmFiaWxpdGFzIG1hcmdpbmFsKiopLg0KLSBcKFAoQilcKTogUHJvYmFiaWxpdGFzIGF3YWwgYXRhdSBwcmlvciBrZWphZGlhbiBcKEJcKSAoKipwcm9iYWJpbGl0YXMgbWFyZ2luYWwqKikuDQoNCiMjIyAqKkNhcmEgS2VyamEqKg0KVGVvcmVtYSBCYXllcyBiZWtlcmphIGRlbmdhbiAqKm1lbXBlcmJhcnVpIGluZm9ybWFzaSoqOg0KMS4gS2l0YSBtdWxhaSBkZW5nYW4gKipwcm9iYWJpbGl0YXMgYXdhbCAoXChQKEEpXCkpKiosIHlhaXR1IGtleWFraW5hbiBhd2FsIHRlcmhhZGFwIGtlamFkaWFuIFwoQVwpLg0KMi4gS2V0aWthIGFkYSBpbmZvcm1hc2kgYmFydSAoXChCXCkpLCBraXRhIG1lbmdoaXR1bmcgc2ViZXJhcGEgYmVzYXIgaW5mb3JtYXNpIHRlcnNlYnV0IGNvY29rIGRlbmdhbiBrZWphZGlhbiBcKEFcKSAoXChQKEIgXG1pZCBBKVwpKS4NCjMuIERlbmdhbiBtZW5nZ3VuYWthbiBpbmZvcm1hc2kgaW5pLCBraXRhIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJhcnUgKFwoUChBIFxtaWQgQilcKSkuDQoNCiMjIyAqKkFwbGlrYXNpIFRlb3JlbWEgQmF5ZXMqKg0KMS4gKipEZXRla3NpIFBlbmlwdWFuKio6IE1lbmVudHVrYW4gYXBha2FoIHRyYW5zYWtzaSBtZXJ1cGFrYW4gcGVuaXB1YW4gYmVyZGFzYXJrYW4gcG9sYSB0ZXJ0ZW50dS4NCjIuICoqRGlhZ25vc2lzIE1lZGlzKio6IE1lbmdoaXR1bmcga2VtdW5na2luYW4gcGFzaWVuIG1lbWlsaWtpIHBlbnlha2l0IHRlcnRlbnR1IGJlcmRhc2Fya2FuIGdlamFsYS4NCjMuICoqS2xhc2lmaWthc2kgZGFsYW0gUGVtYmVsYWphcmFuIE1lc2luKio6IE1pc2FsbnlhLCBhbGdvcml0bWEgTmHDr3ZlIEJheWVzIGRhbGFtIGtsYXNpZmlrYXNpIGRhdGEuDQoNCi0tLQ0KDQojIyAqKjMuIEtvcmVsYXNpIEFudGFyYSBQcm9iYWJpbGl0YXMgZGFuIFRlb3JlbWEgQmF5ZXMqKg0KDQojIyMgKipQcm9iYWJpbGl0YXMgU2ViYWdhaSBEYXNhciBUZW9yZW1hIEJheWVzKioNClRlb3JlbWEgQmF5ZXMgYWRhbGFoIHNhbGFoIHNhdHUgYXBsaWthc2kgdGluZ2thdCBsYW5qdXQgZGFyaSBwcm9iYWJpbGl0YXMuIFByb2JhYmlsaXRhcyBkYXNhciAoXChQKEEpXCksIFwoUChCKVwpLCBkYW4gXChQKEIgXG1pZCBBKVwpKSBtZW5qYWRpICoqa29tcG9uZW4gdXRhbWEqKiBkYWxhbSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgKFwoUChBIFxtaWQgQilcKSkuDQoNCiMjIyAqKktldGVya2FpdGFuIFV0YW1hKioNCjEuICoqUHJvYmFiaWxpdGFzIEF3YWwgKFwoUChBKVwpKSoqOiBUZW9yZW1hIEJheWVzIGRpbXVsYWkgZGVuZ2FuIGtleWFraW5hbiBhd2FsIGtpdGEgdGVudGFuZyBrZWphZGlhbiBcKEFcKS4NCjIuICoqSW5mb3JtYXNpIEJhcnUgKFwoUChCIFxtaWQgQSlcKSkqKjogUHJvYmFiaWxpdGFzIGJhaHdhIGluZm9ybWFzaSBiYXJ1IGNvY29rIGRlbmdhbiBrZWphZGlhbiBcKEFcKSBtZW5qYWRpIGVsZW1lbiBwZW50aW5nIGRhbGFtIG1lbXBlcmJhcnVpIGtleWFraW5hbi4NCjMuICoqUHJvYmFiaWxpdGFzIEJlcnN5YXJhdCAoXChQKEEgXG1pZCBCKVwpKSoqOiBIYXNpbCBha2hpciBkYXJpIFRlb3JlbWEgQmF5ZXMgYWRhbGFoIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQsIHlhbmcgbWVuY2VybWlua2FuICoqa2V5YWtpbmFuIHlhbmcgZGlwZXJiYXJ1aSoqIHRlcmhhZGFwIFwoQVwpLCBzZXRlbGFoIG1lbXBlcnRpbWJhbmdrYW4gXChCXCkuDQoNCiMjIyAqKkNvbnRvaCoqDQpNaXNhbGthbjoNCi0gUHJvYmFiaWxpdGFzIGF3YWwgc2VzZW9yYW5nIHNha2l0IGZsdSBhZGFsYWggNSUgKFwoUChcdGV4dHtGbHV9KSA9IDAuMDVcKSkuDQotIEppa2Egc2VzZW9yYW5nIGRlbWFtLCA4MCUgZGFyaSBtZXJla2EgYmlhc2FueWEgc2FraXQgZmx1IChcKFAoXHRleHR7RGVtYW19IFxtaWQgXHRleHR7Rmx1fSkgPSAwLjhcKSkuDQotIFByb2JhYmlsaXRhcyBzZXNlb3JhbmcgZGVtYW0gc2VjYXJhIHVtdW0gYWRhbGFoIDEwJSAoXChQKFx0ZXh0e0RlbWFtfSkgPSAwLjFcKSkuDQoNCkRlbmdhbiBUZW9yZW1hIEJheWVzOg0KXFsNClAoXHRleHR7Rmx1fSBcbWlkIFx0ZXh0e0RlbWFtfSkgPSBcZnJhY3tQKFx0ZXh0e0RlbWFtfSBcbWlkIFx0ZXh0e0ZsdX0pIFxjZG90IFAoXHRleHR7Rmx1fSl9e1AoXHRleHR7RGVtYW19KX0NClxdDQpcWw0KUChcdGV4dHtGbHV9IFxtaWQgXHRleHR7RGVtYW19KSA9IFxmcmFjezAuOCBcY2RvdCAwLjA1fXswLjF9ID0gMC40IFx0ZXh0eyBhdGF1IH0gNDBcJQ0KXF0NCg0KSW50ZXJwcmV0YXNpOiBKaWthIHNlc2VvcmFuZyBkZW1hbSwgbWFrYSBrZW11bmdraW5hbiBkaWEgc2FraXQgZmx1IG1lbmluZ2thdCBtZW5qYWRpIDQwJS4NCg0KQmVyZGFzYXJrYW4gcGVuamVsYXNhbiBkaWF0YXMgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2E6DQoNCjEuICoqUHJvYmFiaWxpdGFzKiogYWRhbGFoIGRhc2FyIHBlbmd1a3VyYW4ga2VtdW5na2luYW4gc3VhdHUga2VqYWRpYW4sIGJhaWsgZGFsYW0ga29udGVrcyBrZWphZGlhbiB0dW5nZ2FsIChtYXJnaW5hbCksIGtvbWJpbmFzaSBrZWphZGlhbiAoZ2FidW5nYW4pLCBhdGF1IGtlamFkaWFuIHlhbmcgYmVyZ2FudHVuZyBwYWRhIGluZm9ybWFzaSBsYWluIChiZXJzeWFyYXQpLiAgDQoyLiAqKlRlb3JlbWEgQmF5ZXMqKiBhZGFsYWggYWxhdCB1bnR1ayBtZW1wZXJiYXJ1aSBwcm9iYWJpbGl0YXMgZGVuZ2FuIGluZm9ybWFzaSBiYXJ1LCB5YW5nIG1lbXVuZ2tpbmthbiBraXRhIG1lbWJ1YXQga2VwdXR1c2FuIGxlYmloIGNlcmRhcyBiZXJkYXNhcmthbiBkYXRhLg0KMy4gSHVidW5nYW4gYW50YXJhIGtlZHVhbnlhIGFkYWxhaCAqKmZ1bmdzaW9uYWwgZGFuIHRhayB0ZXJwaXNhaGthbioqLiBUZW9yZW1hIEJheWVzIG1lbmdndW5ha2FuIHByaW5zaXAgcHJvYmFiaWxpdGFzIHVudHVrIG1lbWJlcmlrYW4gamF3YWJhbiB5YW5nIGxlYmloIGFrdXJhdCBkYWxhbSBzaXR1YXNpIGRlbmdhbiBrZXRpZGFrcGFzdGlhbiBkYW4gaW5mb3JtYXNpIHRhbWJhaGFuLg0KDQoNCg0KIyAqKlN0dWRpIEthc3VzIDEqKg0KDQojIyBQZW5lcmFwYW4gUHJvYmFiaWxpdGFzIGRhbGFtIFByZWRpa3NpIEt1YWxpdGFzIFByb2R1azoNCg0KLS0tDQoNCiMjICoqTWFzYWxhaCB5YW5nIEluZ2luIERpc2VsZXNhaWthbioqDQoNClBlcnVzYWhhYW4gbWFudWZha3R1ciBtZW5naGFkYXBpIHRhbnRhbmdhbiBkYWxhbSBtZW1hc3Rpa2FuIGt1YWxpdGFzIHByb2R1ay4gU2ViYWdhaSBiYWdpYW4gZGFyaSBldmFsdWFzaSBrdWFsaXRhcywgbWVyZWthIGluZ2luIG1lbmdldGFodWkgKipzZWJlcmFwYSBiZXNhciBrZW11bmdraW5hbiBwcm9kdWsgY2FjYXQqKiBqaWthIGRpa2V0YWh1aToNCjEuICoqS29tcG9uZW4qKiB5YW5nIGRpZ3VuYWthbiBiZXJrdWFsaXRhcyByZW5kYWguDQoyLiAqKlByb3NlcyBwcm9kdWtzaSoqIGRpbGFrdWthbiBkaSBiYXdhaCBzdGFuZGFyLg0KDQojIyMgKipBcGEgeWFuZyBJbmdpbiBLaXRhIENhcmk/KioNCktpdGEgZGltaW50YSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiYWh3YSBzdWF0dSBwcm9kdWsgKipjYWNhdCAoXChEID0gWWVzXCkpKiogYmVyZGFzYXJrYW4gaW5mb3JtYXNpOg0KLSAqKktvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChDID0gTG93XCkpKiouDQotICoqUHJvc2VzIHByb2R1a3NpIGRpIGJhd2FoIHN0YW5kYXIgKFwoUCA9IEJlbG93XCkpKiouDQoNCkRlbmdhbiBrYXRhIGxhaW4sIGtpdGEgbWVuY2FyaSAqKnByb2JhYmlsaXRhcyBiZXJzeWFyYXQqKjoNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpDQpcXQ0KDQojIyMgKipNZW5nYXBhIE1lbmdndW5ha2FuIFRlb3JlbWEgQmF5ZXM/KioNClRlb3JlbWEgQmF5ZXMgYWRhbGFoIGFsYXQgeWFuZyBzYW5nYXQgYmVyZ3VuYSB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQuIERhbGFtIGtvbnRla3MgaW5pLCBUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbXBlcmJhcnVpIHByb2JhYmlsaXRhcyBiYWh3YSBwcm9kdWsgY2FjYXQgKFwoRCA9IFllc1wpKSBiZXJkYXNhcmthbiBkdWEgaW5mb3JtYXNpIHRhbWJhaGFuIChcKEMgPSBMb3dcKSBkYW4gXChQID0gQmVsb3dcKSkuDQoNCi0tLQ0KDQojIyAqKkRhdGEgeWFuZyBEaWJlcmlrYW4qKg0KDQpEYXRhIGhpc3RvcmlzIHBlcnVzYWhhYW4gbWVtYmVyaWthbiBwcm9iYWJpbGl0YXMgZGFzYXIgc2ViYWdhaSBiZXJpa3V0Og0KDQoxLiAqKlByb2JhYmlsaXRhcyBwcm9kdWsgY2FjYXQqKjoNCiAgIC0gXChQKEQgPSBZZXMpID0gNVwlXCkgKDUlIGRhcmkgc2VtdWEgcHJvZHVrIGNhY2F0KS4NCiAgIC0gXChQKEQgPSBObykgPSA5NVwlXCkgKDk1JSBkYXJpIHNlbXVhIHByb2R1ayB0aWRhayBjYWNhdCkuDQoNCjIuICoqUHJvYmFiaWxpdGFzIHRlcmthaXQga29tcG9uZW4gZGFuIHByb3NlcyBwcm9kdWtzaSoqOg0KICAgLSBVbnR1ayBwcm9kdWsgKipjYWNhdCAoXChEID0gWWVzXCkpKio6DQogICAgIC0gNjAlIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChQKEMgPSBMb3cgXG1pZCBEID0gWWVzKSA9IDYwXCVcKSkuDQogICAgIC0gNzAlIGRpcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciAoXChQKFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpID0gNzBcJVwpKS4NCiAgIC0gVW50dWsgcHJvZHVrICoqdGlkYWsgY2FjYXQgKFwoRCA9IE5vXCkpKio6DQogICAgIC0gMjAlIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChQKEMgPSBMb3cgXG1pZCBEID0gTm8pID0gMjBcJVwpKS4NCiAgICAgLSAzMCUgZGlwcm9kdWtzaSBkaSBiYXdhaCBzdGFuZGFyIChcKFAoUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IDMwXCVcKSkuDQoNCi0tLQ0KDQojIyAqKkxhbmdrYWgtTGFuZ2thaCBNZW5nZ3VuYWthbiBUZW9yZW1hIEJheWVzKioNCg0KIyMjICoqMS4gUnVtdXMgVGVvcmVtYSBCYXllcyoqDQpSdW11cyB1dGFtYSBUZW9yZW1hIEJheWVzIHVudHVrIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQ6DQpcWw0KUChEID0gWWVzIFxtaWQgQyA9IExvdywgUCA9IEJlbG93KSA9IFxmcmFje1AoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgXGNkb3QgUChEID0gWWVzKX17UChDID0gTG93LCBQID0gQmVsb3cpfQ0KXF0NCg0KRGFsYW0gcnVtdXMgaW5pOg0KLSBcKFAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdylcKTogUHJvYmFiaWxpdGFzIHByb2R1ayBjYWNhdCwgamlrYSBkaWtldGFodWkga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhci4NCi0gXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCk6IFByb2JhYmlsaXRhcyBiYWh3YSBwcm9kdWsgbWVuZ2d1bmFrYW4ga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciwgamlrYSBwcm9kdWsgY2FjYXQuDQotIFwoUChEID0gWWVzKVwpOiBQcm9iYWJpbGl0YXMgZGFzYXIgYmFod2EgcHJvZHVrIGNhY2F0Lg0KLSBcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpOiBQcm9iYWJpbGl0YXMgcHJvZHVrIG1lbmdndW5ha2FuIGtvbXBvbmVuIHJlbmRhaCBkYW4gcHJvc2VzIHByb2R1a3NpIGRpIGJhd2FoIHN0YW5kYXIgc2VjYXJhIGtlc2VsdXJ1aGFuLg0KDQotLS0NCg0KIyMjICoqMi4gTWVuZ2hpdHVuZyBLb21wb25lbiBSdW11cyoqDQoNCiMjIyMgKiphLiBIaXR1bmcgXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCkqKg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgPSBQKEMgPSBMb3cgXG1pZCBEID0gWWVzKSBcY2RvdCBQKFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgPSA2MFwlIFxjZG90IDcwXCUgPSA0MlwlDQpcXQ0KDQojIyMjICoqYi4gSGl0dW5nIFwoUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gTm8pXCkqKg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IFAoQyA9IExvdyBcbWlkIEQgPSBObykgXGNkb3QgUChQID0gQmVsb3cgXG1pZCBEID0gTm8pDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IDIwXCUgXGNkb3QgMzBcJSA9IDZcJQ0KXF0NCg0KIyMjIyAqKmMuIEhpdHVuZyBcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpKioNCk1lbmdndW5ha2FuIGh1a3VtIHByb2JhYmlsaXRhcyB0b3RhbDoNClxbDQpQKEMgPSBMb3csIFAgPSBCZWxvdykgPSBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpIFxjZG90IFAoRCA9IFllcykgKyBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBObykgXGNkb3QgUChEID0gTm8pDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93KSA9ICg0MlwlIFxjZG90IDVcJSkgKyAoNlwlIFxjZG90IDk1XCUpDQpcXQ0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93KSA9IDIuMVwlICsgNS43XCUgPSA3LjhcJQ0KXF0NCg0KLS0tDQoNCiMjIyAqKjMuIEhpdHVuZyBQcm9iYWJpbGl0YXMgQmVyc3lhcmF0KioNCkd1bmFrYW4gcnVtdXMgVGVvcmVtYSBCYXllczoNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7UChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKSBcY2RvdCBQKEQgPSBZZXMpfXtQKEMgPSBMb3csIFAgPSBCZWxvdyl9DQpcXQ0KU3Vic3RpdHVzaSBuaWxhaToNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7NDJcJSBcY2RvdCA1XCV9ezcuOFwlfQ0KXF0NClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7Mi4xXCV9ezcuOFwlfSBcYXBwcm94IDI2LjkyXCUNClxdDQoNCi0tLQ0KDQojIyAqKktlc2ltcHVsYW4qKg0KDQpEYWxhbSAqKlN0dWRpIEthc3VzIDEqKiwga2l0YSBiZXJoYXNpbCBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKiB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYmFod2Egc3VhdHUgcHJvZHVrIGFrYW4gY2FjYXQgKFwoRCA9IFllc1wpKSwgZGVuZ2FuIGluZm9ybWFzaSB0YW1iYWhhbiBiYWh3YSBwcm9kdWsgdGVyc2VidXQgbWVuZ2d1bmFrYW4gKiprb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWgqKiAoXChDID0gTG93XCkpIGRhbiBkaXByb2R1a3NpIGRlbmdhbiAqKnByb3NlcyBkaSBiYXdhaCBzdGFuZGFyKiogKFwoUCA9IEJlbG93XCkpLiANCg0KSGFzaWwgcGVyaGl0dW5nYW4gbWVudW5qdWtrYW4gYmFod2EgcHJvYmFiaWxpdGFzIHRlcnNlYnV0IGFkYWxhaCAqKjI2LjkyJSoqLiBCZXJpa3V0IGFkYWxhaCBwZW5qZWxhc2FuIGxlbmdrYXAgdW50dWsgbWVueWltcHVsa2FuIGhhc2lsIGluaToNCg0KIyMjICoqMS4gUmVsZXZhbnNpIFRlb3JlbWEgQmF5ZXMqKg0KVGVvcmVtYSBCYXllcyBtZXJ1cGFrYW4gYWxhdCB5YW5nIHNhbmdhdCBwZW50aW5nIGRhbGFtIHBlbmdhbWJpbGFuIGtlcHV0dXNhbiBiZXJiYXNpcyBkYXRhLiBEZW5nYW4gbWVuZ2d1bmFrYW4gVGVvcmVtYSBCYXllcywga2l0YSBkYXBhdCBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBrb25kaXNpIHRlcnRlbnR1IChcKEQgPSBZZXNcKSkgYmVyZGFzYXJrYW4gaW5mb3JtYXNpIGJhcnUgKFwoQyA9IExvdywgUCA9IEJlbG93XCkpIHlhbmcgdGVyc2VkaWEuIFJ1bXVzIHV0YW1hIGRhcmkgVGVvcmVtYSBCYXllcyBhZGFsYWg6DQpcWw0KUChEID0gWWVzIFxtaWQgQyA9IExvdywgUCA9IEJlbG93KSA9IFxmcmFje1AoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgXGNkb3QgUChEID0gWWVzKX17UChDID0gTG93LCBQID0gQmVsb3cpfQ0KXF0NCg0KUnVtdXMgaW5pIG1lbmdnYWJ1bmdrYW4gcHJvYmFiaWxpdGFzIGF3YWwgKFwoUChEID0gWWVzKVwpKSwgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCAoXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCkpLCBkYW4gcHJvYmFiaWxpdGFzIHRvdGFsIChcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpKSB1bnR1ayBtZW1iZXJpa2FuIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgeWFuZyBkaXBlcmJhcnVpIChcKFAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdylcKSkuDQoNCg0KIyMjICoqMi4gTWVuZ2FwYSBQcm9iYWJpbGl0YXMgVGlkYWsgVGluZ2dpPyoqDQpNZXNraXB1biBkaWtldGFodWkgYmFod2EgKiprb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWgqKiBkYW4gKipwcm9zZXMgZGkgYmF3YWggc3RhbmRhcioqIG1lbmluZ2thdGthbiByaXNpa28gY2FjYXQsIGhhc2lsIGFraGlybnlhIHRldGFwICoqMjYuOTIlKioga2FyZW5hIGJlYmVyYXBhIGFsYXNhbjoNCi0gSGFueWEgKio1JSoqIGRhcmkgc2VtdWEgcHJvZHVrIHlhbmcgY2FjYXQgKFwoUChEID0gWWVzKSA9IDVcJVwpKS4gUHJvYmFiaWxpdGFzIGRhc2FyIGluaSBtZW1iYXRhc2kgaGFzaWwgYWtoaXIuDQotIFNlYmFnaWFuIGJlc2FyIHByb2R1ayAoXCg5NVwlXCkpIHRpZGFrIGNhY2F0IChcKFAoRCA9IE5vKVwpKSwgc2VoaW5nZ2Ega29tYmluYXNpIGtvbXBvbmVuIHJlbmRhaCBkYW4gcHJvc2VzIGJ1cnVrIGp1Z2Egc2VyaW5nIHRlcmphZGkgcGFkYSBwcm9kdWsgeWFuZyB0aWRhayBjYWNhdC4NCg0KDQojIyMgKiozLiBNZW5nYXBhIEhhc2lsIEluaSBQZW50aW5nPyoqDQpQcm9iYWJpbGl0YXMgYmVyc3lhcmF0IGluaSBzYW5nYXQgcGVudGluZyBkYWxhbSBwZW5nYW1iaWxhbiBrZXB1dHVzYW46DQotIFBlcnVzYWhhYW4gZGFwYXQgbWVuZ2d1bmFrYW4gaGFzaWwgaW5pIHVudHVrIGZva3VzIHBhZGEgKipwcm9zZXMgaW5zcGVrc2kqKiBkYW4gKipwZW5nYXdhc2FuIGtvbXBvbmVuKiouIEppa2EgcHJvZHVrIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCBkYW4gcHJvc2VzbnlhIGRpIGJhd2FoIHN0YW5kYXIsIGFkYSByaXNpa28gbGViaWggdGluZ2dpIGJhaHdhIHByb2R1ayBha2FuIGNhY2F0Lg0KLSBOYW11biwgcHJvYmFiaWxpdGFzIDI2LjkyJSBtZW51bmp1a2thbiBiYWh3YSAqKmtvbWJpbmFzaSBpbmkgdGlkYWsgc2VsYWx1IG1lbmdoYXNpbGthbiBwcm9kdWsgY2FjYXQqKiwgc2VoaW5nZ2Ega2VwdXR1c2FuIHVudHVrIG1lbWVyaWtzYSBzZWx1cnVoIHByb2R1ayBtdW5na2luIHRpZGFrIGVmaXNpZW4gc2VjYXJhIGJpYXlhLg0KDQoNCiMjIyAqKjQuIEJhZ2FpbWFuYSBUZW9yZW1hIEJheWVzIE1lbWJhbnR1IGRpIER1bmlhIE55YXRhPyoqDQotICoqVGVvcmVtYSBCYXllcyoqIGRpZ3VuYWthbiBzZWNhcmEgbHVhcyBkYWxhbSBhbmFsaXNpcyByaXNpa28sIGRldGVrc2kgcGVuaXB1YW4sIGRpYWdub3NpcyBtZWRpcywgZGFuIHBlbWVsaWhhcmFhbiBwcmVkaWt0aWYuDQotIERhbGFtIGtvbnRla3MgaW5pLCBUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBwZXJ1c2FoYWFuIG1lbWFuZmFhdGthbiBkYXRhIGhpc3RvcmlzIHVudHVrIG1lbXBlcmtpcmFrYW4gcmlzaWtvIGRlbmdhbiBsZWJpaCBha3VyYXQuDQotIEtvbWJpbmFzaSBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0IFwoUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKVwpIGRhbiBwcm9iYWJpbGl0YXMgZGFzYXIgXChQKEQgPSBZZXMpXCkgbWVuY2VybWlua2FuIGh1YnVuZ2FuIGFudGFyYSAqKnBlbnllYmFiKiogKGtvbXBvbmVuIGRhbiBwcm9zZXMpIGRlbmdhbiAqKmVmZWsqKiAoY2FjYXQgcHJvZHVrKS4NCg0KDQojIyMgKio1LiBCYWdhaW1hbmEgUHJvYmFiaWxpdGFzIEJpc2EgQmVydWJhaD8qKg0KSmlrYSBhc3Vtc2kgZGF0YSBiZXJ1YmFoLCBoYXNpbCBha2hpcm55YSBqdWdhIGFrYW4gYmVyYmVkYS4gTWlzYWxueWE6DQotIEppa2EgXChQKEQgPSBZZXMpXCkgbWVuaW5na2F0IG1lbmphZGkgMTAlLCBoYXNpbCBha2hpciBha2FuIGxlYmloIHRpbmdnaS4NCi0gSmlrYSBwcm9kdWsgY2FjYXQgaGFueWEgc2ViYWdpYW4ga2VjaWwgeWFuZyBtZW5nZ3VuYWthbiBrb21wb25lbiByZW5kYWggYXRhdSBwcm9zZXMgYnVydWssIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYWthbiBsZWJpaCByZW5kYWguDQoNCg0KIyMjICoqNi4gTmlsYWkgUHJha3RpcyBkYXJpIFByb2JhYmlsaXRhcyAyNi45MiUqKg0KSGFzaWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIGFkYSByaXNpa28gc2lnbmlmaWthbiAoc2VraXRhciAyNyUpIGJhaHdhIHByb2R1ayBha2FuIGNhY2F0IGRhbGFtIGtvbmRpc2kgeWFuZyBkaXNlYnV0a2FuLiBEZW5nYW4gaW5mb3JtYXNpIGluaSwgcGVydXNhaGFhbiBkYXBhdDoNCi0gKipNZW5ndXJhbmdpIHJpc2lrbyoqIGRlbmdhbiBtZW5pbmdrYXRrYW4ga3VhbGl0YXMga29tcG9uZW4gZGFuIHN0YW5kYXIgcHJvZHVrc2kuDQotICoqTWVuZ2Fsb2thc2lrYW4gc3VtYmVyIGRheWEqKiB1bnR1ayBpbnNwZWtzaSBwYWRhIHByb2R1ayBkZW5nYW4gcmlzaWtvIGxlYmloIHRpbmdnaS4NCg0KKipLZXNpbXB1bGFuIEFraGlyOioqICANClRlb3JlbWEgQmF5ZXMgbWVtdW5na2lua2FuIGtpdGEgdW50dWsgbWVtcGVyYmFydWkga2V5YWtpbmFuIGF3YWwgKFwoUChEID0gWWVzKVwpKSBkZW5nYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEMgPSBMb3dcKSBkYW4gXChQID0gQmVsb3dcKSkuIEhhc2lsIGluaSBtZW1iZXJpa2FuIHdhd2FzYW4geWFuZyBtZW5kYWxhbSB0ZW50YW5nIHJpc2lrbyBjYWNhdCBwcm9kdWssIG1lbWJhbnR1IHBlcnVzYWhhYW4gbWVtYnVhdCBrZXB1dHVzYW4geWFuZyBsZWJpaCBiYWlrIHVudHVrIG1lbmdvcHRpbWFsa2FuIGt1YWxpdGFzIGRhbiBlZmlzaWVuc2kuDQoNCg0KDQoNCiMgKipTdHVkaSBLYXN1cyAyKioNCg0KIyMgKipQZW5lcmFwYW4gUHJvYmFiaWxpdGFzIGRhbGFtIERldGVrc2kgUGVuaXB1YW4gVHJhbnNha3NpOioqDQoNClNlYnVhaCBwZXJ1c2FoYWFuIGUtY29tbWVyY2UgaW5naW4gbWVuZGV0ZWtzaSB0cmFuc2Frc2kgeWFuZyBiZXJwb3RlbnNpIHBlbmlwdWFuLiBCZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzOg0KDQoxLiAqKkhhbnlhIDElIHRyYW5zYWtzaSB5YW5nIG1lcnVwYWthbiBwZW5pcHVhbioqIChcKFAoRiA9IEZyYXVkKSA9IDFcJVwpKS4gIA0KDQoyLiAqKjk5JSB0cmFuc2Frc2kgYWRhbGFoIHRyYW5zYWtzaSBub3JtYWwqKiAoXChQKEYgPSBOb3QgRnJhdWQpID0gOTlcJVwpKS4gIA0KDQoqKkZpdHVyIHRhbWJhaGFuIHVudHVrIG1lbmRldGVrc2kgcGVuaXB1YW4gdHJhbnNha3NpKio6DQotIExva2FzaSB0cmFuc2Frc2kgKFwoTFwpKTogQXBha2FoIGRpbGFrdWthbiBkaSBsdWFyIG5lZ2VyaSAoRm9yZWlnbikuDQotIEp1bWxhaCBwZW1iZWxpYW4gKFwoQVwpKTogQXBha2FoIGxlYmloIGRhcmkgJDUwMCAoSGlnaCkuDQotIE1ldG9kZSBwZW1iYXlhcmFuIChcKE1cKSk6IE1lbmdndW5ha2FuIGthcnR1IGtyZWRpdCAoQ3JlZGl0IENhcmQpLg0KDQoqKkRhcmkgZGF0YSBoaXN0b3JpczoqKg0KLSBVbnR1ayB0cmFuc2Frc2kgKipwZW5pcHVhbiAoXChGID0gRnJhdWRcKSkqKjoNCiAgLSA2MCUgZGlsYWt1a2FuIGRpIGx1YXIgbmVnZXJpIChcKFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gRnJhdWQpID0gNjBcJVwpKS4NCiAgLSA3MCUgbWVtaWxpa2kganVtbGFoIHBlbWJlbGlhbiBsZWJpaCBkYXJpICQ1MDAgKFwoUChBID0gSGlnaCBcbWlkIEYgPSBGcmF1ZCkgPSA3MFwlXCkpLg0KICAtIDgwJSBtZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoUChNID0gQ3JlZGl0IENhcmQgXG1pZCBGID0gRnJhdWQpID0gODBcJVwpKS4NCi0gVW50dWsgdHJhbnNha3NpICoqbm9ybWFsIChcKEYgPSBOb3QgRnJhdWRcKSkqKjoNCiAgLSAyMCUgZGlsYWt1a2FuIGRpIGx1YXIgbmVnZXJpIChcKFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gTm90IEZyYXVkKSA9IDIwXCVcKSkuDQogIC0gMTAlIG1lbWlsaWtpIGp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSA9IDEwXCVcKSkuDQogIC0gNTAlIG1lbmdndW5ha2FuIGthcnR1IGtyZWRpdCAoXChQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBOb3QgRnJhdWQpID0gNTBcJVwpKS4NCg0KKipUdWp1YW46KiogSGl0dW5nIHByb2JhYmlsaXRhcyBiYWh3YSB0cmFuc2Frc2kgbWVydXBha2FuICoqcGVuaXB1YW4gKFwoRiA9IEZyYXVkXCkpKiogamlrYSBkaWtldGFodWkgYmFod2EgdHJhbnNha3NpOiAgDQoxLiBEaWxha3VrYW4gZGkgbHVhciBuZWdlcmkgKFwoTCA9IEZvcmVpZ25cKSkuICANCjIuIEp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKEEgPSBIaWdoXCkpLiAgDQozLiBNZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoTSA9IENyZWRpdCBDYXJkXCkpLiAgDQoNCi0tLQ0KDQojIyAqKkxhbmdrYWgtTGFuZ2thaCoqDQoNCiMjIyAqKjEuIEd1bmFrYW4gUnVtdXMgVGVvcmVtYSBCYXllcyoqDQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQoNCiMjIyMgKioyLiBEYXRhIEF3YWwgZGFsYW0gUGVyc2VudGFzZSoqDQotIFByb2JhYmlsaXRhcyB0cmFuc2Frc2kgcGVuaXB1YW46DQogIC0gXChQKEYgPSBGcmF1ZCkgPSAxXCVcKQ0KICAtIFwoUChGID0gTm90IEZyYXVkKSA9IDk5XCVcKQ0KLSBQcm9iYWJpbGl0YXMgZml0dXIgdW50dWsgdHJhbnNha3NpIHBlbmlwdWFuOg0KICAtIFwoUChMID0gRm9yZWlnbiBcbWlkIEYgPSBGcmF1ZCkgPSA2MFwlXCkNCiAgLSBcKFAoQSA9IEhpZ2ggXG1pZCBGID0gRnJhdWQpID0gNzBcJVwpDQogIC0gXChQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBGcmF1ZCkgPSA4MFwlXCkNCi0gUHJvYmFiaWxpdGFzIGZpdHVyIHVudHVrIHRyYW5zYWtzaSBub3JtYWw6DQogIC0gXChQKEwgPSBGb3JlaWduIFxtaWQgRiA9IE5vdCBGcmF1ZCkgPSAyMFwlXCkNCiAgLSBcKFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSA9IDEwXCVcKQ0KICAtIFwoUChNID0gQ3JlZGl0IENhcmQgXG1pZCBGID0gTm90IEZyYXVkKSA9IDUwXCVcKQ0KDQotLS0NCg0KIyMjICoqMy4gSGl0dW5nIEtvbXBvbmVuIFJ1bXVzKioNCg0KIyMjIyAqKmEuIEhpdHVuZyBcKFAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZClcKToqKg0KRGVuZ2FuIGFzdW1zaSBpbmRlcGVuZGVuc2kgYW50YXIgZml0dXI6DQpcWw0KUChMLCBBLCBNIFxtaWQgRiA9IEZyYXVkKSA9IFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoQSA9IEhpZ2ggXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoTSA9IENyZWRpdCBDYXJkIFxtaWQgRiA9IEZyYXVkKQ0KXF0NClN1YnN0aXR1c2kgbmlsYWkgKHBlcnNlbnRhc2UpOg0KXFsNClAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZCkgPSA2MFwlIFxjZG90IDcwXCUgXGNkb3QgODBcJSA9IDMzLjZcJQ0KXF0NCg0KIyMjIyAqKmIuIEhpdHVuZyBcKFAoTCwgQSwgTSBcbWlkIEYgPSBOb3QgRnJhdWQpXCk6KioNCkRlbmdhbiBhc3Vtc2kgaW5kZXBlbmRlbnNpIGFudGFyIGZpdHVyOg0KXFsNClAoTCwgQSwgTSBcbWlkIEYgPSBOb3QgRnJhdWQpID0gUChMID0gRm9yZWlnbiBcbWlkIEYgPSBOb3QgRnJhdWQpIFxjZG90IFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSBcY2RvdCBQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBOb3QgRnJhdWQpDQpcXQ0KU3Vic3RpdHVzaSBuaWxhaToNClxbDQpQKEwsIEEsIE0gXG1pZCBGID0gTm90IEZyYXVkKSA9IDIwXCUgXGNkb3QgMTBcJSBcY2RvdCA1MFwlID0gMVwlDQpcXQ0KDQojIyMjICoqYy4gSGl0dW5nIFwoUChMLCBBLCBNKVwpOioqDQpNZW5nZ3VuYWthbiBodWt1bSBwcm9iYWJpbGl0YXMgdG90YWw6DQpcWw0KUChMLCBBLCBNKSA9IFAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZCkgXGNkb3QgUChGID0gRnJhdWQpICsgUChMLCBBLCBNIFxtaWQgRiA9IE5vdCBGcmF1ZCkgXGNkb3QgUChGID0gTm90IEZyYXVkKQ0KXF0NClN1YnN0aXR1c2kgbmlsYWkgKHBlcnNlbnRhc2UpOg0KXFsNClAoTCwgQSwgTSkgPSAoMzMuNlwlIFxjZG90IDFcJSkgKyAoMVwlIFxjZG90IDk5XCUpDQpcXQ0KXFsNClAoTCwgQSwgTSkgPSAwLjMzNlwlICsgMC45OVwlID0gMS4zMjZcJQ0KXF0NCg0KLS0tDQoNCiMjIyAqKjQuIEhpdHVuZyBQcm9iYWJpbGl0YXMgQmVyc3lhcmF0KioNCkd1bmFrYW4gcnVtdXM6DQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQpTdWJzdGl0dXNpIG5pbGFpIChwZXJzZW50YXNlKToNClxbDQpQKEYgPSBGcmF1ZCBcbWlkIEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkKSA9IFxmcmFjezMzLjZcJSBcY2RvdCAxXCV9ezEuMzI2XCV9DQpcXQ0KXFsNClAoRiA9IEZyYXVkIFxtaWQgTCA9IEZvcmVpZ24sIEEgPSBIaWdoLCBNID0gQ3JlZGl0IENhcmQpID0gXGZyYWN7MC4zMzZcJX17MS4zMjZcJX0gXGFwcHJveCAyNS4zNFwlDQpcXQ0KDQotLS0NCg0KDQojIyAqKktlc2ltcHVsYW4qKg0KDQpEYWxhbSAqKlN0dWRpIEthc3VzIDIqKiwga2l0YSBiZXJoYXNpbCBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKiB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYmFod2Egc3VhdHUgdHJhbnNha3NpIGFkYWxhaCBwZW5pcHVhbiAoXChGID0gRnJhdWRcKSksIGRlbmdhbiBpbmZvcm1hc2kgdGFtYmFoYW4gYmFod2E6DQoNCjEuIFRyYW5zYWtzaSBkaWxha3VrYW4gZGkgbHVhciBuZWdlcmkgKFwoTCA9IEZvcmVpZ25cKSkuICANCjIuIEp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKEEgPSBIaWdoXCkpLiAgDQozLiBNZXRvZGUgcGVtYmF5YXJhbiBtZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoTSA9IENyZWRpdCBDYXJkXCkpLiAgDQoNCkhhc2lsIHBlcmhpdHVuZ2FuIG1lbnVuanVra2FuIGJhaHdhIHByb2JhYmlsaXRhcyB0ZXJzZWJ1dCBhZGFsYWggKioyNS4zNCUqKi4gQmVyaWt1dCBhZGFsYWggcGVuamVsYXNhbiBsZW5na2FwIHVudHVrIG1lbnlpbXB1bGthbiBoYXNpbCBpbmk6DQoNCg0KIyMjICoqMS4gUmVsZXZhbnNpIFRlb3JlbWEgQmF5ZXMqKg0KVGVvcmVtYSBCYXllcyBhZGFsYWggYWxhdCB5YW5nIHNhbmdhdCBwZW50aW5nIGRhbGFtIGFuYWxpc2lzIHJpc2lrbyBkYW4gZGV0ZWtzaSBhbm9tYWxpLiBEYWxhbSBrb250ZWtzIGluaSwgVGVvcmVtYSBCYXllcyBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW1wZXJiYXJ1aSBwcm9iYWJpbGl0YXMgYXdhbCAoXChQKEYgPSBGcmF1ZClcKSkgYmVyZGFzYXJrYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkXCkpLiBSdW11cyB1dGFtYW55YSBhZGFsYWg6DQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQoNClJ1bXVzIGluaSBtZW5nZ2FidW5na2FuIHByb2JhYmlsaXRhcyBhd2FsLCBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0LCBkYW4gcHJvYmFiaWxpdGFzIHRvdGFsIHVudHVrIG1lbWJlcmlrYW4gcHJlZGlrc2kgYmVyYmFzaXMgZGF0YSB5YW5nIGxlYmloIGFrdXJhdC4NCg0KDQojIyMgKioyLiBNZW5nYXBhIFByb2JhYmlsaXRhcyBUaWRhayBUaW5nZ2k/KioNCk1lc2tpcHVuIGtldGlnYSBmaXR1ciAobG9rYXNpLCBqdW1sYWggcGVtYmVsaWFuLCBkYW4gbWV0b2RlIHBlbWJheWFyYW4pIG1lbmluZ2thdGthbiBrZW11bmdraW5hbiBwZW5pcHVhbiwgaGFzaWwgYWtoaXJueWEgaGFueWEgKioyNS4zNCUqKi4gSGFsIGluaSBkaXNlYmFia2FuIG9sZWg6DQotIFByb2JhYmlsaXRhcyBkYXNhciBiYWh3YSBzdWF0dSB0cmFuc2Frc2kgYWRhbGFoIHBlbmlwdWFuIChcKFAoRiA9IEZyYXVkKVwpKSBzYW5nYXQga2VjaWwsIHlhaXR1IGhhbnlhICoqMSUqKi4NCi0gU2ViYWdpYW4gYmVzYXIgdHJhbnNha3NpIChcKDk5XCVcKSkgYnVrYW4gcGVuaXB1YW4sIHNlaGluZ2dhIGZpdHVyIHNlcGVydGkgbG9rYXNpIGx1YXIgbmVnZXJpLCBqdW1sYWggcGVtYmVsaWFuIHRpbmdnaSwgZGFuIHBlbmdndW5hYW4ga2FydHUga3JlZGl0IGp1Z2Egc2VyaW5nIHRlcmphZGkgcGFkYSB0cmFuc2Frc2kgeWFuZyBidWthbiBwZW5pcHVhbi4NCg0KDQojIyMgKiozLiBNZW5nYXBhIEhhc2lsIEluaSBQZW50aW5nPyoqDQpQcm9iYWJpbGl0YXMgYmVyc3lhcmF0IGluaSBzYW5nYXQgcGVudGluZyBkYWxhbSBwZW5nYW1iaWxhbiBrZXB1dHVzYW46DQotIFBlcnVzYWhhYW4gZGFwYXQgbWVtcHJpb3JpdGFza2FuIHBlbWVyaWtzYWFuIHBhZGEgdHJhbnNha3NpIGRlbmdhbiBmaXR1ciBzZXBlcnRpIGluaSBrYXJlbmEgbWVtaWxpa2kgcmlzaWtvIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gdHJhbnNha3NpIGJpYXNhLg0KLSBOYW11biwgcHJvYmFiaWxpdGFzICoqMjUuMzQlKiogbWVudW5qdWtrYW4gYmFod2EgdGlkYWsgc2VtdWEgdHJhbnNha3NpIGRlbmdhbiBmaXR1ciBpbmkgYWRhbGFoIHBlbmlwdWFuLCBzZWhpbmdnYSBwZW1lcmlrc2FhbiBzZWNhcmEgc2VsZWt0aWYgbGViaWggZWZpc2llbiBkaWJhbmRpbmdrYW4gbWVtZXJpa3NhIHNlbHVydWggdHJhbnNha3NpLg0KDQoNCiMjIyAqKjQuIEJhZ2FpbWFuYSBUZW9yZW1hIEJheWVzIE1lbWJhbnR1IGRpIER1bmlhIE55YXRhPyoqDQotICoqVGVvcmVtYSBCYXllcyoqIGRpZ3VuYWthbiBzZWNhcmEgbHVhcyBkYWxhbSBkZXRla3NpIHBlbmlwdWFuLCBhbmFsaXNpcyByaXNpa28sIGRhbiBwZW5nYW1iaWxhbiBrZXB1dHVzYW4gYmVyYmFzaXMgZGF0YS4NCi0gRGFsYW0ga29udGVrcyBpbmksIFRlb3JlbWEgQmF5ZXMgbWVtdW5na2lua2FuIHBlcnVzYWhhYW4gdW50dWsgbWVtcGVya2lyYWthbiByaXNpa28gdHJhbnNha3NpIGJlcmRhc2Fya2FuIGRhdGEgaGlzdG9yaXMgeWFuZyBhZGEuDQotIFByb2JhYmlsaXRhcyBiZXJzeWFyYXQgXChQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpXCkgZGFuIFwoUChGID0gRnJhdWQpXCkgbWVuY2VybWlua2FuIGh1YnVuZ2FuIGFudGFyYSAqKnBlbnllYmFiKiogKGZpdHVyIHRyYW5zYWtzaSkgZGVuZ2FuICoqZWZlayoqIChwZW5pcHVhbikuDQoNCg0KIyMjICoqNS4gQmFnYWltYW5hIFByb2JhYmlsaXRhcyBCaXNhIEJlcnViYWg/KioNCkppa2EgYXN1bXNpIGRhdGEgYmVydWJhaCwgaGFzaWwgYWtoaXJueWEganVnYSBha2FuIGJlcnViYWguIENvbnRvaDoNCi0gSmlrYSBcKFAoRiA9IEZyYXVkKVwpIG1lbmluZ2thdCBtZW5qYWRpIDUlLCBwcm9iYWJpbGl0YXMgYWtoaXIganVnYSBha2FuIG1lbmluZ2thdC4NCi0gSmlrYSB0cmFuc2Frc2kgcGVuaXB1YW4gbWVtaWxpa2kgcG9sYSBiYXJ1IHlhbmcgYmVyYmVkYSBkYXJpIGRhdGEgaGlzdG9yaXMgKG1pc2FsbnlhLCBsZWJpaCBqYXJhbmcgbWVuZ2d1bmFrYW4ga2FydHUga3JlZGl0KSwgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCBha2FuIGJlcnViYWguDQoNCg0KIyMjICoqNi4gTmlsYWkgUHJha3RpcyBkYXJpIFByb2JhYmlsaXRhcyAyNS4zNCUqKg0KSGFzaWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIGFkYSByaXNpa28gc2lnbmlmaWthbiBiYWh3YSB0cmFuc2Frc2kgZGVuZ2FuIGZpdHVyIGluaSBhZGFsYWggcGVuaXB1YW4uIERlbmdhbiBpbmZvcm1hc2kgaW5pLCBwZXJ1c2FoYWFuIGRhcGF0Og0KLSAqKk1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVtZXJpa3NhYW4qKiBkZW5nYW4gZm9rdXMgcGFkYSB0cmFuc2Frc2kgZGVuZ2FuIHJpc2lrbyB0aW5nZ2kuDQotICoqTWVuZ3VyYW5naSBiaWF5YSBvcGVyYXNpb25hbCoqIGRlbmdhbiBtZW5naGluZGFyaSBwZW1lcmlrc2FhbiB0cmFuc2Frc2kgYmVyaXNpa28gcmVuZGFoLg0KDQoNCioqS2VzaW1wdWxhbiBBa2hpcjoqKiAgDQpUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbXBlcmJhcnVpIGtleWFraW5hbiBhd2FsIChcKFAoRiA9IEZyYXVkKVwpKSBkZW5nYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkXCkpLiBIYXNpbCBpbmkgbWVtYmVyaWthbiB3YXdhc2FuIG1lbmRhbGFtIHRlbnRhbmcgcmlzaWtvIHRyYW5zYWtzaSwgbWVtYmFudHUgcGVydXNhaGFhbiBtZW5kZXRla3NpIHBlbmlwdWFuIHNlY2FyYSBsZWJpaCBlZmlzaWVuLCBkYW4gbWVuaW5na2F0a2FuIGFrdXJhc2kgcGVuZ2FtYmlsYW4ga2VwdXR1c2FuIGJlcmJhc2lzIGRhdGEuDQoNCg0KIyBSZWZlcmVuc2kNCg0KX1NpcmVnYXIsIEIuICgyMDI0KS4gS29uc2VwIGRhc2FyIHByb2JhYmlsaXRhcy4gRGlha3NlcyBkYXJpXyBodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc3RhdGlzdGlrYV9kYXNhci9fYm9vay9Lb25zZXBfRGFzYXJfUHJvYmFiaWxpdGFzLmh0bWwNCg0KX0xPUEVaLCBKLiAoMjAyMikuIEVwaXN0ZW1vbG9naSwgUHJvYmFiaWxpdGFzLCBkYW4gU2FpbnMuIFBlbmdhbnRhciBGaWxzYWZhdDogRXBpc3RlbW9sb2dpLl8NCg0KX0hhbmRheWFuaSwgUi4sICYgUHVybm9tbywgQS4gUy4gKDIwMjQpLiBQZW5lcmFwYW4gVGVvcmVtYSBCYXllcyBVbnR1ayBNZW5kaWFnbm9zYSBIYW1hIGRhbiBQZW55YWtpdCBQYWRhIFRhbmFtYW4gS2VsYXBhIFNhd2l0LiBKRUtJTi1KdXJuYWwgVGVrbmlrIEluZm9ybWF0aWthLCA0KDIpLCAyODctMjk5Ll8NCg0KX1N5YW1zdWwsIE0uICgyMDIyKS4gQmFiIDIgUHJvYmFiaWxpdGFzLiBTdGF0aXN0aWsgS2VzZWhhdGFuOiBUZW9yaSBkYW4gQXBsaWthc2ksIDEwLl8NCg0KX01hcmxpYW5hLCBSLiBSLiwgJiBTdGF0LCBNLiAoMjAxNikuIFN0YXRpc3Rpa2EgZGFuIFByb2JhYmlsaXRhcy4gUmV0cmlldmVkIEFwcmlsLCAxLCAyMDIzLl8NCg==