Distribusi Probabilitas

Teknik Sampling dan Survei

Three Sigma

1.1 Apa itu Three Sigma?

Three Sigma adalah konsep dalam statistika yang digunakan untuk memahami sebaran data dalam distribusi normal. Three Sigma mengacu pada batas tiga kali standar deviasi (\(\sigma\)) dari nilai rata-rata (\(\mu\)) suatu dataset.

1.2 Prinsip Dasar Three Sigma

Dalam distribusi normal, sebagian besar data akan berada di sekitar rata-rata. Berdasarkan aturan empiris (empirical rule) atau aturan 68-95-99.7, distribusi data adalah sebagai berikut:

  • \(\mu \pm 1\sigma\) mencakup 68.27% dari semua data.
  • \(\mu \pm 2\sigma\) mencakup 95.45% dari semua data.
  • \(\mu \pm 3\sigma\) mencakup 99.73% dari semua data.

Artinya, hanya 0.27% (sekitar 3 dari 1000) data yang akan berada di luar ±3σ, sehingga nilai-nilai tersebut dianggap sebagai outlier atau kejadian langka.

1.3 Rumus Three Sigma

Batas bawah dan batas atas dalam metode Three Sigma dihitung dengan rumus: \[ Lower\ Limit = \mu - 3\sigma \] \[ Upper\ Limit = \mu + 3\sigma \]

Di mana:

  • \(\mu\) = mean (rata-rata) dari dataset
  • \(\sigma\) = standar deviasi dari dataset

Jika suatu nilai berada di luar batas ini, maka kemungkinan besar nilai tersebut adalah anomali atau penyimpangan dari pola normal.

1.4 Penerapan Three Sigma dalam Berbagai Bidang

a. Quality Control (Six Sigma)

  • Dalam industri manufaktur dan kontrol kualitas, metode Six Sigma dikembangkan berdasarkan prinsip Three Sigma.
  • Jika proses memiliki standar deviasi kecil dan tetap berada dalam ±3σ, maka dianggap stabil dan berkualitas baik.
  • Jika produk memiliki lebih dari 3σ penyimpangan, maka ada kemungkinan besar cacat atau produk gagal.

b Statistical Process Control (SPC)

  • Dalam analisis proses industri, grafik kendali (control charts) menggunakan Three Sigma Rule untuk mendeteksi kapan suatu proses mulai menyimpang dari standar normal.

c. Deteksi Anomali dalam Data Science

  • Dalam machine learning dan analisis data, Three Sigma digunakan untuk mendeteksi outlier dalam dataset.
  • Jika suatu data memiliki nilai lebih dari 3σ dari rata-rata, maka dapat dipertimbangkan sebagai anomali.

d. Keuangan dan Manajemen Risiko

  • Dalam bidang keuangan, Three Sigma digunakan untuk mengukur volatilitas harga saham dan memprediksi risiko investasi.
  • Jika harga saham mengalami perubahan yang lebih dari 3σ dari rata-rata, hal ini bisa menjadi indikator risiko tinggi.

1.5 Kesimpulan

  • Three Sigma Rule menyatakan bahwa sekitar 99.73% data akan berada dalam rentang ±3σ.
  • Jika suatu data berada di luar rentang ±3σ, maka dianggap sebagai outlier atau penyimpangan dari pola normal.
  • Three Sigma banyak digunakan dalam quality control, deteksi anomali, manajemen risiko, dan data science.
  • Implementasi Three Sigma dapat dilakukan dengan R untuk mendeteksi outlier dan memahami pola distribusi data.

Six Sigma

2.1 Apa Itu Six Sigma?

Six Sigma adalah metodologi berbasis data yang bertujuan untuk meningkatkan kualitas proses bisnis dengan mengurangi variasi dan cacat dalam suatu sistem produksi atau layanan. Six Sigma menggunakan alat statistik untuk mengukur, menganalisis, meningkatkan, dan mengendalikan proses agar menghasilkan output yang bebas dari cacat atau berada dalam batas toleransi yang sangat kecil.

Six Sigma dikembangkan pertama kali oleh Motorola pada tahun 1986 dan kemudian diadopsi oleh berbagai perusahaan besar seperti General Electric (GE), Toyota, dan Samsung.

2.2 Konsep Dasar Six Sigma

Six Sigma berfokus pada mengurangi variasi dalam proses sehingga cacat dalam produksi atau layanan dapat diminimalkan.

a. Hubungan dengan Three Sigma

Six Sigma adalah pengembangan dari Three Sigma, di mana:

  • Three Sigma berarti 99.73% dari output berada dalam batas kendali.
  • Six Sigma meningkatkan kontrol kualitas hingga 99.99966%, atau hanya 3,4 cacat per juta peluang (DPMO - Defects Per Million Opportunities).

Singkatnya, semakin tinggi sigma, semakin sedikit cacat dalam proses produksi atau layanan.

2.3 Tingkatan Sigma dalam Kualitas Proses

Tingkat Sigma Tingkat Kesalahan (DPMO) Kualitas
1 Sigma 690.000 cacat per juta 31% baik
2 Sigma 308.000 cacat per juta 69% baik
3 Sigma 66.800 cacat per juta 93.32% baik
4 Sigma 6.210 cacat per juta 99.38% baik
5 Sigma 230 cacat per juta 99.977% baik
6 Sigma 3,4 cacat per juta 99.99966% baik

Perusahaan dengan standar Six Sigma akan memiliki hanya 3,4 kesalahan dari setiap 1 juta unit yang diproduksi.

2.4 Metodologi Six Sigma: DMAIC & DMADV

Six Sigma memiliki dua metodologi utama untuk meningkatkan proses bisnis:

a. DMAIC (Define - Measure - Analyze - Improve - Control)

Metodologi ini digunakan untuk meningkatkan proses yang sudah ada dengan mengidentifikasi dan menghilangkan penyebab cacat.

  • Define → Menentukan masalah dan tujuan perbaikan.
  • Measure → Mengukur performa proses saat ini.
  • Analyze → Menganalisis penyebab variasi dan cacat.
  • Improve → Meningkatkan proses dengan solusi berbasis data.
  • Control → Mengontrol hasil perbaikan agar tetap stabil.

b. DMADV (Define - Measure - Analyze - Design - Verify)

Metodologi ini digunakan ketika merancang proses atau produk baru agar memenuhi standar Six Sigma.

  • Define → Menentukan kebutuhan pelanggan dan tujuan desain.
  • Measure → Mengukur karakteristik penting untuk memenuhi kebutuhan pelanggan.
  • Analyze → Menganalisis opsi desain terbaik.
  • Design → Merancang solusi optimal.
  • Verify → Menguji dan memverifikasi desain sebelum implementasi.

2.5 Manfaat Six Sigma dalam Bisnis

Six Sigma memberikan banyak manfaat bagi perusahaan, termasuk:

✅ Meningkatkan kualitas produk & layanan
✅ Mengurangi jumlah cacat dan kesalahan
✅ Menghemat biaya produksi
✅ Meningkatkan efisiensi operasional
✅ Meningkatkan kepuasan pelanggan
✅ Mempermudah pengambilan keputusan berbasis data

2.6 Contoh Penerapan Six Sigma

a. Industri Manufaktur (Toyota, Motorola)

  • Mengurangi cacat dalam produksi kendaraan atau perangkat elektronik.
  • Memastikan setiap komponen memenuhi standar kualitas tinggi.

b. Industri Keuangan (Banking & Insurance)

  • Mengoptimalkan proses pengajuan pinjaman agar lebih cepat dan akurat.
  • Mengurangi kesalahan transaksi keuangan.

c. Layanan Kesehatan (Rumah Sakit & Farmasi)

  • Mengurangi kesalahan dalam pemberian obat kepada pasien.
  • Meningkatkan efisiensi pelayanan rumah sakit.

d. E-commerce & Teknologi (Amazon, Google)

  • Mengoptimalkan pengalaman pelanggan dengan mengurangi waktu loading website.
  • Mengurangi tingkat kesalahan dalam sistem logistik dan pengiriman barang.

2.7 Kesimpulan

  • Six Sigma adalah metodologi berbasis data yang bertujuan untuk meningkatkan kualitas dan efisiensi proses dengan mengurangi variasi dan cacat.
  • Menggunakan pendekatan statistik, Six Sigma dapat membantu perusahaan mencapai tingkat kesalahan hanya 3,4 cacat per juta unit.
  • Metode Six Sigma seperti DMAIC dan DMADV digunakan untuk memperbaiki atau merancang proses bisnis yang lebih baik.
  • Penerapan Six Sigma dapat meningkatkan kualitas produk, mengurangi biaya, meningkatkan kepuasan pelanggan, dan meningkatkan daya saing bisnis.

