
1. 3σ vs. 6σ

Gambar ini menunjukkan perbandingan antara 3 Sigma dan 6 Sigma dalam
distribusi normal. 3 Sigma mencakup 99.73% data, sementara 6 Sigma
mencakup 99.9999% data, yang berarti variasi atau kesalahan dalam proses
jauh lebih sedikit. Kurva 6 Sigma lebih ramping dan tinggi, menandakan
proses yang lebih presisi dan konsisten, sedangkan 3 Sigma lebih lebar,
menunjukkan adanya lebih banyak variasi dan potensi cacat yang lebih
tinggi. Semakin tinggi tingkat Sigma, semakin kecil kemungkinan
kesalahan dalam suatu sistem atau produksi.Untuk memahami keduanya lebih
lanjut mari pahami poin-poin berikut ini:
1.1. Konsep Dasar: Apa Itu Sigma?
Sebelum masuk ke 3 Sigma(3σ) dan 6 Sigma(6σ), harus paham dulu apa
itu Sigma (σ) dalam statistik. Sigma adalah
standar deviasi, yang menunjukkan seberapa tersebar
data dalam suatu proses atau sistem.
Bayangkan kamu punya 100 siswa dalam satu kelas, dan
rata-rata tinggi badan mereka adalah 170 cm. Kalau
semua siswa punya tinggi 169-171 cm, berarti perbedaan
tinggi mereka kecil (standar deviasi kecil). Tapi kalau ada yang
tingginya 150 cm dan ada yang 190 cm,
berarti data tersebar lebih luas (standar deviasi besar).
Semakin kecil standar deviasi, semakin rapat data ke
rata-rata, artinya kualitas proses lebih stabil.
1.2. Hubungan Sigma dengan Distribusi Normal
Distribusi normal adalah model statistik yang menggambarkan
bagaimana data tersebar. Kalau kita buat grafiknya,
bentuknya seperti kurva lonceng (bell curve), di mana
sebagian besar data berada di sekitar rata-rata, dan semakin jauh dari
rata-rata, semakin jarang data tersebut muncul.
Pada distribusi normal:
- 1 Sigma (±1σ): 68.27% data berada dalam 1 standar
deviasi dari rata-rata.
- 2 Sigma (±2σ): 95.45% data berada dalam 2 standar
deviasi dari rata-rata.
- 3 Sigma (±3σ): 99.73% data berada dalam 3 standar
deviasi dari rata-rata.
- 6 Sigma (±6σ): 99.99966% data berada dalam 6 standar
deviasi dari rata-rata.
Artinya, semakin besar jumlah Sigma, semakin kecil
kemungkinan ada kesalahan atau penyimpangan dalam proses produksi atau
layanan.
2.3. Apa Itu 3 Sigma(3σ)?
Pengertian
3 Sigma adalah pendekatan yang memastikan bahwa
99.73% dari semua hasil berada dalam batas yang bisa
diterima, sementara hanya 0.27% kemungkinan
kesalahan. Dalam 1 juta produk, ada 2.700 produk yang
gagal atau cacat.
Kelebihan dan Kekurangan 3 Sigma
✅ Lebih mudah diterapkan di berbagai industri
karena tidak terlalu ketat.
✅ Biaya produksi lebih rendah, karena masih ada
toleransi untuk kesalahan.
❌ Masih ada kesalahan, meskipun dalam jumlah
kecil.
❌ Tidak cocok untuk industri yang butuh presisi tinggi
seperti kesehatan atau penerbangan.
Contoh Penggunaan 3 Sigma
Misalkan ada pabrik produksi botol plastik yang
membuat 1 juta botol per bulan. Jika mereka menggunakan
3 Sigma, maka:
- 99.73% botol akan sempurna.
- 0.27% atau 2.700 botol per bulan akan cacat (misalnya bocor
atau bentuknya jelek).
Jika 2.700 botol cacat masih bisa didaur ulang atau diperbaiki, maka
3 Sigma sudah cukup.
1.4. Apa Itu 6 Sigma(6σ)?
Pengertian
6 Sigma adalah metode yang lebih ketat dibandingkan
3 Sigma. Dengan 6 Sigma, hanya ada 3,4 kesalahan per 1 juta
produk atau peluang (99.99966% sukses).
Artinya, jika kamu punya pabrik yang menghasilkan 1 juta
botol plastik, hanya 3 atau 4 botol yang
cacat. Ini adalah tingkat kesempurnaan yang hampir 100%!
Kelebihan dan Kekurangan 6 Sigma
✅ Kesalahan hampir nol, sangat cocok untuk industri
yang butuh presisi tinggi.
✅ Mengurangi limba h dan meningkatkan efisiensi
produksi.
❌ Butuh investasi besar, baik dalam pelatihan, mesin,
maupun sistem kontrol kualitas.
❌ Sulit diterapkan di industri yang masih bisa menerima
kesalahan.
Contoh Penggunaan 6 Sigma
Bayangkan pabrik produksi botol plastik yang sama,
tetapi kali ini mereka ingin memastikan hampir semua botol
sempurna. Dengan 6 Sigma:
- Dari 1 juta botol, hanya 3 atau 4 botol yang
cacat.
- Hampir tidak ada produk yang harus diperbaiki atau dibuang.
6 Sigma lebih cocok digunakan jika botol plastik ini akan digunakan
untuk keperluan medis atau farmasi, di mana kesalahan
bisa berakibat fatal.
1.5. Kapan Harus Pakai 3 Sigma(3σ) & 6
Sigma(6σ)?
Jumlah Produk yang Gagal |
2.700 per 1 juta |
3,4 per 1 juta |
Persentase Kualitas |
99.73% benar |
99.99966% benar |
Kapan Digunakan? |
Jika sedikit kesalahan masih bisa diterima |
Jika kesalahan harus mendekati nol |
Contoh Industri |
Restoran cepat saji, pakaian, peralatan rumah tangga |
Kesehatan, penerbangan, semikonduktor, farmasi |
Contoh Nyata di Dunia Nyata
- Restoran McDonald’s: Bisa menggunakan 3
Sigma, karena jika ada 3 dari 1.000 burger yang sedikit gosong,
pelanggan masih bisa menerimanya.
- Boeing (Industri Penerbangan): Harus menggunakan
6 Sigma, karena jika ada 3 dari 1.000 pesawat mengalami
kegagalan mesin, akibatnya bisa fatal.
- Pabrik iPhone (Apple): Mereka harus mendekati
6 Sigma, karena kalau 3 dari 1.000 iPhone mengalami
layar mati, itu akan merusak reputasi perusahaan.
1.6. Kesimpulan Akhir 3 Sigma(3σ) vs 6
Sigma(6σ)
- 3 Sigma cocok untuk industri yang bisa menerima sedikit
kesalahan, seperti produksi makanan, pakaian, atau produk rumah
tangga.
- 6 Sigma cocok untuk industri yang butuh presisi
tinggi, seperti penerbangan, farmasi, dan teknologi.
- Distribusi normal membantu memahami bagaimana data tersebar,
dan Sigma digunakan untuk mengontrol seberapa sering kesalahan bisa
terjadi.
Jadi, kalo bekerja di industri yang masih bisa menerima
sedikit cacat, pakai 3 Sigma. Tapi kalau industri tidak
bisa mentoleransi kesalahan sama sekali, pakai 6 Sigma.
2. Z-Score vs. T-Score