Three Sigma vs Six Sigma

3.1 Kapan Digunakan 3 Sigma dan 6 Sigma?

Baik Three Sigma maupun Six Sigma digunakan untuk mengukur dan meningkatkan kualitas proses, tetapi mereka memiliki tujuan dan penerapan yang berbeda tergantung pada kebutuhan bisnis atau analisis data.

Kriteria Three Sigma Six Sigma
Tingkat Kesalahan 66.800 cacat per juta (93.32% baik) 3,4 cacat per juta (99.99966% baik)
Tingkat Kualitas Cukup baik, masih ada toleransi kesalahan Sangat tinggi, hampir tanpa kesalahan
Kapan Digunakan? Untuk kontrol kualitas dasar, deteksi anomali, analisis statistik umum Untuk proses bisnis yang sangat kritis di mana kesalahan harus sangat minim
Kompleksitas Implementasi Lebih mudah diterapkan dan cocok untuk pemantauan rutin Membutuhkan pendekatan lebih ketat, pelatihan, dan strategi jangka panjang
Contoh Penerapan - Deteksi outlier dalam analisis data - Produksi pesawat terbang
- Kontrol kualitas produk standar - Sektor medis (rumah sakit & farmasi)
- Pemantauan performa mesin - Transaksi perbankan & keamanan data

3.2 Perbedaan Three Sigma dan Six Sigma

Tingkat Kualitas & Toleransi Kesalahan

  • Three Sigma masih memiliki 66.800 cacat per juta peluang (DPMO). Ini berarti prosesnya cukup baik, tetapi masih ada toleransi kesalahan.
  • Six Sigma hanya memiliki 3,4 cacat per juta, sehingga lebih ketat dan presisi tinggi.

Tingkat Kesulitan Implementasi

  • Three Sigma lebih mudah diterapkan karena hanya memerlukan pemantauan dasar terhadap distribusi data.
  • Six Sigma lebih kompleks dan memerlukan metodologi seperti DMAIC atau DMADV, serta analisis mendalam dengan alat statistik.

Bidang Penggunaan

  • Three Sigma digunakan dalam analisis statistik umum dan kontrol kualitas standar, misalnya untuk menentukan outlier dalam data atau memantau variasi dalam produksi.
  • Six Sigma digunakan dalam industri dengan tingkat risiko tinggi, seperti produksi mobil, pesawat, kesehatan, dan keuangan, di mana kesalahan harus sangat kecil atau nol.

3.3 Kapan Menggunakan Three Sigma?

  • Jika kesalahan masih bisa ditoleransi dan kita hanya ingin mendeteksi outlier atau variasi dalam proses.
  • Jika digunakan untuk kontrol kualitas dasar, seperti pemeriksaan barang dalam pabrik yang tidak memerlukan presisi ekstrem.
  • Jika ingin melakukan analisis data cepat untuk melihat distribusi normal atau outlier dalam dataset.

Contoh: - Mengidentifikasi data yang tidak normal dalam distribusi nilai mahasiswa. - Memantau kualitas produksi dalam industri makanan yang masih memiliki sedikit toleransi kesalahan.

3.4 Kapan Menggunakan Six Sigma?

  • Jika kesalahan harus benar-benar minimal dan berpengaruh besar terhadap keselamatan atau biaya produksi.
  • Jika ingin meningkatkan efisiensi bisnis secara drastis dengan mengurangi cacat seminimal mungkin.
  • Jika bekerja dalam industri dengan persyaratan keamanan tinggi (penerbangan, farmasi, otomotif, dll.).

Contoh: - Produksi pesawat terbang (karena kesalahan kecil bisa menyebabkan kecelakaan). - Sistem perbankan & keuangan (untuk menghindari kesalahan transaksi). - Sektor medis (untuk mengurangi kesalahan dalam pemberian obat atau operasi bedah).

3.5 Kesimpulan

  • Gunakan Three Sigma jika masih ada toleransi kesalahan dan fokusnya adalah deteksi anomali atau kontrol kualitas dasar.
  • Gunakan Six Sigma jika kesalahan harus hampir nol, terutama dalam industri kritis seperti penerbangan, kesehatan, dan keuangan.

Z-Score

4.1 Apa Itu Z-Score?

Z-score, atau disebut juga standard score, adalah nilai yang menunjukkan seberapa jauh suatu data berada dari rata-rata dalam satuan standar deviasi. Z-score dihitung dengan rumus:

\[ Z = \frac{X - \mu}{\sigma} \]

di mana:

  • \(X\) = nilai data yang ingin dianalisis
  • \(\mu\) = rata-rata populasi
  • \(\sigma\) = standar deviasi populasi

Z-score menunjukkan apakah suatu data lebih tinggi atau lebih rendah dari rata-rata dan sejauh mana perbedaannya dalam satuan standar deviasi.

4.2 Kapan Menggunakan Z-Score?

1. Mendeteksi Outlier

Nilai dengan Z-score yang sangat besar (biasanya di atas 3 atau di bawah -3) dapat dianggap sebagai outlier karena jauh dari rata-rata.

2. Standarisasi Data

Dalam analisis data atau pembelajaran mesin (machine learning), Z-score digunakan untuk menormalkan data sehingga memiliki distribusi dengan rata-rata 0 dan standar deviasi 1.

3. Distribusi Normal dan Probabilitas

Dalam statistik inferensial, Z-score digunakan untuk menghitung probabilitas dalam distribusi normal, seperti dalam Z-test atau tabel distribusi normal.

4. Perbandingan Antar Dataset

Ketika ingin membandingkan nilai dari dua dataset yang memiliki skala atau unit berbeda, Z-score membantu menyamakan skala agar lebih mudah dibandingkan.

5. Statistik dalam Keuangan

Dalam analisis risiko keuangan, Z-score digunakan untuk menilai kemungkinan kebangkrutan suatu perusahaan (Altman Z-score).

T-Score

5.1 Apa Itu T-Score?

T-score (juga disebut t-value atau Student’s t-score) adalah nilai yang digunakan dalam uji statistik untuk menentukan seberapa jauh suatu sampel berbeda dari rata-rata populasi, terutama ketika ukuran sampel kecil $( n < 30 $) dan standar deviasi populasi tidak diketahui. T-score dihitung dengan rumus:

\[ T = \frac{X - \mu}{\frac{s} {\sqrt{n}}} \]

di mana:

  • \(X\) = rata-rata sampel
  • \(\mu\) = rata-rata populasi
  • \(s\) = standar deviasi sampel
  • \(n\) = ukuran sampel

T-score mirip dengan Z-score, tetapi digunakan dalam kondisi di mana populasi tidak diketahui secara pasti dan ukuran sampel relatif kecil.

5.2 Kapan Menggunakan T-Score?

T-score digunakan dalam berbagai situasi, terutama dalam statistik inferensial, seperti:

1. Uji t (T-Test) untuk Perbandingan Mean

Digunakan untuk membandingkan rata-rata antara dua kelompok, misalnya:

  • One-sample t-test: membandingkan rata-rata sampel dengan nilai tertentu.
  • Independent t-test: membandingkan dua kelompok yang tidak berhubungan (misalnya, skor ujian antara dua kelas).
  • Paired t-test: membandingkan dua kelompok yang berhubungan (misalnya, sebelum dan sesudah suatu perlakuan).

2. Ketika Standar Deviasi Populasi Tidak Diketahui

Jika standar deviasi populasi \((\sigma\)) tidak diketahui, maka kita menggunakan standar deviasi sampel \((s\)) dan distribusi t-Student untuk mengestimasi nilai yang diharapkan.

3. Sampel Kecil (n < 30)

Jika ukuran sampel lebih kecil dari 30, distribusi t lebih sesuai daripada distribusi normal karena lebih memperhitungkan variabilitas sampel.

4. Analisis Inferensial dalam Penelitian

T-score digunakan dalam pengujian hipotesis untuk menentukan apakah ada perbedaan yang signifikan dalam data, terutama dalam penelitian eksperimental dan sosial.

Z-Score vs T-Score

6.1 Perbedaan Z-Score dan T-Score

Aspek Z-Score T-Score
Definisi Mengukur seberapa jauh suatu nilai dari rata-rata dalam satuan standar deviasi. Digunakan dalam statistik inferensial untuk membandingkan rata-rata sampel terhadap populasi, terutama jika ukuran sampel kecil.
Kapan Digunakan Jika ukuran sampel besar \((𝑛≥ 30\)) dan standar deviasi populasi diketahui. Jika ukuran sampel kecil \((𝑛< 30\)) atau standar deviasi populasi tidak diketahui.
Distribusi yang Digunakan Distribusi normal standar. Distribusi t-Student, yang memiliki ekor lebih panjang dibandingkan distribusi normal (karena lebih sensitif terhadap sampel kecil).
Rumus \[ Z = \frac{X - \mu}{\sigma} \] \[ T = \frac{X - \mu}{\frac{s} {\sqrt{n}}} \]
Ketergantungan terhadap Ukuran Sampel Tidak tergantung pada ukuran sampel selama distribusi mendekati normal. Sangat bergantung pada ukuran sampel; semakin kecil sampel, semakin besar pengaruhnya pada distribusi t.
Aplikasi - Menentukan probabilitas dalam distribusi normal. - Uji-t (one-sample, independent, paired).
- Mendeteksi outlier. - Uji hipotesis saat standar deviasi populasi tidak diketahui.
- Normalisasi data. - Analisis statistik inferensial untuk sampel kecil.

6.2 Kesimpulan

  • Gunakan Z-score jika memiliki data yang cukup besar dan standar deviasi populasi diketahui.
  • Gunakan T-score jika ukuran sampel kecil (n < 30) atau standar deviasi populasi tidak diketahui.