Gambar ini menunjukkan perbandingan Z Score vs. T
Score. Z Score (ungu) ditampilkan dengan
grafik naik tajam, menunjukkan analisis data dengan distribusi normal
dan sampel besar. T Score (biru) memiliki grafik yang
lebih variatif, mencerminkan distribusi t-Student yang digunakan saat
data lebih sedikit atau populasi tidak diketahui. Perbedaan utama dari
gambar ini adalah Z Score lebih stabil, sedangkan
T Score lebih fleksibel untuk sampel kecil.
2.1. Konsep Dasar: Apa Itu Skor dalam
Statistik?
Dalam statistik, kita sering ingin tahu apakah suatu nilai
terlalu jauh dari rata-rata atau masih dalam batas
wajar. Untuk itu, kita menggunakan Z-Score dan T-Score
sebagai ukuran standar.
- Z-Score digunakan kalau kita tahu standar
deviasi dari populasi.
- T-Score digunakan kalau kita hanya punya
sampel kecil dan tidak tahu standar deviasi
populasi.
2.2. Hubungan Z-Score dan T-Score dengan Distribusi
Normal
Distribusi normal adalah model yang menunjukkan bagaimana data
tersebar. Dalam distribusi ini:
- Z-Score mengikuti distribusi normal
standar, di mana rata-rata = 0 dan standar deviasi = 1.
- T-Score mirip dengan Z-Score, tapi mengikuti
distribusi-t (Student’s t-distribution) yang lebih
cocok untuk sampel kecil.
Ketika sampel besar (biasanya lebih dari 30 data),
distribusi-t akan semakin mirip dengan distribusi normal standar,
sehingga Z-Score dan T-Score hampir sama.
2.3. Apa Itu Z-Score?
Pengertian
Z-Score adalah ukuran seberapa jauh suatu nilai dari
rata-rata dalam satuan standar deviasi.
Rumus Z-Score:
\[
Z = \frac{x - \mu}{\sigma}
\] di mana:
- \(x\) = nilai individu
- \(\mu\) = rata-rata populasi
- \(\sigma\) = standar deviasi
populasi
Cara Membaca Z-Score
- Z = 0 → Nilai sama dengan rata-rata.
- Z = 1 → Nilai 1 standar deviasi di atas
rata-rata.
- Z = -1 → Nilai 1 standar deviasi di bawah
rata-rata.
- Z = 2 → Nilai 2 standar deviasi di atas
rata-rata.
- Z = -2 → Nilai 2 standar deviasi di bawah
rata-rata.
Misalnya, kalau tinggi badan rata-rata mahasiswa adalah 170
cm dengan standar deviasi 5 cm, dan kamu punya teman dengan
tinggi 180 cm, maka:
\[
Z = \frac{180 - 170}{5} = \frac{10}{5} = 2
\]
Artinya, temanmu 2 standar deviasi di atas rata-rata, atau lebih tinggi
dari 97.72% mahasiswa lainnya.
Kapan Pakai Z-Score?
✅ Kalau ukuran sampel besar (lebih dari 30).
✅ Kalau standar deviasi populasi diketahui.
✅ Jika ingin melihat seberapa jauh suatu nilai dari rata-rata.
2.4. Apa Itu T-Score?
Pengertian
T-Score (atau nilai t dalam uji-t) digunakan untuk
sampel kecil (kurang dari 30) dan ketika kita
tidak tahu standar deviasi populasi.
Rumus T-Score:
\[
T = \frac{x - \bar{x}}{s / \sqrt{n}}
\] di mana:
- \(x\) = nilai individu
- \(\bar{x}\) = rata-rata sampel
- \(s\) = standar deviasi sampel
- \(n\) = ukuran sampel
T-Score mirip dengan Z-Score, tetapi karena ukuran
sampelnya kecil, ada lebih banyak variasi dalam data. Oleh karena itu,
distribusi-t lebih lebar dibanding distribusi normal
standar.
Cara Membaca T-Score
- Semakin kecil ukuran sampel, semakin besar
variasinya, sehingga nilai T lebih sensitif dibanding Z.
- Kalau ukuran sampel besar (>30), distribusi-t
hampir sama dengan distribusi normal, sehingga T-Score ≈
Z-Score.
Misalnya, kalau kamu sedang meneliti 10 siswa
tentang nilai ujian mereka, dan kamu tidak tahu standar deviasi
populasi, maka gunakan T-Score untuk melihat apakah
nilai mereka jauh dari rata-rata atau tidak.
Kapan Pakai T-Score?
✅ Kalau ukuran sampel kecil (kurang dari 30).
✅ Kalau standar deviasi populasi tidak
diketahui.
✅ Untuk uji hipotesis saat membandingkan dua kelompok data kecil.
2.5. Perbedaan Z-Score dan T-Score
Kapan Dipakai? |
Jika ukuran sampel besar (>30) |
Jika ukuran sampel kecil (<30) |
Diketahui Standar Deviasi Populasi? |
Ya |
Tidak |
Distribusi yang Digunakan |
Distribusi normal standar |
Distribusi-t (lebih lebar untuk sampel kecil) |
Keakuratan |
Lebih akurat untuk data besar |
Lebih cocok untuk data kecil yang lebih bervariasi |
2.6. Contoh Kasus: Nilai Ujian Siswa
Misalkan seorang guru ingin melihat apakah seorang siswa memiliki
nilai yang jauh berbeda dari rata-rata kelas.
Jika Pakai Z-Score:
- Populasi: Semua siswa di satu sekolah.
- Diketahui: Rata-rata nilai ujian sekolah adalah
75 dengan standar deviasi 10.
- Siswa X mendapat nilai 85.
- Z-Score = (85 - 75) / 10 = 1 → Artinya, siswa X
berada 1 standar deviasi di atas rata-rata.
Kesimpulan:
Jika sekolah memiliki banyak siswa (>30) dan kita
tahu standar deviasi populasi, pakai Z-Score.
Jika Pakai T-Score:
- Populasi: Hanya satu kelas kecil (misalnya 10
siswa).
- Tidak diketahui: Standar deviasi seluruh
sekolah.
- Siswa X mendapat nilai 85, dan rata-rata kelas
adalah 75 dengan standar deviasi
9.
- T-Score = (85 - 75) / (9/√10) = 3.33 → Artinya,
nilai siswa X jauh lebih tinggi dibanding teman-temannya.
Kesimpulan:
Karena hanya ada 10 siswa (sampel kecil) dan kita tidak
tahu standar deviasi sekolah, pakai T-Score.
2.7. Kesimpulan Akhir Z-Score vs T-Score
- Z-Score digunakan jika sampel besar dan standar deviasi
populasi diketahui.
- T-Score digunakan jika sampel kecil dan standar deviasi
populasi tidak diketahui.
- Distribusi normal digunakan untuk Z-Score, sementara
distribusi-t digunakan untuk T-Score.
- Semakin kecil ukuran sampel, semakin besar variasinya,
sehingga T-Score lebih fleksibel dibanding Z-Score.
Jadi, kalau bekerja dengan data besar yang memiliki standar
deviasi yang diketahui, pakai Z-Score. Tapi kalau datanya
kecil dan standar deviasi tidak diketahui, pakai
T-Score.
LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1ICINCnN1YnRpdGxlOiAiM8+DIHZzLiA2z4MgZGFuIFotU2NvcmUgdnMgVC1TY29yZSAtIFRla25payBzYW1wbGluZyBkYW4gc3VydmV5Ig0KYXV0aG9yOiAiT2xpdmlhIE1laWxpbmRhIERhdnRpbiBQZXNpcmVyb24iDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzIA0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIHNyYz0ibGl2aWthdGFueWEuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iRm90byBEaXJpIj4NCg0KLS0tDQoNCg0KIyAxLiAzz4MgdnMuIDbPgw0KDQoNCjxpbWcgc3JjPSJvcDEuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iM8+DIHZzLiA2z4MiPg0KDQpHYW1iYXIgaW5pIG1lbnVuanVra2FuIHBlcmJhbmRpbmdhbiBhbnRhcmEgMyBTaWdtYSBkYW4gNiBTaWdtYSBkYWxhbSBkaXN0cmlidXNpIG5vcm1hbC4gMyBTaWdtYSBtZW5jYWt1cCA5OS43MyUgZGF0YSwgc2VtZW50YXJhIDYgU2lnbWEgbWVuY2FrdXAgOTkuOTk5OSUgZGF0YSwgeWFuZyBiZXJhcnRpIHZhcmlhc2kgYXRhdSBrZXNhbGFoYW4gZGFsYW0gcHJvc2VzIGphdWggbGViaWggc2VkaWtpdC4gS3VydmEgNiBTaWdtYSBsZWJpaCByYW1waW5nIGRhbiB0aW5nZ2ksIG1lbmFuZGFrYW4gcHJvc2VzIHlhbmcgbGViaWggcHJlc2lzaSBkYW4ga29uc2lzdGVuLCBzZWRhbmdrYW4gMyBTaWdtYSBsZWJpaCBsZWJhciwgbWVudW5qdWtrYW4gYWRhbnlhIGxlYmloIGJhbnlhayB2YXJpYXNpIGRhbiBwb3RlbnNpIGNhY2F0IHlhbmcgbGViaWggdGluZ2dpLiBTZW1ha2luIHRpbmdnaSB0aW5na2F0IFNpZ21hLCBzZW1ha2luIGtlY2lsIGtlbXVuZ2tpbmFuIGtlc2FsYWhhbiBkYWxhbSBzdWF0dSBzaXN0ZW0gYXRhdSBwcm9kdWtzaS5VbnR1ayBtZW1haGFtaSBrZWR1YW55YSBsZWJpaCBsYW5qdXQgbWFyaSBwYWhhbWkgcG9pbi1wb2luIGJlcmlrdXQgaW5pOg0KDQojIyAqKjEuMS4gS29uc2VwIERhc2FyOiBBcGEgSXR1IFNpZ21hPyoqICANCg0KU2ViZWx1bSBtYXN1ayBrZSAzIFNpZ21hKDPPgykgZGFuIDYgU2lnbWEoNs+DKSwgaGFydXMgcGFoYW0gZHVsdSBhcGEgaXR1ICoqU2lnbWEgKM+DKSoqIGRhbGFtIHN0YXRpc3Rpay4gU2lnbWEgYWRhbGFoICoqc3RhbmRhciBkZXZpYXNpKiosIHlhbmcgbWVudW5qdWtrYW4gc2ViZXJhcGEgdGVyc2ViYXIgZGF0YSBkYWxhbSBzdWF0dSBwcm9zZXMgYXRhdSBzaXN0ZW0uICANCg0KQmF5YW5na2FuIGthbXUgcHVueWEgKioxMDAgc2lzd2EgZGFsYW0gc2F0dSBrZWxhcyoqLCBkYW4gcmF0YS1yYXRhIHRpbmdnaSBiYWRhbiBtZXJla2EgYWRhbGFoICoqMTcwIGNtKiouIEthbGF1IHNlbXVhIHNpc3dhIHB1bnlhIHRpbmdnaSAqKjE2OS0xNzEgY20qKiwgYmVyYXJ0aSBwZXJiZWRhYW4gdGluZ2dpIG1lcmVrYSBrZWNpbCAoc3RhbmRhciBkZXZpYXNpIGtlY2lsKS4gVGFwaSBrYWxhdSBhZGEgeWFuZyB0aW5nZ2lueWEgKioxNTAgY20qKiBkYW4gYWRhIHlhbmcgKioxOTAgY20qKiwgYmVyYXJ0aSBkYXRhIHRlcnNlYmFyIGxlYmloIGx1YXMgKHN0YW5kYXIgZGV2aWFzaSBiZXNhcikuICANCg0KKipTZW1ha2luIGtlY2lsIHN0YW5kYXIgZGV2aWFzaSwgc2VtYWtpbiByYXBhdCBkYXRhIGtlIHJhdGEtcmF0YSwgYXJ0aW55YSBrdWFsaXRhcyBwcm9zZXMgbGViaWggc3RhYmlsLioqICANCg0KLS0tDQoNCiMjICoqMS4yLiBIdWJ1bmdhbiBTaWdtYSBkZW5nYW4gRGlzdHJpYnVzaSBOb3JtYWwqKiAgDQoNCkRpc3RyaWJ1c2kgbm9ybWFsIGFkYWxhaCBtb2RlbCBzdGF0aXN0aWsgeWFuZyBtZW5nZ2FtYmFya2FuICoqYmFnYWltYW5hIGRhdGEgdGVyc2ViYXIqKi4gS2FsYXUga2l0YSBidWF0IGdyYWZpa255YSwgYmVudHVrbnlhIHNlcGVydGkgKiprdXJ2YSBsb25jZW5nKiogKGJlbGwgY3VydmUpLCBkaSBtYW5hIHNlYmFnaWFuIGJlc2FyIGRhdGEgYmVyYWRhIGRpIHNla2l0YXIgcmF0YS1yYXRhLCBkYW4gc2VtYWtpbiBqYXVoIGRhcmkgcmF0YS1yYXRhLCBzZW1ha2luIGphcmFuZyBkYXRhIHRlcnNlYnV0IG11bmN1bC4gIA0KDQpQYWRhIGRpc3RyaWJ1c2kgbm9ybWFsOiAgDQotICoqMSBTaWdtYSAowrExz4MpOioqIDY4LjI3JSBkYXRhIGJlcmFkYSBkYWxhbSAxIHN0YW5kYXIgZGV2aWFzaSBkYXJpIHJhdGEtcmF0YS4gIA0KLSAqKjIgU2lnbWEgKMKxMs+DKToqKiA5NS40NSUgZGF0YSBiZXJhZGEgZGFsYW0gMiBzdGFuZGFyIGRldmlhc2kgZGFyaSByYXRhLXJhdGEuICANCi0gKiozIFNpZ21hICjCsTPPgyk6KiogOTkuNzMlIGRhdGEgYmVyYWRhIGRhbGFtIDMgc3RhbmRhciBkZXZpYXNpIGRhcmkgcmF0YS1yYXRhLiAgDQotICoqNiBTaWdtYSAowrE2z4MpOioqIDk5Ljk5OTY2JSBkYXRhIGJlcmFkYSBkYWxhbSA2IHN0YW5kYXIgZGV2aWFzaSBkYXJpIHJhdGEtcmF0YS4gIA0KDQpBcnRpbnlhLCAqKnNlbWFraW4gYmVzYXIganVtbGFoIFNpZ21hLCBzZW1ha2luIGtlY2lsIGtlbXVuZ2tpbmFuIGFkYSBrZXNhbGFoYW4gYXRhdSBwZW55aW1wYW5nYW4gZGFsYW0gcHJvc2VzIHByb2R1a3NpIGF0YXUgbGF5YW5hbi4qKiAgDQoNCi0tLQ0KDQojIyAqKjIuMy4gQXBhIEl0dSAzIFNpZ21hKDPPgyk/KiogIA0KDQojIyMgKipQZW5nZXJ0aWFuKiogIA0KKiozIFNpZ21hKiogYWRhbGFoIHBlbmRla2F0YW4geWFuZyBtZW1hc3Rpa2FuIGJhaHdhICoqOTkuNzMlIGRhcmkgc2VtdWEgaGFzaWwgYmVyYWRhIGRhbGFtIGJhdGFzIHlhbmcgYmlzYSBkaXRlcmltYSoqLCBzZW1lbnRhcmEgaGFueWEgKiowLjI3JSBrZW11bmdraW5hbiBrZXNhbGFoYW4qKi4gRGFsYW0gMSBqdXRhIHByb2R1aywgYWRhICoqMi43MDAgcHJvZHVrIHlhbmcgZ2FnYWwgYXRhdSBjYWNhdCoqLiAgDQoNCiMjIyAqKktlbGViaWhhbiBkYW4gS2VrdXJhbmdhbiAzIFNpZ21hKiogIA0K4pyFICoqTGViaWggbXVkYWggZGl0ZXJhcGthbioqIGRpIGJlcmJhZ2FpIGluZHVzdHJpIGthcmVuYSB0aWRhayB0ZXJsYWx1IGtldGF0LiAgDQrinIUgKipCaWF5YSBwcm9kdWtzaSBsZWJpaCByZW5kYWgqKiwga2FyZW5hIG1hc2loIGFkYSB0b2xlcmFuc2kgdW50dWsga2VzYWxhaGFuLiAgDQrinYwgKipNYXNpaCBhZGEga2VzYWxhaGFuKiosIG1lc2tpcHVuIGRhbGFtIGp1bWxhaCBrZWNpbC4gIA0K4p2MICoqVGlkYWsgY29jb2sgdW50dWsgaW5kdXN0cmkgeWFuZyBidXR1aCBwcmVzaXNpIHRpbmdnaSoqIHNlcGVydGkga2VzZWhhdGFuIGF0YXUgcGVuZXJiYW5nYW4uICANCg0KIyMjICoqQ29udG9oIFBlbmdndW5hYW4gMyBTaWdtYSoqICANCk1pc2Fsa2FuIGFkYSAqKnBhYnJpayBwcm9kdWtzaSBib3RvbCBwbGFzdGlrKiogeWFuZyBtZW1idWF0ICoqMSBqdXRhIGJvdG9sIHBlciBidWxhbioqLiBKaWthIG1lcmVrYSBtZW5nZ3VuYWthbiAqKjMgU2lnbWEqKiwgbWFrYTogIA0KLSA5OS43MyUgYm90b2wgYWthbiBzZW1wdXJuYS4gIA0KLSAqKjAuMjclIGF0YXUgMi43MDAgYm90b2wgcGVyIGJ1bGFuIGFrYW4gY2FjYXQgKG1pc2FsbnlhIGJvY29yIGF0YXUgYmVudHVrbnlhIGplbGVrKS4qKiAgDQoNCkppa2EgMi43MDAgYm90b2wgY2FjYXQgbWFzaWggYmlzYSBkaWRhdXIgdWxhbmcgYXRhdSBkaXBlcmJhaWtpLCBtYWthICoqMyBTaWdtYSBzdWRhaCBjdWt1cCoqLiAgDQoNCi0tLQ0KDQojIyAqKjEuNC4gQXBhIEl0dSA2IFNpZ21hKDbPgyk/KiogIA0KDQojIyMgKipQZW5nZXJ0aWFuKiogIA0KKio2IFNpZ21hKiogYWRhbGFoIG1ldG9kZSB5YW5nIGxlYmloIGtldGF0IGRpYmFuZGluZ2thbiAzIFNpZ21hLiBEZW5nYW4gNiBTaWdtYSwgKipoYW55YSBhZGEgMyw0IGtlc2FsYWhhbiBwZXIgMSBqdXRhIHByb2R1ayBhdGF1IHBlbHVhbmcqKiAoKio5OS45OTk2NiUgc3Vrc2VzKiopLiAgDQoNCkFydGlueWEsIGppa2Ega2FtdSBwdW55YSAqKnBhYnJpayB5YW5nIG1lbmdoYXNpbGthbiAxIGp1dGEgYm90b2wgcGxhc3RpayoqLCBoYW55YSAqKjMgYXRhdSA0IGJvdG9sIHlhbmcgY2FjYXQqKi4gSW5pIGFkYWxhaCB0aW5na2F0IGtlc2VtcHVybmFhbiB5YW5nIGhhbXBpciAxMDAlISAgDQoNCiMjIyAqKktlbGViaWhhbiBkYW4gS2VrdXJhbmdhbiA2IFNpZ21hKiogIA0K4pyFICoqS2VzYWxhaGFuIGhhbXBpciBub2wqKiwgc2FuZ2F0IGNvY29rIHVudHVrIGluZHVzdHJpIHlhbmcgYnV0dWggcHJlc2lzaSB0aW5nZ2kuICANCuKchSAqKk1lbmd1cmFuZ2kgbGltYmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBkYW4gbWVuaW5na2F0a2FuIGVmaXNpZW5zaSBwcm9kdWtzaS4qKiAgDQrinYwgKipCdXR1aCBpbnZlc3Rhc2kgYmVzYXIqKiwgYmFpayBkYWxhbSBwZWxhdGloYW4sIG1lc2luLCBtYXVwdW4gc2lzdGVtIGtvbnRyb2wga3VhbGl0YXMuICANCuKdjCAqKlN1bGl0IGRpdGVyYXBrYW4gZGkgaW5kdXN0cmkgeWFuZyBtYXNpaCBiaXNhIG1lbmVyaW1hIGtlc2FsYWhhbi4qKiAgDQoNCiMjIyAqKkNvbnRvaCBQZW5nZ3VuYWFuIDYgU2lnbWEqKiAgDQpCYXlhbmdrYW4gKipwYWJyaWsgcHJvZHVrc2kgYm90b2wgcGxhc3RpayoqIHlhbmcgc2FtYSwgdGV0YXBpIGthbGkgaW5pIG1lcmVrYSBpbmdpbiBtZW1hc3Rpa2FuICoqaGFtcGlyIHNlbXVhIGJvdG9sIHNlbXB1cm5hKiouIERlbmdhbiA2IFNpZ21hOiAgDQotIERhcmkgKioxIGp1dGEgYm90b2wqKiwgaGFueWEgKiozIGF0YXUgNCBib3RvbCB5YW5nIGNhY2F0KiouICANCi0gSGFtcGlyIHRpZGFrIGFkYSBwcm9kdWsgeWFuZyBoYXJ1cyBkaXBlcmJhaWtpIGF0YXUgZGlidWFuZy4gIA0KDQo2IFNpZ21hIGxlYmloIGNvY29rIGRpZ3VuYWthbiBqaWthIGJvdG9sIHBsYXN0aWsgaW5pIGFrYW4gZGlndW5ha2FuIHVudHVrICoqa2VwZXJsdWFuIG1lZGlzIGF0YXUgZmFybWFzaSoqLCBkaSBtYW5hIGtlc2FsYWhhbiBiaXNhIGJlcmFraWJhdCBmYXRhbC4NCg0KLS0tDQoNCiMjICoqMS41LiBLYXBhbiBIYXJ1cyBQYWthaSAzIFNpZ21hKDPPgykgJiA2IFNpZ21hKDbPgyk/KiogIA0KDQp8IEZha3RvciAgfCAqKjMgU2lnbWEoM8+DKSoqIHwgKio2IFNpZ21hKDbPgykqKiB8DQp8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18DQp8ICoqSnVtbGFoIFByb2R1ayB5YW5nIEdhZ2FsKiogfCAyLjcwMCBwZXIgMSBqdXRhIHwgMyw0IHBlciAxIGp1dGEgfA0KfCAqKlBlcnNlbnRhc2UgS3VhbGl0YXMqKiB8IDk5LjczJSBiZW5hciB8IDk5Ljk5OTY2JSBiZW5hciB8DQp8ICoqS2FwYW4gRGlndW5ha2FuPyoqIHwgSmlrYSBzZWRpa2l0IGtlc2FsYWhhbiBtYXNpaCBiaXNhIGRpdGVyaW1hIHwgSmlrYSBrZXNhbGFoYW4gaGFydXMgbWVuZGVrYXRpIG5vbCB8DQp8ICoqQ29udG9oIEluZHVzdHJpKiogfCBSZXN0b3JhbiBjZXBhdCBzYWppLCBwYWthaWFuLCBwZXJhbGF0YW4gcnVtYWggdGFuZ2dhIHwgS2VzZWhhdGFuLCBwZW5lcmJhbmdhbiwgc2VtaWtvbmR1a3RvciwgZmFybWFzaSB8DQoNCiMjIyAqKkNvbnRvaCBOeWF0YSBkaSBEdW5pYSBOeWF0YSoqDQoxLiAqKlJlc3RvcmFuIE1jRG9uYWxkJ3MqKjogQmlzYSBtZW5nZ3VuYWthbiAqKjMgU2lnbWEqKiwga2FyZW5hIGppa2EgYWRhIDMgZGFyaSAxLjAwMCBidXJnZXIgeWFuZyBzZWRpa2l0IGdvc29uZywgcGVsYW5nZ2FuIG1hc2loIGJpc2EgbWVuZXJpbWFueWEuICANCjIuICoqQm9laW5nIChJbmR1c3RyaSBQZW5lcmJhbmdhbikqKjogSGFydXMgbWVuZ2d1bmFrYW4gKio2IFNpZ21hKiosIGthcmVuYSBqaWthIGFkYSAzIGRhcmkgMS4wMDAgcGVzYXdhdCBtZW5nYWxhbWkga2VnYWdhbGFuIG1lc2luLCBha2liYXRueWEgYmlzYSBmYXRhbC4gIA0KMy4gKipQYWJyaWsgaVBob25lIChBcHBsZSkqKjogTWVyZWthIGhhcnVzIG1lbmRla2F0aSAqKjYgU2lnbWEqKiwga2FyZW5hIGthbGF1IDMgZGFyaSAxLjAwMCBpUGhvbmUgbWVuZ2FsYW1pIGxheWFyIG1hdGksIGl0dSBha2FuIG1lcnVzYWsgcmVwdXRhc2kgcGVydXNhaGFhbi4gIA0KDQotLS0NCg0KIyMgKioxLjYuIEtlc2ltcHVsYW4gQWtoaXIgMyBTaWdtYSgzz4MpIHZzIDYgU2lnbWEoNs+DKSoqICANCg0KLSAqKjMgU2lnbWEgY29jb2sgdW50dWsgaW5kdXN0cmkgeWFuZyBiaXNhIG1lbmVyaW1hIHNlZGlraXQga2VzYWxhaGFuKiosIHNlcGVydGkgcHJvZHVrc2kgbWFrYW5hbiwgcGFrYWlhbiwgYXRhdSBwcm9kdWsgcnVtYWggdGFuZ2dhLiAgDQotICoqNiBTaWdtYSBjb2NvayB1bnR1ayBpbmR1c3RyaSB5YW5nIGJ1dHVoIHByZXNpc2kgdGluZ2dpKiosIHNlcGVydGkgcGVuZXJiYW5nYW4sIGZhcm1hc2ksIGRhbiB0ZWtub2xvZ2kuICANCi0gKipEaXN0cmlidXNpIG5vcm1hbCBtZW1iYW50dSBtZW1haGFtaSBiYWdhaW1hbmEgZGF0YSB0ZXJzZWJhciwgZGFuIFNpZ21hIGRpZ3VuYWthbiB1bnR1ayBtZW5nb250cm9sIHNlYmVyYXBhIHNlcmluZyBrZXNhbGFoYW4gYmlzYSB0ZXJqYWRpLioqICANCg0KSmFkaSwga2FsbyBiZWtlcmphIGRpIGluZHVzdHJpIHlhbmcgKiptYXNpaCBiaXNhIG1lbmVyaW1hIHNlZGlraXQgY2FjYXQsIHBha2FpIDMgU2lnbWEqKi4gVGFwaSBrYWxhdSBpbmR1c3RyaSAgKip0aWRhayBiaXNhIG1lbnRvbGVyYW5zaSBrZXNhbGFoYW4gc2FtYSBzZWthbGksIHBha2FpIDYgU2lnbWEqKi4gIA0KDQojIDIuIFotU2NvcmUgdnMuIFQtU2NvcmUgDQoNCjxpbWcgc3JjPSJvcDIuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iWi1TY29yZSB2cy4gVC1TY29yZSI+DQoNCkdhbWJhciBpbmkgbWVudW5qdWtrYW4gcGVyYmFuZGluZ2FuICoqWiBTY29yZSB2cy4gVCBTY29yZSoqLiAqKlogU2NvcmUqKiAodW5ndSkgZGl0YW1waWxrYW4gZGVuZ2FuIGdyYWZpayBuYWlrIHRhamFtLCBtZW51bmp1a2thbiBhbmFsaXNpcyBkYXRhIGRlbmdhbiBkaXN0cmlidXNpIG5vcm1hbCBkYW4gc2FtcGVsIGJlc2FyLiAqKlQgU2NvcmUqKiAoYmlydSkgbWVtaWxpa2kgZ3JhZmlrIHlhbmcgbGViaWggdmFyaWF0aWYsIG1lbmNlcm1pbmthbiBkaXN0cmlidXNpIHQtU3R1ZGVudCB5YW5nIGRpZ3VuYWthbiBzYWF0IGRhdGEgbGViaWggc2VkaWtpdCBhdGF1IHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aS4gUGVyYmVkYWFuIHV0YW1hIGRhcmkgZ2FtYmFyIGluaSBhZGFsYWggKipaIFNjb3JlIGxlYmloIHN0YWJpbCoqLCBzZWRhbmdrYW4gKipUIFNjb3JlIGxlYmloIGZsZWtzaWJlbCB1bnR1ayBzYW1wZWwga2VjaWwqKi4NCg0KLS0tDQoNCiMjICoqMi4xLiBLb25zZXAgRGFzYXI6IEFwYSBJdHUgU2tvciBkYWxhbSBTdGF0aXN0aWs/KiogIA0KDQpEYWxhbSBzdGF0aXN0aWssIGtpdGEgc2VyaW5nIGluZ2luIHRhaHUgYXBha2FoIHN1YXR1IG5pbGFpICoqdGVybGFsdSBqYXVoIGRhcmkgcmF0YS1yYXRhKiogYXRhdSBtYXNpaCBkYWxhbSBiYXRhcyB3YWphci4gVW50dWsgaXR1LCBraXRhIG1lbmdndW5ha2FuICoqWi1TY29yZSBkYW4gVC1TY29yZSoqIHNlYmFnYWkgdWt1cmFuIHN0YW5kYXIuICANCg0KLSAqKlotU2NvcmUqKiBkaWd1bmFrYW4ga2FsYXUga2l0YSB0YWh1ICoqc3RhbmRhciBkZXZpYXNpIGRhcmkgcG9wdWxhc2kqKi4gIA0KLSAqKlQtU2NvcmUqKiBkaWd1bmFrYW4ga2FsYXUga2l0YSBoYW55YSBwdW55YSAqKnNhbXBlbCBrZWNpbCBkYW4gdGlkYWsgdGFodSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kqKi4gIA0KDQotLS0NCg0KIyMgKioyLjIuIEh1YnVuZ2FuIFotU2NvcmUgZGFuIFQtU2NvcmUgZGVuZ2FuIERpc3RyaWJ1c2kgTm9ybWFsKiogIA0KDQpEaXN0cmlidXNpIG5vcm1hbCBhZGFsYWggbW9kZWwgeWFuZyBtZW51bmp1a2thbiBiYWdhaW1hbmEgZGF0YSB0ZXJzZWJhci4gRGFsYW0gZGlzdHJpYnVzaSBpbmk6ICANCg0KLSAqKlotU2NvcmUqKiBtZW5naWt1dGkgKipkaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyKiosIGRpIG1hbmEgcmF0YS1yYXRhID0gMCBkYW4gc3RhbmRhciBkZXZpYXNpID0gMS4gIA0KLSAqKlQtU2NvcmUqKiBtaXJpcCBkZW5nYW4gWi1TY29yZSwgdGFwaSBtZW5naWt1dGkgKipkaXN0cmlidXNpLXQgKFN0dWRlbnQncyB0LWRpc3RyaWJ1dGlvbikqKiB5YW5nIGxlYmloIGNvY29rIHVudHVrICoqc2FtcGVsIGtlY2lsKiouICANCg0KS2V0aWthIHNhbXBlbCBiZXNhciAoYmlhc2FueWEgbGViaWggZGFyaSAqKjMwIGRhdGEqKiksIGRpc3RyaWJ1c2ktdCBha2FuIHNlbWFraW4gbWlyaXAgZGVuZ2FuIGRpc3RyaWJ1c2kgbm9ybWFsIHN0YW5kYXIsIHNlaGluZ2dhICoqWi1TY29yZSBkYW4gVC1TY29yZSBoYW1waXIgc2FtYSoqLiAgDQoNCi0tLQ0KDQojIyAqKjIuMy4gQXBhIEl0dSBaLVNjb3JlPyoqICANCg0KIyMjICoqUGVuZ2VydGlhbioqICANCioqWi1TY29yZSoqIGFkYWxhaCB1a3VyYW4gc2ViZXJhcGEgamF1aCBzdWF0dSBuaWxhaSBkYXJpIHJhdGEtcmF0YSBkYWxhbSBzYXR1YW4gc3RhbmRhciBkZXZpYXNpLiAgDQoNCioqUnVtdXMgWi1TY29yZToqKiAgDQpcWw0KWiA9IFxmcmFje3ggLSBcbXV9e1xzaWdtYX0NClxdDQpkaSBtYW5hOiAgDQotIFwoIHggXCkgPSBuaWxhaSBpbmRpdmlkdSAgDQotIFwoIFxtdSBcKSA9IHJhdGEtcmF0YSBwb3B1bGFzaSAgDQotIFwoIFxzaWdtYSBcKSA9IHN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSAgDQoNCiMjIyAqKkNhcmEgTWVtYmFjYSBaLVNjb3JlKiogIA0KLSAqKlogPSAwKiog4oaSIE5pbGFpIHNhbWEgZGVuZ2FuIHJhdGEtcmF0YS4gIA0KLSAqKlogPSAxKiog4oaSIE5pbGFpICoqMSBzdGFuZGFyIGRldmlhc2kgZGkgYXRhcyByYXRhLXJhdGEqKi4gIA0KLSAqKlogPSAtMSoqIOKGkiBOaWxhaSAqKjEgc3RhbmRhciBkZXZpYXNpIGRpIGJhd2FoIHJhdGEtcmF0YSoqLiAgDQotICoqWiA9IDIqKiDihpIgTmlsYWkgKioyIHN0YW5kYXIgZGV2aWFzaSBkaSBhdGFzIHJhdGEtcmF0YSoqLiAgDQotICoqWiA9IC0yKiog4oaSIE5pbGFpICoqMiBzdGFuZGFyIGRldmlhc2kgZGkgYmF3YWggcmF0YS1yYXRhKiouICANCg0KTWlzYWxueWEsIGthbGF1ICoqdGluZ2dpIGJhZGFuIHJhdGEtcmF0YSBtYWhhc2lzd2EgYWRhbGFoIDE3MCBjbSBkZW5nYW4gc3RhbmRhciBkZXZpYXNpIDUgY20qKiwgZGFuIGthbXUgcHVueWEgdGVtYW4gZGVuZ2FuIHRpbmdnaSAqKjE4MCBjbSoqLCBtYWthOiAgDQpcWw0KWiA9IFxmcmFjezE4MCAtIDE3MH17NX0gPSBcZnJhY3sxMH17NX0gPSAyDQpcXSAgDQpBcnRpbnlhLCB0ZW1hbm11IDIgc3RhbmRhciBkZXZpYXNpIGRpIGF0YXMgcmF0YS1yYXRhLCBhdGF1IGxlYmloIHRpbmdnaSBkYXJpICoqOTcuNzIlIG1haGFzaXN3YSBsYWlubnlhKiouICANCg0KIyMjICoqS2FwYW4gUGFrYWkgWi1TY29yZT8qKiAgDQrinIUgS2FsYXUgKip1a3VyYW4gc2FtcGVsIGJlc2FyKiogKGxlYmloIGRhcmkgMzApLiAgDQrinIUgS2FsYXUgKipzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgZGlrZXRhaHVpKiouICANCuKchSBKaWthIGluZ2luIG1lbGloYXQgc2ViZXJhcGEgamF1aCBzdWF0dSBuaWxhaSBkYXJpIHJhdGEtcmF0YS4gIA0KDQotLS0NCg0KIyMgKioyLjQuIEFwYSBJdHUgVC1TY29yZT8qKiAgDQoNCiMjIyAqKlBlbmdlcnRpYW4qKiAgDQoqKlQtU2NvcmUgKGF0YXUgbmlsYWkgdCBkYWxhbSB1amktdCkqKiBkaWd1bmFrYW4gdW50dWsgKipzYW1wZWwga2VjaWwgKGt1cmFuZyBkYXJpIDMwKSoqIGRhbiBrZXRpa2Ega2l0YSAqKnRpZGFrIHRhaHUgc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpKiouICANCg0KKipSdW11cyBULVNjb3JlOioqICANClxbDQpUID0gXGZyYWN7eCAtIFxiYXJ7eH19e3MgLyBcc3FydHtufX0NClxdDQpkaSBtYW5hOiAgDQotIFwoIHggXCkgPSBuaWxhaSBpbmRpdmlkdSAgDQotIFwoIFxiYXJ7eH0gXCkgPSByYXRhLXJhdGEgc2FtcGVsICANCi0gXCggcyBcKSA9IHN0YW5kYXIgZGV2aWFzaSBzYW1wZWwgIA0KLSBcKCBuIFwpID0gdWt1cmFuIHNhbXBlbCAgDQoNCioqVC1TY29yZSBtaXJpcCBkZW5nYW4gWi1TY29yZSoqLCB0ZXRhcGkga2FyZW5hIHVrdXJhbiBzYW1wZWxueWEga2VjaWwsIGFkYSBsZWJpaCBiYW55YWsgdmFyaWFzaSBkYWxhbSBkYXRhLiBPbGVoIGthcmVuYSBpdHUsICoqZGlzdHJpYnVzaS10IGxlYmloIGxlYmFyIGRpYmFuZGluZyBkaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyKiouICANCg0KIyMjICoqQ2FyYSBNZW1iYWNhIFQtU2NvcmUqKiAgDQotICoqU2VtYWtpbiBrZWNpbCB1a3VyYW4gc2FtcGVsLCBzZW1ha2luIGJlc2FyIHZhcmlhc2lueWEqKiwgc2VoaW5nZ2EgbmlsYWkgVCBsZWJpaCBzZW5zaXRpZiBkaWJhbmRpbmcgWi4gIA0KLSBLYWxhdSB1a3VyYW4gc2FtcGVsICoqYmVzYXIgKD4zMCkqKiwgZGlzdHJpYnVzaS10IGhhbXBpciBzYW1hIGRlbmdhbiBkaXN0cmlidXNpIG5vcm1hbCwgc2VoaW5nZ2EgKipULVNjb3JlIOKJiCBaLVNjb3JlKiouICANCg0KTWlzYWxueWEsIGthbGF1IGthbXUgc2VkYW5nIG1lbmVsaXRpICoqMTAgc2lzd2EqKiB0ZW50YW5nIG5pbGFpIHVqaWFuIG1lcmVrYSwgZGFuIGthbXUgdGlkYWsgdGFodSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2ksIG1ha2EgKipndW5ha2FuIFQtU2NvcmUqKiB1bnR1ayBtZWxpaGF0IGFwYWthaCBuaWxhaSBtZXJla2EgamF1aCBkYXJpIHJhdGEtcmF0YSBhdGF1IHRpZGFrLiAgDQoNCiMjIyAqKkthcGFuIFBha2FpIFQtU2NvcmU/KiogIA0K4pyFIEthbGF1ICoqdWt1cmFuIHNhbXBlbCBrZWNpbCoqIChrdXJhbmcgZGFyaSAzMCkuICANCuKchSBLYWxhdSAqKnN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSB0aWRhayBkaWtldGFodWkqKi4gIA0K4pyFIFVudHVrIHVqaSBoaXBvdGVzaXMgc2FhdCBtZW1iYW5kaW5na2FuIGR1YSBrZWxvbXBvayBkYXRhIGtlY2lsLiAgDQoNCi0tLQ0KDQojIyAqKjIuNS4gUGVyYmVkYWFuIFotU2NvcmUgZGFuIFQtU2NvcmUqKiAgDQoNCnwgRmFrdG9yICB8ICoqWi1TY29yZSoqIHwgKipULVNjb3JlKiogfA0KfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfA0KfCAqKkthcGFuIERpcGFrYWk/KiogfCBKaWthIHVrdXJhbiBzYW1wZWwgYmVzYXIgKD4zMCkgfCBKaWthIHVrdXJhbiBzYW1wZWwga2VjaWwgKDwzMCkgfA0KfCAqKkRpa2V0YWh1aSBTdGFuZGFyIERldmlhc2kgUG9wdWxhc2k/KiogfCBZYSB8IFRpZGFrIHwNCnwgKipEaXN0cmlidXNpIHlhbmcgRGlndW5ha2FuKiogfCBEaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyIHwgRGlzdHJpYnVzaS10IChsZWJpaCBsZWJhciB1bnR1ayBzYW1wZWwga2VjaWwpIHwNCnwgKipLZWFrdXJhdGFuKiogfCBMZWJpaCBha3VyYXQgdW50dWsgZGF0YSBiZXNhciB8IExlYmloIGNvY29rIHVudHVrIGRhdGEga2VjaWwgeWFuZyBsZWJpaCBiZXJ2YXJpYXNpIHwNCg0KLS0tDQoNCiMjICoqMi42LiBDb250b2ggS2FzdXM6IE5pbGFpIFVqaWFuIFNpc3dhKiogIA0KDQpNaXNhbGthbiBzZW9yYW5nIGd1cnUgaW5naW4gbWVsaWhhdCBhcGFrYWggc2VvcmFuZyBzaXN3YSBtZW1pbGlraSBuaWxhaSB5YW5nIGphdWggYmVyYmVkYSBkYXJpIHJhdGEtcmF0YSBrZWxhcy4gIA0KDQojIyMgKipKaWthIFBha2FpIFotU2NvcmU6KiogIA0KLSAqKlBvcHVsYXNpKio6IFNlbXVhIHNpc3dhIGRpIHNhdHUgc2Vrb2xhaC4gIA0KLSAqKkRpa2V0YWh1aSoqOiBSYXRhLXJhdGEgbmlsYWkgdWppYW4gc2Vrb2xhaCBhZGFsYWggKio3NSoqIGRlbmdhbiBzdGFuZGFyIGRldmlhc2kgKioxMCoqLiAgDQotICoqU2lzd2EgWCBtZW5kYXBhdCBuaWxhaSA4NSoqLiAgDQotICoqWi1TY29yZSA9ICg4NSAtIDc1KSAvIDEwID0gMSoqIOKGkiBBcnRpbnlhLCBzaXN3YSBYIGJlcmFkYSAqKjEgc3RhbmRhciBkZXZpYXNpIGRpIGF0YXMgcmF0YS1yYXRhKiouICANCg0KKipLZXNpbXB1bGFuOioqICANCkppa2Egc2Vrb2xhaCBtZW1pbGlraSAqKmJhbnlhayBzaXN3YSAoPjMwKSoqIGRhbiBraXRhIHRhaHUgc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpLCAqKnBha2FpIFotU2NvcmUqKi4gIA0KDQojIyMgKipKaWthIFBha2FpIFQtU2NvcmU6KiogIA0KLSAqKlBvcHVsYXNpKio6IEhhbnlhIHNhdHUga2VsYXMga2VjaWwgKG1pc2FsbnlhIDEwIHNpc3dhKS4gIA0KLSAqKlRpZGFrIGRpa2V0YWh1aSoqOiBTdGFuZGFyIGRldmlhc2kgc2VsdXJ1aCBzZWtvbGFoLiAgDQotICoqU2lzd2EgWCBtZW5kYXBhdCBuaWxhaSA4NSoqLCBkYW4gcmF0YS1yYXRhIGtlbGFzIGFkYWxhaCAqKjc1KiogZGVuZ2FuIHN0YW5kYXIgZGV2aWFzaSAqKjkqKi4gIA0KLSAqKlQtU2NvcmUgPSAoODUgLSA3NSkgLyAoOS/iiJoxMCkgPSAzLjMzKiog4oaSIEFydGlueWEsIG5pbGFpIHNpc3dhIFggamF1aCBsZWJpaCB0aW5nZ2kgZGliYW5kaW5nIHRlbWFuLXRlbWFubnlhLiAgDQoNCioqS2VzaW1wdWxhbjoqKiAgDQpLYXJlbmEgaGFueWEgYWRhICoqMTAgc2lzd2EgKHNhbXBlbCBrZWNpbCkqKiBkYW4ga2l0YSB0aWRhayB0YWh1IHN0YW5kYXIgZGV2aWFzaSBzZWtvbGFoLCAqKnBha2FpIFQtU2NvcmUqKi4gIA0KDQotLS0NCg0KIyMgKioyLjcuIEtlc2ltcHVsYW4gQWtoaXIgWi1TY29yZSB2cyBULVNjb3JlICoqICANCg0KLSAqKlotU2NvcmUgZGlndW5ha2FuIGppa2Egc2FtcGVsIGJlc2FyIGRhbiBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgZGlrZXRhaHVpLioqICANCi0gKipULVNjb3JlIGRpZ3VuYWthbiBqaWthIHNhbXBlbCBrZWNpbCBkYW4gc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aS4qKiAgDQotICoqRGlzdHJpYnVzaSBub3JtYWwgZGlndW5ha2FuIHVudHVrIFotU2NvcmUsIHNlbWVudGFyYSBkaXN0cmlidXNpLXQgZGlndW5ha2FuIHVudHVrIFQtU2NvcmUuKiogIA0KLSAqKlNlbWFraW4ga2VjaWwgdWt1cmFuIHNhbXBlbCwgc2VtYWtpbiBiZXNhciB2YXJpYXNpbnlhLCBzZWhpbmdnYSBULVNjb3JlIGxlYmloIGZsZWtzaWJlbCBkaWJhbmRpbmcgWi1TY29yZS4qKiAgDQoNCkphZGksIGthbGF1IGJla2VyamEgZGVuZ2FuICoqZGF0YSBiZXNhciB5YW5nIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSB5YW5nIGRpa2V0YWh1aSwgcGFrYWkgWi1TY29yZSoqLiBUYXBpIGthbGF1IGRhdGFueWEgKiprZWNpbCBkYW4gc3RhbmRhciBkZXZpYXNpIHRpZGFrIGRpa2V0YWh1aSwgcGFrYWkgVC1TY29yZSoqLiAgDQoNCiMgUmVmZXJlbnNpDQpFRFVDQkEuIChuLmQuKS4gWiBTY29yZSB2cy4gVCBTY29yZS4gRGlha3NlcyBwYWRhIDIxIEZlYnJ1YXJpIDIwMjUsIGRhcmkgaHR0cHM6Ly93d3cuZWR1Y2JhLmNvbS96LXNjb3JlLXZzLXQtc2NvcmUvDQoNCkluZGVlZC4gKG4uZC4pLiAzIFNpZ21hIHZzLiA2IFNpZ21hLiBJbmRlZWQgQ2FyZWVyIEd1aWRlLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3d3dy5pbmRlZWQuY29tL2NhcmVlci1hZHZpY2UvY2FyZWVyLWRldmVsb3BtZW50LzMtc2lnbWEtdnMtNi1zaWdtYQ0KDQpTdGF0aXN0aWNzIEhvdyBUby4gKG4uZC4pLiBUIFNjb3JlIHZzLiBaIFNjb3JlLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3d3dy5zdGF0aXN0aWNzaG93dG8uY29tL3Byb2JhYmlsaXR5LWFuZC1zdGF0aXN0aWNzL2h5cG90aGVzaXMtdGVzdGluZy90LXNjb3JlLXZzLXotc2NvcmUvDQoNClN0dWR5LmNvbS4gKG4uZC4pLiBTaXggU2lnbWEgdnMuIFRocmVlIFNpZ21hLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3N0dWR5LmNvbS9hY2FkZW15L2xlc3Nvbi9zaXgtc2lnbWEtdnMtdGhyZWUtc2lnbWEuaHRtbA0KDQpUaW1lc1Byby4gKG4uZC4pLiAzIFNpZ21hIHZzLiA2IFNpZ21hOiBXaGF0IGFyZSB0aGUgdG9wIGRpZmZlcmVuY2VzIGFuZCBleGFtcGxlcz8gVGltZXNQcm8gQmxvZy4gRGlha3NlcyBwYWRhIDIxIEZlYnJ1YXJpIDIwMjUsIGRhcmkgaHR0cHM6Ly90aW1lc3Byby5jb20vYmxvZy8zLXNpZ21hLXZzLTYtc2lnbWEtd2hhdC1hcmUtdGhlLXRvcC1kaWZmZXJlbmNlcy1hbmQtZXhhbXBsZXMNCg==