LS0tDQp0aXRsZTogIkRpc3RyaWJ1c2kgUHJvYmFiaWxpdGFzIg0Kc3VidGl0bGU6ICJUZWtuaWsgU2FtcGxpbmcgZGFuIFN1cnZlaSINCmF1dGhvcjogIkpPQU5TIEhFTktZIFNFUlZBVElVUyBTSU1BTlVMTEFORyINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246DQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJzdHlsZSAxLmNzcyINCi0tLQ0KDQojIFRocmVlIFNpZ21hDQoNCiMjIDEuMSBBcGEgaXR1IFRocmVlIFNpZ21hPw0KVGhyZWUgU2lnbWEgYWRhbGFoIGtvbnNlcCBkYWxhbSBzdGF0aXN0aWthIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbWFoYW1pIHNlYmFyYW4gZGF0YSBkYWxhbSBkaXN0cmlidXNpIG5vcm1hbC4gVGhyZWUgU2lnbWEgbWVuZ2FjdSBwYWRhIGJhdGFzIHRpZ2Ega2FsaSBzdGFuZGFyIGRldmlhc2kgKCRcc2lnbWEkKSBkYXJpIG5pbGFpIHJhdGEtcmF0YSAoJFxtdSQpIHN1YXR1IGRhdGFzZXQuDQoNCiMjIDEuMiBQcmluc2lwIERhc2FyIFRocmVlIFNpZ21hDQpEYWxhbSBkaXN0cmlidXNpIG5vcm1hbCwgc2ViYWdpYW4gYmVzYXIgZGF0YSBha2FuIGJlcmFkYSBkaSBzZWtpdGFyIHJhdGEtcmF0YS4gQmVyZGFzYXJrYW4gYXR1cmFuIGVtcGlyaXMgKGVtcGlyaWNhbCBydWxlKSBhdGF1IGF0dXJhbiA2OC05NS05OS43LCBkaXN0cmlidXNpIGRhdGEgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSAqKiRcbXUgXHBtIDFcc2lnbWEkKiogbWVuY2FrdXAgKio2OC4yNyUqKiBkYXJpIHNlbXVhIGRhdGEuDQotICoqJFxtdSBccG0gMlxzaWdtYSQqKiBtZW5jYWt1cCAqKjk1LjQ1JSoqIGRhcmkgc2VtdWEgZGF0YS4NCi0gKiokXG11IFxwbSAzXHNpZ21hJCoqIG1lbmNha3VwICoqOTkuNzMlKiogZGFyaSBzZW11YSBkYXRhLg0KDQpBcnRpbnlhLCBoYW55YSAqKjAuMjclKiogKHNla2l0YXIgMyBkYXJpIDEwMDApIGRhdGEgeWFuZyBha2FuIGJlcmFkYSBkaSBsdWFyIMKxM8+DLCBzZWhpbmdnYSBuaWxhaS1uaWxhaSB0ZXJzZWJ1dCBkaWFuZ2dhcCBzZWJhZ2FpICoqb3V0bGllcioqIGF0YXUga2VqYWRpYW4gbGFuZ2thLg0KDQojIyAxLjMgUnVtdXMgVGhyZWUgU2lnbWENCkJhdGFzIGJhd2FoIGRhbiBiYXRhcyBhdGFzIGRhbGFtIG1ldG9kZSBUaHJlZSBTaWdtYSBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQokJA0KTG93ZXJcIExpbWl0ID0gXG11IC0gM1xzaWdtYQ0KJCQNCiQkDQpVcHBlclwgTGltaXQgPSBcbXUgKyAzXHNpZ21hDQokJA0KDQpEaSBtYW5hOg0KDQotICRcbXUkID0gbWVhbiAocmF0YS1yYXRhKSBkYXJpIGRhdGFzZXQNCi0gJFxzaWdtYSQgPSBzdGFuZGFyIGRldmlhc2kgZGFyaSBkYXRhc2V0DQoNCkppa2Egc3VhdHUgbmlsYWkgYmVyYWRhIGRpIGx1YXIgYmF0YXMgaW5pLCBtYWthIGtlbXVuZ2tpbmFuIGJlc2FyIG5pbGFpIHRlcnNlYnV0IGFkYWxhaCAqKmFub21hbGkqKiBhdGF1IHBlbnlpbXBhbmdhbiBkYXJpIHBvbGEgbm9ybWFsLg0KDQojIyAxLjQgUGVuZXJhcGFuIFRocmVlIFNpZ21hIGRhbGFtIEJlcmJhZ2FpIEJpZGFuZw0KDQojIyMgYS4gUXVhbGl0eSBDb250cm9sIChTaXggU2lnbWEpDQotIERhbGFtIGluZHVzdHJpIG1hbnVmYWt0dXIgZGFuIGtvbnRyb2wga3VhbGl0YXMsIG1ldG9kZSBTaXggU2lnbWEgZGlrZW1iYW5na2FuIGJlcmRhc2Fya2FuIHByaW5zaXAgVGhyZWUgU2lnbWEuDQotIEppa2EgcHJvc2VzIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSBrZWNpbCBkYW4gdGV0YXAgYmVyYWRhIGRhbGFtIMKxM8+DLCBtYWthIGRpYW5nZ2FwIHN0YWJpbCBkYW4gYmVya3VhbGl0YXMgYmFpay4NCi0gSmlrYSBwcm9kdWsgbWVtaWxpa2kgbGViaWggZGFyaSAzz4MgcGVueWltcGFuZ2FuLCBtYWthIGFkYSBrZW11bmdraW5hbiBiZXNhciBjYWNhdCBhdGF1IHByb2R1ayBnYWdhbC4NCg0KIyMjIGIgU3RhdGlzdGljYWwgUHJvY2VzcyBDb250cm9sIChTUEMpDQotIERhbGFtIGFuYWxpc2lzIHByb3NlcyBpbmR1c3RyaSwgZ3JhZmlrIGtlbmRhbGkgKCoqY29udHJvbCBjaGFydHMqKikgbWVuZ2d1bmFrYW4gKipUaHJlZSBTaWdtYSBSdWxlKiogdW50dWsgbWVuZGV0ZWtzaSBrYXBhbiBzdWF0dSBwcm9zZXMgbXVsYWkgbWVueWltcGFuZyBkYXJpIHN0YW5kYXIgbm9ybWFsLg0KDQojIyMgYy4gRGV0ZWtzaSBBbm9tYWxpIGRhbGFtIERhdGEgU2NpZW5jZQ0KLSBEYWxhbSBtYWNoaW5lIGxlYXJuaW5nIGRhbiBhbmFsaXNpcyBkYXRhLCAqKlRocmVlIFNpZ21hKiogZGlndW5ha2FuIHVudHVrIG1lbmRldGVrc2kgKipvdXRsaWVyKiogZGFsYW0gZGF0YXNldC4NCi0gSmlrYSBzdWF0dSBkYXRhIG1lbWlsaWtpIG5pbGFpIGxlYmloIGRhcmkgKiozz4MgZGFyaSByYXRhLXJhdGEqKiwgbWFrYSBkYXBhdCBkaXBlcnRpbWJhbmdrYW4gc2ViYWdhaSAqKmFub21hbGkqKi4NCg0KIyMjIGQuIEtldWFuZ2FuIGRhbiBNYW5hamVtZW4gUmlzaWtvDQotIERhbGFtIGJpZGFuZyBrZXVhbmdhbiwgKipUaHJlZSBTaWdtYSoqIGRpZ3VuYWthbiB1bnR1ayBtZW5ndWt1ciAqKnZvbGF0aWxpdGFzIGhhcmdhIHNhaGFtKiogZGFuICoqbWVtcHJlZGlrc2kgcmlzaWtvIGludmVzdGFzaSoqLg0KLSBKaWthIGhhcmdhIHNhaGFtIG1lbmdhbGFtaSBwZXJ1YmFoYW4geWFuZyBsZWJpaCBkYXJpICoqM8+DIGRhcmkgcmF0YS1yYXRhKiosIGhhbCBpbmkgYmlzYSBtZW5qYWRpICoqaW5kaWthdG9yIHJpc2lrbyB0aW5nZ2kqKi4NCg0KDQojIyAxLjUgS2VzaW1wdWxhbg0KLSAqKlRocmVlIFNpZ21hIFJ1bGUqKiBtZW55YXRha2FuIGJhaHdhIHNla2l0YXIgKio5OS43MyUqKiBkYXRhIGFrYW4gYmVyYWRhIGRhbGFtIHJlbnRhbmcgKirCsTPPgyoqLg0KLSBKaWthIHN1YXR1IGRhdGEgYmVyYWRhIGRpIGx1YXIgcmVudGFuZyAqKsKxM8+DKiosIG1ha2EgZGlhbmdnYXAgc2ViYWdhaSAqKm91dGxpZXIqKiBhdGF1IHBlbnlpbXBhbmdhbiBkYXJpIHBvbGEgbm9ybWFsLg0KLSAqKlRocmVlIFNpZ21hKiogYmFueWFrIGRpZ3VuYWthbiBkYWxhbSAqKnF1YWxpdHkgY29udHJvbCwgZGV0ZWtzaSBhbm9tYWxpLCBtYW5hamVtZW4gcmlzaWtvLCoqIGRhbiAqKmRhdGEgc2NpZW5jZSoqLg0KLSBJbXBsZW1lbnRhc2kgKipUaHJlZSBTaWdtYSoqIGRhcGF0IGRpbGFrdWthbiBkZW5nYW4gKipSKiogdW50dWsgbWVuZGV0ZWtzaSBvdXRsaWVyIGRhbiBtZW1haGFtaSBwb2xhIGRpc3RyaWJ1c2kgZGF0YS4NCg0KDQojIFNpeCBTaWdtYQ0KDQojIyAyLjEgQXBhIEl0dSBTaXggU2lnbWE/DQpTaXggU2lnbWEgYWRhbGFoIG1ldG9kb2xvZ2kgYmVyYmFzaXMgZGF0YSB5YW5nIGJlcnR1anVhbiB1bnR1ayBtZW5pbmdrYXRrYW4ga3VhbGl0YXMgcHJvc2VzIGJpc25pcyBkZW5nYW4gbWVuZ3VyYW5naSB2YXJpYXNpIGRhbiBjYWNhdCBkYWxhbSBzdWF0dSBzaXN0ZW0gcHJvZHVrc2kgYXRhdSBsYXlhbmFuLiBTaXggU2lnbWEgbWVuZ2d1bmFrYW4gYWxhdCBzdGF0aXN0aWsgdW50dWsgbWVuZ3VrdXIsIG1lbmdhbmFsaXNpcywgbWVuaW5na2F0a2FuLCBkYW4gbWVuZ2VuZGFsaWthbiBwcm9zZXMgYWdhciBtZW5naGFzaWxrYW4gb3V0cHV0IHlhbmcgYmViYXMgZGFyaSBjYWNhdCBhdGF1IGJlcmFkYSBkYWxhbSBiYXRhcyB0b2xlcmFuc2kgeWFuZyBzYW5nYXQga2VjaWwuDQoNClNpeCBTaWdtYSBkaWtlbWJhbmdrYW4gcGVydGFtYSBrYWxpIG9sZWggTW90b3JvbGEgcGFkYSB0YWh1biAxOTg2IGRhbiBrZW11ZGlhbiBkaWFkb3BzaSBvbGVoIGJlcmJhZ2FpIHBlcnVzYWhhYW4gYmVzYXIgc2VwZXJ0aSBHZW5lcmFsIEVsZWN0cmljIChHRSksIFRveW90YSwgZGFuIFNhbXN1bmcuDQoNCiMjIDIuMiBLb25zZXAgRGFzYXIgU2l4IFNpZ21hDQpTaXggU2lnbWEgYmVyZm9rdXMgcGFkYSBtZW5ndXJhbmdpIHZhcmlhc2kgZGFsYW0gcHJvc2VzIHNlaGluZ2dhIGNhY2F0IGRhbGFtIHByb2R1a3NpIGF0YXUgbGF5YW5hbiBkYXBhdCBkaW1pbmltYWxrYW4uDQoNCiMjIyBhLiBIdWJ1bmdhbiBkZW5nYW4gVGhyZWUgU2lnbWENClNpeCBTaWdtYSBhZGFsYWggcGVuZ2VtYmFuZ2FuIGRhcmkgVGhyZWUgU2lnbWEsIGRpIG1hbmE6DQoNCi0gKipUaHJlZSBTaWdtYSoqIGJlcmFydGkgOTkuNzMlIGRhcmkgb3V0cHV0IGJlcmFkYSBkYWxhbSBiYXRhcyBrZW5kYWxpLg0KLSAqKlNpeCBTaWdtYSoqIG1lbmluZ2thdGthbiBrb250cm9sIGt1YWxpdGFzIGhpbmdnYSAqKjk5Ljk5OTY2JSoqLCBhdGF1IGhhbnlhICoqMyw0IGNhY2F0IHBlciBqdXRhIHBlbHVhbmcqKiAoRFBNTyAtIERlZmVjdHMgUGVyIE1pbGxpb24gT3Bwb3J0dW5pdGllcykuDQoNClNpbmdrYXRueWEsIHNlbWFraW4gdGluZ2dpIHNpZ21hLCBzZW1ha2luIHNlZGlraXQgY2FjYXQgZGFsYW0gcHJvc2VzIHByb2R1a3NpIGF0YXUgbGF5YW5hbi4NCg0KIyMgMi4zIFRpbmdrYXRhbiBTaWdtYSBkYWxhbSBLdWFsaXRhcyBQcm9zZXMNCg0KfCBUaW5na2F0IFNpZ21hIHwgVGluZ2thdCBLZXNhbGFoYW4gKERQTU8pIHwgS3VhbGl0YXMgfA0KfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18DQp8IDEgU2lnbWEgfCA2OTAuMDAwIGNhY2F0IHBlciBqdXRhIHwgMzElIGJhaWsgfA0KfCAyIFNpZ21hIHwgMzA4LjAwMCBjYWNhdCBwZXIganV0YSB8IDY5JSBiYWlrIHwNCnwgMyBTaWdtYSB8IDY2LjgwMCBjYWNhdCBwZXIganV0YSB8IDkzLjMyJSBiYWlrIHwNCnwgNCBTaWdtYSB8IDYuMjEwIGNhY2F0IHBlciBqdXRhIHwgOTkuMzglIGJhaWsgfA0KfCA1IFNpZ21hIHwgMjMwIGNhY2F0IHBlciBqdXRhIHwgOTkuOTc3JSBiYWlrIHwNCnwgNiBTaWdtYSB8IDMsNCBjYWNhdCBwZXIganV0YSB8IDk5Ljk5OTY2JSBiYWlrIHwNCg0KUGVydXNhaGFhbiBkZW5nYW4gc3RhbmRhciBTaXggU2lnbWEgYWthbiBtZW1pbGlraSBoYW55YSAqKjMsNCBrZXNhbGFoYW4gZGFyaSBzZXRpYXAgMSBqdXRhIHVuaXQqKiB5YW5nIGRpcHJvZHVrc2kuDQoNCiMjIDIuNCBNZXRvZG9sb2dpIFNpeCBTaWdtYTogRE1BSUMgJiBETUFEVg0KU2l4IFNpZ21hIG1lbWlsaWtpIGR1YSBtZXRvZG9sb2dpIHV0YW1hIHVudHVrIG1lbmluZ2thdGthbiBwcm9zZXMgYmlzbmlzOg0KDQojIyMgYS4gRE1BSUMgKERlZmluZSAtIE1lYXN1cmUgLSBBbmFseXplIC0gSW1wcm92ZSAtIENvbnRyb2wpDQpNZXRvZG9sb2dpIGluaSBkaWd1bmFrYW4gdW50dWsgbWVuaW5na2F0a2FuIHByb3NlcyB5YW5nIHN1ZGFoIGFkYSBkZW5nYW4gbWVuZ2lkZW50aWZpa2FzaSBkYW4gbWVuZ2hpbGFuZ2thbiBwZW55ZWJhYiBjYWNhdC4NCg0KLSAqKkRlZmluZSoqIOKGkiBNZW5lbnR1a2FuIG1hc2FsYWggZGFuIHR1anVhbiBwZXJiYWlrYW4uDQotICoqTWVhc3VyZSoqIOKGkiBNZW5ndWt1ciBwZXJmb3JtYSBwcm9zZXMgc2FhdCBpbmkuDQotICoqQW5hbHl6ZSoqIOKGkiBNZW5nYW5hbGlzaXMgcGVueWViYWIgdmFyaWFzaSBkYW4gY2FjYXQuDQotICoqSW1wcm92ZSoqIOKGkiBNZW5pbmdrYXRrYW4gcHJvc2VzIGRlbmdhbiBzb2x1c2kgYmVyYmFzaXMgZGF0YS4NCi0gKipDb250cm9sKiog4oaSIE1lbmdvbnRyb2wgaGFzaWwgcGVyYmFpa2FuIGFnYXIgdGV0YXAgc3RhYmlsLg0KDQojIyMgYi4gRE1BRFYgKERlZmluZSAtIE1lYXN1cmUgLSBBbmFseXplIC0gRGVzaWduIC0gVmVyaWZ5KQ0KTWV0b2RvbG9naSBpbmkgZGlndW5ha2FuIGtldGlrYSBtZXJhbmNhbmcgcHJvc2VzIGF0YXUgcHJvZHVrIGJhcnUgYWdhciBtZW1lbnVoaSBzdGFuZGFyIFNpeCBTaWdtYS4NCg0KLSAqKkRlZmluZSoqIOKGkiBNZW5lbnR1a2FuIGtlYnV0dWhhbiBwZWxhbmdnYW4gZGFuIHR1anVhbiBkZXNhaW4uDQotICoqTWVhc3VyZSoqIOKGkiBNZW5ndWt1ciBrYXJha3RlcmlzdGlrIHBlbnRpbmcgdW50dWsgbWVtZW51aGkga2VidXR1aGFuIHBlbGFuZ2dhbi4NCi0gKipBbmFseXplKiog4oaSIE1lbmdhbmFsaXNpcyBvcHNpIGRlc2FpbiB0ZXJiYWlrLg0KLSAqKkRlc2lnbioqIOKGkiBNZXJhbmNhbmcgc29sdXNpIG9wdGltYWwuDQotICoqVmVyaWZ5Kiog4oaSIE1lbmd1amkgZGFuIG1lbXZlcmlmaWthc2kgZGVzYWluIHNlYmVsdW0gaW1wbGVtZW50YXNpLg0KDQojIyAyLjUgTWFuZmFhdCBTaXggU2lnbWEgZGFsYW0gQmlzbmlzDQpTaXggU2lnbWEgbWVtYmVyaWthbiBiYW55YWsgbWFuZmFhdCBiYWdpIHBlcnVzYWhhYW4sIHRlcm1hc3VrOg0KDQrinIUgTWVuaW5na2F0a2FuIGt1YWxpdGFzIHByb2R1ayAmIGxheWFuYW4gIA0K4pyFIE1lbmd1cmFuZ2kganVtbGFoIGNhY2F0IGRhbiBrZXNhbGFoYW4gIA0K4pyFIE1lbmdoZW1hdCBiaWF5YSBwcm9kdWtzaSAgDQrinIUgTWVuaW5na2F0a2FuIGVmaXNpZW5zaSBvcGVyYXNpb25hbCAgDQrinIUgTWVuaW5na2F0a2FuIGtlcHVhc2FuIHBlbGFuZ2dhbiAgDQrinIUgTWVtcGVybXVkYWggcGVuZ2FtYmlsYW4ga2VwdXR1c2FuIGJlcmJhc2lzIGRhdGEgIA0KDQojIyAyLjYgQ29udG9oIFBlbmVyYXBhbiBTaXggU2lnbWENCg0KIyMjIGEuIEluZHVzdHJpIE1hbnVmYWt0dXIgKFRveW90YSwgTW90b3JvbGEpDQotIE1lbmd1cmFuZ2kgY2FjYXQgZGFsYW0gcHJvZHVrc2kga2VuZGFyYWFuIGF0YXUgcGVyYW5na2F0IGVsZWt0cm9uaWsuDQotIE1lbWFzdGlrYW4gc2V0aWFwIGtvbXBvbmVuIG1lbWVudWhpIHN0YW5kYXIga3VhbGl0YXMgdGluZ2dpLg0KDQojIyMgYi4gSW5kdXN0cmkgS2V1YW5nYW4gKEJhbmtpbmcgJiBJbnN1cmFuY2UpDQotIE1lbmdvcHRpbWFsa2FuIHByb3NlcyBwZW5nYWp1YW4gcGluamFtYW4gYWdhciBsZWJpaCBjZXBhdCBkYW4gYWt1cmF0Lg0KLSBNZW5ndXJhbmdpIGtlc2FsYWhhbiB0cmFuc2Frc2kga2V1YW5nYW4uDQoNCiMjIyBjLiBMYXlhbmFuIEtlc2VoYXRhbiAoUnVtYWggU2FraXQgJiBGYXJtYXNpKQ0KLSBNZW5ndXJhbmdpIGtlc2FsYWhhbiBkYWxhbSBwZW1iZXJpYW4gb2JhdCBrZXBhZGEgcGFzaWVuLg0KLSBNZW5pbmdrYXRrYW4gZWZpc2llbnNpIHBlbGF5YW5hbiBydW1haCBzYWtpdC4NCg0KIyMjIGQuIEUtY29tbWVyY2UgJiBUZWtub2xvZ2kgKEFtYXpvbiwgR29vZ2xlKQ0KLSBNZW5nb3B0aW1hbGthbiBwZW5nYWxhbWFuIHBlbGFuZ2dhbiBkZW5nYW4gbWVuZ3VyYW5naSB3YWt0dSBsb2FkaW5nIHdlYnNpdGUuDQotIE1lbmd1cmFuZ2kgdGluZ2thdCBrZXNhbGFoYW4gZGFsYW0gc2lzdGVtIGxvZ2lzdGlrIGRhbiBwZW5naXJpbWFuIGJhcmFuZy4NCg0KIyMgMi43IEtlc2ltcHVsYW4NCi0gKipTaXggU2lnbWEqKiBhZGFsYWggbWV0b2RvbG9naSBiZXJiYXNpcyBkYXRhIHlhbmcgYmVydHVqdWFuIHVudHVrIG1lbmluZ2thdGthbiBrdWFsaXRhcyBkYW4gZWZpc2llbnNpIHByb3NlcyBkZW5nYW4gbWVuZ3VyYW5naSB2YXJpYXNpIGRhbiBjYWNhdC4NCi0gTWVuZ2d1bmFrYW4gcGVuZGVrYXRhbiBzdGF0aXN0aWssICoqU2l4IFNpZ21hKiogZGFwYXQgbWVtYmFudHUgcGVydXNhaGFhbiBtZW5jYXBhaSB0aW5na2F0IGtlc2FsYWhhbiBoYW55YSAqKjMsNCBjYWNhdCBwZXIganV0YSB1bml0KiouDQotIE1ldG9kZSAqKlNpeCBTaWdtYSoqIHNlcGVydGkgKipETUFJQyoqIGRhbiAqKkRNQURWKiogZGlndW5ha2FuIHVudHVrIG1lbXBlcmJhaWtpIGF0YXUgbWVyYW5jYW5nIHByb3NlcyBiaXNuaXMgeWFuZyBsZWJpaCBiYWlrLg0KLSBQZW5lcmFwYW4gKipTaXggU2lnbWEqKiBkYXBhdCBtZW5pbmdrYXRrYW4ga3VhbGl0YXMgcHJvZHVrLCBtZW5ndXJhbmdpIGJpYXlhLCBtZW5pbmdrYXRrYW4ga2VwdWFzYW4gcGVsYW5nZ2FuLCBkYW4gbWVuaW5na2F0a2FuIGRheWEgc2FpbmcgYmlzbmlzLg0KDQojIFRocmVlIFNpZ21hIHZzIFNpeCBTaWdtYQ0KDQojIyAzLjEgS2FwYW4gRGlndW5ha2FuIDMgU2lnbWEgZGFuIDYgU2lnbWE/DQpCYWlrIFRocmVlIFNpZ21hIG1hdXB1biBTaXggU2lnbWEgZGlndW5ha2FuIHVudHVrIG1lbmd1a3VyIGRhbiBtZW5pbmdrYXRrYW4ga3VhbGl0YXMgcHJvc2VzLCB0ZXRhcGkgbWVyZWthIG1lbWlsaWtpIHR1anVhbiBkYW4gcGVuZXJhcGFuIHlhbmcgYmVyYmVkYSB0ZXJnYW50dW5nIHBhZGEga2VidXR1aGFuIGJpc25pcyBhdGF1IGFuYWxpc2lzIGRhdGEuDQoNCnwgS3JpdGVyaWEgfCBUaHJlZSBTaWdtYSB8IFNpeCBTaWdtYSB8DQp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18DQp8IFRpbmdrYXQgS2VzYWxhaGFuIHwgNjYuODAwIGNhY2F0IHBlciBqdXRhICg5My4zMiUgYmFpaykgfCAzLDQgY2FjYXQgcGVyIGp1dGEgKDk5Ljk5OTY2JSBiYWlrKSB8DQp8IFRpbmdrYXQgS3VhbGl0YXMgfCBDdWt1cCBiYWlrLCBtYXNpaCBhZGEgdG9sZXJhbnNpIGtlc2FsYWhhbiB8IFNhbmdhdCB0aW5nZ2ksIGhhbXBpciB0YW5wYSBrZXNhbGFoYW4gfA0KfCBLYXBhbiBEaWd1bmFrYW4/IHwgVW50dWsga29udHJvbCBrdWFsaXRhcyBkYXNhciwgZGV0ZWtzaSBhbm9tYWxpLCBhbmFsaXNpcyBzdGF0aXN0aWsgdW11bSB8IFVudHVrIHByb3NlcyBiaXNuaXMgeWFuZyBzYW5nYXQga3JpdGlzIGRpIG1hbmEga2VzYWxhaGFuIGhhcnVzIHNhbmdhdCBtaW5pbSB8DQp8IEtvbXBsZWtzaXRhcyBJbXBsZW1lbnRhc2kgfCBMZWJpaCBtdWRhaCBkaXRlcmFwa2FuIGRhbiBjb2NvayB1bnR1ayBwZW1hbnRhdWFuIHJ1dGluIHwgTWVtYnV0dWhrYW4gcGVuZGVrYXRhbiBsZWJpaCBrZXRhdCwgcGVsYXRpaGFuLCBkYW4gc3RyYXRlZ2kgamFuZ2thIHBhbmphbmcgfA0KfCBDb250b2ggUGVuZXJhcGFuIHwgLSBEZXRla3NpIG91dGxpZXIgZGFsYW0gYW5hbGlzaXMgZGF0YSB8IC0gUHJvZHVrc2kgcGVzYXdhdCB0ZXJiYW5nIHwNCnwgfCAtIEtvbnRyb2wga3VhbGl0YXMgcHJvZHVrIHN0YW5kYXIgfCAtIFNla3RvciBtZWRpcyAocnVtYWggc2FraXQgJiBmYXJtYXNpKSB8DQp8IHwgLSBQZW1hbnRhdWFuIHBlcmZvcm1hIG1lc2luIHwgLSBUcmFuc2Frc2kgcGVyYmFua2FuICYga2VhbWFuYW4gZGF0YSB8DQoNCiMjIDMuMiBQZXJiZWRhYW4gVGhyZWUgU2lnbWEgZGFuIFNpeCBTaWdtYQ0KDQojIyMgVGluZ2thdCBLdWFsaXRhcyAmIFRvbGVyYW5zaSBLZXNhbGFoYW4NCi0gVGhyZWUgU2lnbWEgbWFzaWggbWVtaWxpa2kgNjYuODAwIGNhY2F0IHBlciBqdXRhIHBlbHVhbmcgKERQTU8pLiBJbmkgYmVyYXJ0aSBwcm9zZXNueWEgY3VrdXAgYmFpaywgdGV0YXBpIG1hc2loIGFkYSB0b2xlcmFuc2kga2VzYWxhaGFuLg0KLSBTaXggU2lnbWEgaGFueWEgbWVtaWxpa2kgMyw0IGNhY2F0IHBlciBqdXRhLCBzZWhpbmdnYSBsZWJpaCBrZXRhdCBkYW4gcHJlc2lzaSB0aW5nZ2kuDQoNCiMjIyBUaW5na2F0IEtlc3VsaXRhbiBJbXBsZW1lbnRhc2kNCi0gVGhyZWUgU2lnbWEgbGViaWggbXVkYWggZGl0ZXJhcGthbiBrYXJlbmEgaGFueWEgbWVtZXJsdWthbiBwZW1hbnRhdWFuIGRhc2FyIHRlcmhhZGFwIGRpc3RyaWJ1c2kgZGF0YS4NCi0gU2l4IFNpZ21hIGxlYmloIGtvbXBsZWtzIGRhbiBtZW1lcmx1a2FuIG1ldG9kb2xvZ2kgc2VwZXJ0aSBETUFJQyBhdGF1IERNQURWLCBzZXJ0YSBhbmFsaXNpcyBtZW5kYWxhbSBkZW5nYW4gYWxhdCBzdGF0aXN0aWsuDQoNCiMjIyBCaWRhbmcgUGVuZ2d1bmFhbg0KLSBUaHJlZSBTaWdtYSBkaWd1bmFrYW4gZGFsYW0gYW5hbGlzaXMgc3RhdGlzdGlrIHVtdW0gZGFuIGtvbnRyb2wga3VhbGl0YXMgc3RhbmRhciwgbWlzYWxueWEgdW50dWsgbWVuZW50dWthbiBvdXRsaWVyIGRhbGFtIGRhdGEgYXRhdSBtZW1hbnRhdSB2YXJpYXNpIGRhbGFtIHByb2R1a3NpLg0KLSBTaXggU2lnbWEgZGlndW5ha2FuIGRhbGFtIGluZHVzdHJpIGRlbmdhbiB0aW5na2F0IHJpc2lrbyB0aW5nZ2ksIHNlcGVydGkgcHJvZHVrc2kgbW9iaWwsIHBlc2F3YXQsIGtlc2VoYXRhbiwgZGFuIGtldWFuZ2FuLCBkaSBtYW5hIGtlc2FsYWhhbiBoYXJ1cyBzYW5nYXQga2VjaWwgYXRhdSBub2wuDQoNCiMjIDMuMyBLYXBhbiBNZW5nZ3VuYWthbiBUaHJlZSBTaWdtYT8NCi0gSmlrYSBrZXNhbGFoYW4gbWFzaWggYmlzYSBkaXRvbGVyYW5zaSBkYW4ga2l0YSBoYW55YSBpbmdpbiBtZW5kZXRla3NpIG91dGxpZXIgYXRhdSB2YXJpYXNpIGRhbGFtIHByb3Nlcy4NCi0gSmlrYSBkaWd1bmFrYW4gdW50dWsga29udHJvbCBrdWFsaXRhcyBkYXNhciwgc2VwZXJ0aSBwZW1lcmlrc2FhbiBiYXJhbmcgZGFsYW0gcGFicmlrIHlhbmcgdGlkYWsgbWVtZXJsdWthbiBwcmVzaXNpIGVrc3RyZW0uDQotIEppa2EgaW5naW4gbWVsYWt1a2FuIGFuYWxpc2lzIGRhdGEgY2VwYXQgdW50dWsgbWVsaWhhdCBkaXN0cmlidXNpIG5vcm1hbCBhdGF1IG91dGxpZXIgZGFsYW0gZGF0YXNldC4NCg0K4pyFICoqQ29udG9oOioqDQotIE1lbmdpZGVudGlmaWthc2kgZGF0YSB5YW5nIHRpZGFrIG5vcm1hbCBkYWxhbSBkaXN0cmlidXNpIG5pbGFpIG1haGFzaXN3YS4NCi0gTWVtYW50YXUga3VhbGl0YXMgcHJvZHVrc2kgZGFsYW0gaW5kdXN0cmkgbWFrYW5hbiB5YW5nIG1hc2loIG1lbWlsaWtpIHNlZGlraXQgdG9sZXJhbnNpIGtlc2FsYWhhbi4NCg0KIyMgMy40IEthcGFuIE1lbmdndW5ha2FuIFNpeCBTaWdtYT8NCi0gSmlrYSBrZXNhbGFoYW4gaGFydXMgYmVuYXItYmVuYXIgbWluaW1hbCBkYW4gYmVycGVuZ2FydWggYmVzYXIgdGVyaGFkYXAga2VzZWxhbWF0YW4gYXRhdSBiaWF5YSBwcm9kdWtzaS4NCi0gSmlrYSBpbmdpbiBtZW5pbmdrYXRrYW4gZWZpc2llbnNpIGJpc25pcyBzZWNhcmEgZHJhc3RpcyBkZW5nYW4gbWVuZ3VyYW5naSBjYWNhdCBzZW1pbmltYWwgbXVuZ2tpbi4NCi0gSmlrYSBiZWtlcmphIGRhbGFtIGluZHVzdHJpIGRlbmdhbiBwZXJzeWFyYXRhbiBrZWFtYW5hbiB0aW5nZ2kgKHBlbmVyYmFuZ2FuLCBmYXJtYXNpLCBvdG9tb3RpZiwgZGxsLikuDQoNCuKchSAqKkNvbnRvaDoqKg0KLSBQcm9kdWtzaSBwZXNhd2F0IHRlcmJhbmcgKGthcmVuYSBrZXNhbGFoYW4ga2VjaWwgYmlzYSBtZW55ZWJhYmthbiBrZWNlbGFrYWFuKS4NCi0gU2lzdGVtIHBlcmJhbmthbiAmIGtldWFuZ2FuICh1bnR1ayBtZW5naGluZGFyaSBrZXNhbGFoYW4gdHJhbnNha3NpKS4NCi0gU2VrdG9yIG1lZGlzICh1bnR1ayBtZW5ndXJhbmdpIGtlc2FsYWhhbiBkYWxhbSBwZW1iZXJpYW4gb2JhdCBhdGF1IG9wZXJhc2kgYmVkYWgpLg0KDQojIyAzLjUgS2VzaW1wdWxhbg0KLSBHdW5ha2FuICoqVGhyZWUgU2lnbWEqKiBqaWthIG1hc2loIGFkYSB0b2xlcmFuc2kga2VzYWxhaGFuIGRhbiBmb2t1c255YSBhZGFsYWggZGV0ZWtzaSBhbm9tYWxpIGF0YXUga29udHJvbCBrdWFsaXRhcyBkYXNhci4NCi0gR3VuYWthbiAqKlNpeCBTaWdtYSoqIGppa2Ega2VzYWxhaGFuIGhhcnVzIGhhbXBpciBub2wsIHRlcnV0YW1hIGRhbGFtIGluZHVzdHJpIGtyaXRpcyBzZXBlcnRpIHBlbmVyYmFuZ2FuLCBrZXNlaGF0YW4sIGRhbiBrZXVhbmdhbi4NCg0KIyBaLVNjb3JlDQoNCiMjIDQuMSBBcGEgSXR1IFotU2NvcmU/DQoNClotc2NvcmUsIGF0YXUgZGlzZWJ1dCBqdWdhIHN0YW5kYXJkIHNjb3JlLCBhZGFsYWggbmlsYWkgeWFuZyBtZW51bmp1a2thbiBzZWJlcmFwYSBqYXVoIHN1YXR1IGRhdGEgYmVyYWRhIGRhcmkgcmF0YS1yYXRhIGRhbGFtIHNhdHVhbiBzdGFuZGFyIGRldmlhc2kuIFotc2NvcmUgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOg0KDQokJCBaID0gXGZyYWN7WCAtIFxtdX17XHNpZ21hfSAkJA0KDQpkaSBtYW5hOg0KDQotICRYJCA9IG5pbGFpIGRhdGEgeWFuZyBpbmdpbiBkaWFuYWxpc2lzICANCi0gJFxtdSQgPSByYXRhLXJhdGEgcG9wdWxhc2kgIA0KLSAkXHNpZ21hJCA9IHN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSAgDQoNClotc2NvcmUgbWVudW5qdWtrYW4gYXBha2FoIHN1YXR1IGRhdGEgbGViaWggdGluZ2dpIGF0YXUgbGViaWggcmVuZGFoIGRhcmkgcmF0YS1yYXRhIGRhbiBzZWphdWggbWFuYSBwZXJiZWRhYW5ueWEgZGFsYW0gc2F0dWFuIHN0YW5kYXIgZGV2aWFzaS4NCg0KIyMgNC4yIEthcGFuIE1lbmdndW5ha2FuIFotU2NvcmU/DQoNCiMjIyAxLiBNZW5kZXRla3NpIE91dGxpZXINCk5pbGFpIGRlbmdhbiBaLXNjb3JlIHlhbmcgc2FuZ2F0IGJlc2FyIChiaWFzYW55YSBkaSBhdGFzIDMgYXRhdSBkaSBiYXdhaCAtMykgZGFwYXQgZGlhbmdnYXAgc2ViYWdhaSBvdXRsaWVyIGthcmVuYSBqYXVoIGRhcmkgcmF0YS1yYXRhLg0KDQojIyMgMi4gU3RhbmRhcmlzYXNpIERhdGENCkRhbGFtIGFuYWxpc2lzIGRhdGEgYXRhdSBwZW1iZWxhamFyYW4gbWVzaW4gKG1hY2hpbmUgbGVhcm5pbmcpLCBaLXNjb3JlIGRpZ3VuYWthbiB1bnR1ayBtZW5vcm1hbGthbiBkYXRhIHNlaGluZ2dhIG1lbWlsaWtpIGRpc3RyaWJ1c2kgZGVuZ2FuIHJhdGEtcmF0YSAwIGRhbiBzdGFuZGFyIGRldmlhc2kgMS4NCg0KIyMjIDMuIERpc3RyaWJ1c2kgTm9ybWFsIGRhbiBQcm9iYWJpbGl0YXMNCkRhbGFtIHN0YXRpc3RpayBpbmZlcmVuc2lhbCwgWi1zY29yZSBkaWd1bmFrYW4gdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgZGFsYW0gZGlzdHJpYnVzaSBub3JtYWwsIHNlcGVydGkgZGFsYW0gWi10ZXN0IGF0YXUgdGFiZWwgZGlzdHJpYnVzaSBub3JtYWwuDQoNCiMjIyA0LiBQZXJiYW5kaW5nYW4gQW50YXIgRGF0YXNldA0KS2V0aWthIGluZ2luIG1lbWJhbmRpbmdrYW4gbmlsYWkgZGFyaSBkdWEgZGF0YXNldCB5YW5nIG1lbWlsaWtpIHNrYWxhIGF0YXUgdW5pdCBiZXJiZWRhLCBaLXNjb3JlIG1lbWJhbnR1IG1lbnlhbWFrYW4gc2thbGEgYWdhciBsZWJpaCBtdWRhaCBkaWJhbmRpbmdrYW4uDQoNCiMjIyA1LiBTdGF0aXN0aWsgZGFsYW0gS2V1YW5nYW4NCkRhbGFtIGFuYWxpc2lzIHJpc2lrbyBrZXVhbmdhbiwgWi1zY29yZSBkaWd1bmFrYW4gdW50dWsgbWVuaWxhaSBrZW11bmdraW5hbiBrZWJhbmdrcnV0YW4gc3VhdHUgcGVydXNhaGFhbiAoQWx0bWFuIFotc2NvcmUpLg0KDQojIFQtU2NvcmUNCg0KIyMgNS4xIEFwYSBJdHUgVC1TY29yZT8NClQtc2NvcmUgKGp1Z2EgZGlzZWJ1dCB0LXZhbHVlIGF0YXUgU3R1ZGVudCdzIHQtc2NvcmUpIGFkYWxhaCBuaWxhaSB5YW5nIGRpZ3VuYWthbiBkYWxhbSB1amkgc3RhdGlzdGlrIHVudHVrIG1lbmVudHVrYW4gc2ViZXJhcGEgamF1aCBzdWF0dSBzYW1wZWwgYmVyYmVkYSBkYXJpIHJhdGEtcmF0YSBwb3B1bGFzaSwgdGVydXRhbWEga2V0aWthIHVrdXJhbiBzYW1wZWwga2VjaWwgJCggbiA8IDMwICQpIGRhbiBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgdGlkYWsgZGlrZXRhaHVpLiBULXNjb3JlIGRpaGl0dW5nIGRlbmdhbiBydW11czoNCg0KJCQNClQgPSBcZnJhY3tYIC0gXG11fXtcZnJhY3tzfSB7XHNxcnR7bn19fQ0KJCQNCg0KZGkgbWFuYToNCg0KLSAkWCQgPSByYXRhLXJhdGEgc2FtcGVsICANCi0gJFxtdSQgPSByYXRhLXJhdGEgcG9wdWxhc2kgIA0KLSAkcyQgPSBzdGFuZGFyIGRldmlhc2kgc2FtcGVsICANCi0gJG4kID0gdWt1cmFuIHNhbXBlbCAgDQoNClQtc2NvcmUgbWlyaXAgZGVuZ2FuIFotc2NvcmUsIHRldGFwaSBkaWd1bmFrYW4gZGFsYW0ga29uZGlzaSBkaSBtYW5hIHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aSBzZWNhcmEgcGFzdGkgZGFuIHVrdXJhbiBzYW1wZWwgcmVsYXRpZiBrZWNpbC4NCg0KIyMgNS4yIEthcGFuIE1lbmdndW5ha2FuIFQtU2NvcmU/DQpULXNjb3JlIGRpZ3VuYWthbiBkYWxhbSBiZXJiYWdhaSBzaXR1YXNpLCB0ZXJ1dGFtYSBkYWxhbSBzdGF0aXN0aWsgaW5mZXJlbnNpYWwsIHNlcGVydGk6DQoNCiMjIyAxLiBVamkgdCAoVC1UZXN0KSB1bnR1ayBQZXJiYW5kaW5nYW4gTWVhbg0KRGlndW5ha2FuIHVudHVrIG1lbWJhbmRpbmdrYW4gcmF0YS1yYXRhIGFudGFyYSBkdWEga2Vsb21wb2ssIG1pc2FsbnlhOg0KDQotICoqT25lLXNhbXBsZSB0LXRlc3QqKjogbWVtYmFuZGluZ2thbiByYXRhLXJhdGEgc2FtcGVsIGRlbmdhbiBuaWxhaSB0ZXJ0ZW50dS4NCi0gKipJbmRlcGVuZGVudCB0LXRlc3QqKjogbWVtYmFuZGluZ2thbiBkdWEga2Vsb21wb2sgeWFuZyB0aWRhayBiZXJodWJ1bmdhbiAobWlzYWxueWEsIHNrb3IgdWppYW4gYW50YXJhIGR1YSBrZWxhcykuDQotICoqUGFpcmVkIHQtdGVzdCoqOiBtZW1iYW5kaW5na2FuIGR1YSBrZWxvbXBvayB5YW5nIGJlcmh1YnVuZ2FuIChtaXNhbG55YSwgc2ViZWx1bSBkYW4gc2VzdWRhaCBzdWF0dSBwZXJsYWt1YW4pLg0KDQojIyMgMi4gS2V0aWthIFN0YW5kYXIgRGV2aWFzaSBQb3B1bGFzaSBUaWRhayBEaWtldGFodWkNCkppa2Egc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpICQoXHNpZ21hJCkgdGlkYWsgZGlrZXRhaHVpLCBtYWthIGtpdGEgbWVuZ2d1bmFrYW4gc3RhbmRhciBkZXZpYXNpIHNhbXBlbCAkKHMkKSBkYW4gZGlzdHJpYnVzaSB0LVN0dWRlbnQgdW50dWsgbWVuZ2VzdGltYXNpIG5pbGFpIHlhbmcgZGloYXJhcGthbi4NCg0KIyMjIDMuIFNhbXBlbCBLZWNpbCAobiA8IDMwKQ0KSmlrYSB1a3VyYW4gc2FtcGVsIGxlYmloIGtlY2lsIGRhcmkgMzAsIGRpc3RyaWJ1c2kgdCBsZWJpaCBzZXN1YWkgZGFyaXBhZGEgZGlzdHJpYnVzaSBub3JtYWwga2FyZW5hIGxlYmloIG1lbXBlcmhpdHVuZ2thbiB2YXJpYWJpbGl0YXMgc2FtcGVsLg0KDQojIyMgNC4gQW5hbGlzaXMgSW5mZXJlbnNpYWwgZGFsYW0gUGVuZWxpdGlhbg0KVC1zY29yZSBkaWd1bmFrYW4gZGFsYW0gcGVuZ3VqaWFuIGhpcG90ZXNpcyB1bnR1ayBtZW5lbnR1a2FuIGFwYWthaCBhZGEgcGVyYmVkYWFuIHlhbmcgc2lnbmlmaWthbiBkYWxhbSBkYXRhLCB0ZXJ1dGFtYSBkYWxhbSBwZW5lbGl0aWFuIGVrc3BlcmltZW50YWwgZGFuIHNvc2lhbC4NCg0KIyBaLVNjb3JlIHZzIFQtU2NvcmUNCg0KIyMgNi4xIFBlcmJlZGFhbiBaLVNjb3JlIGRhbiBULVNjb3JlDQoNCnwgQXNwZWsgfCBaLVNjb3JlIHwgVC1TY29yZSB8DQp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18DQp8IERlZmluaXNpIHwgTWVuZ3VrdXIgc2ViZXJhcGEgamF1aCBzdWF0dSBuaWxhaSBkYXJpIHJhdGEtcmF0YSBkYWxhbSBzYXR1YW4gc3RhbmRhciBkZXZpYXNpLiB8IERpZ3VuYWthbiBkYWxhbSBzdGF0aXN0aWsgaW5mZXJlbnNpYWwgdW50dWsgbWVtYmFuZGluZ2thbiByYXRhLXJhdGEgc2FtcGVsIHRlcmhhZGFwIHBvcHVsYXNpLCB0ZXJ1dGFtYSBqaWthIHVrdXJhbiBzYW1wZWwga2VjaWwuIHwNCnwgS2FwYW4gRGlndW5ha2FuIHwgSmlrYSB1a3VyYW4gc2FtcGVsIGJlc2FyICQo8J2Rm+KJpSAzMCQpIGRhbiBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgZGlrZXRhaHVpLiB8IEppa2EgdWt1cmFuIHNhbXBlbCBrZWNpbCAkKPCdkZs8IDMwJCkgYXRhdSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgdGlkYWsgZGlrZXRhaHVpLiB8DQp8IERpc3RyaWJ1c2kgeWFuZyBEaWd1bmFrYW4gfCBEaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyLiB8IERpc3RyaWJ1c2kgdC1TdHVkZW50LCB5YW5nIG1lbWlsaWtpIGVrb3IgbGViaWggcGFuamFuZyBkaWJhbmRpbmdrYW4gZGlzdHJpYnVzaSBub3JtYWwgKGthcmVuYSBsZWJpaCBzZW5zaXRpZiB0ZXJoYWRhcCBzYW1wZWwga2VjaWwpLiB8DQp8IFJ1bXVzIHwgJCQgWiA9IFxmcmFje1ggLSBcbXV9e1xzaWdtYX0gJCQgfCAgJCQgVCA9IFxmcmFje1ggLSBcbXV9e1xmcmFje3N9IHtcc3FydHtufX19ICQkIHwNCnwgS2V0ZXJnYW50dW5nYW4gdGVyaGFkYXAgVWt1cmFuIFNhbXBlbCB8IFRpZGFrIHRlcmdhbnR1bmcgcGFkYSB1a3VyYW4gc2FtcGVsIHNlbGFtYSBkaXN0cmlidXNpIG1lbmRla2F0aSBub3JtYWwuIHwgIFNhbmdhdCBiZXJnYW50dW5nIHBhZGEgdWt1cmFuIHNhbXBlbDsgc2VtYWtpbiBrZWNpbCBzYW1wZWwsIHNlbWFraW4gYmVzYXIgcGVuZ2FydWhueWEgcGFkYSBkaXN0cmlidXNpIHQuIHwNCnwgQXBsaWthc2kgfCAtIE1lbmVudHVrYW4gcHJvYmFiaWxpdGFzIGRhbGFtIGRpc3RyaWJ1c2kgbm9ybWFsLiB8IC0gVWppLXQgKG9uZS1zYW1wbGUsIGluZGVwZW5kZW50LCBwYWlyZWQpLiB8DQp8IHwgLSBNZW5kZXRla3NpIG91dGxpZXIuIHwgLSBVamkgaGlwb3Rlc2lzIHNhYXQgc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aS4gfA0KfCB8IC0gTm9ybWFsaXNhc2kgZGF0YS4gfCAtIEFuYWxpc2lzIHN0YXRpc3RpayBpbmZlcmVuc2lhbCB1bnR1ayBzYW1wZWwga2VjaWwuIHwNCg0KIyMgNi4yIEtlc2ltcHVsYW4NCi0gR3VuYWthbiAqKlotc2NvcmUqKiBqaWthIG1lbWlsaWtpIGRhdGEgeWFuZyBjdWt1cCBiZXNhciBkYW4gc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpIGRpa2V0YWh1aS4gDQotIEd1bmFrYW4gKipULXNjb3JlKiogamlrYSB1a3VyYW4gc2FtcGVsIGtlY2lsICgqbiogPCAzMCkgYXRhdSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgdGlkYWsgZGlrZXRhaHVpLg0KDQo=