SAMPLING & SURVEY TECHNIQUES

Laporan Perbandingan Margin Of Error pada Probability Sampling dan Non-Probability Sampling

1. Pendahuluan

1.1 Tujuan

Laporan ini bertujuan untuk menganalisis dan membandingkan Margin of Error (MoE) antara metode Probability Sampling dan Non-Probability Sampling dalam memperkirakan pengeluaran makanan bulanan mahasiswa. Perbandingan ini diharapkan dapat memberikan wawasan mengenai efektivitas masing-masing metode dalam menghasilkan estimasi yang lebih akurat.

Adapun tujuan lebih spesifik dari penelitian ini adalah sebagai berikut:

  • Menentukan besarnya Margin of Error (MoE) yang dihasilkan dari Probability Sampling.

  • Menentukan besarnya Margin of Error (MoE) yang dihasilkan dari Non-Probability Sampling.

  • Membandingkan hasil kedua metode dan menilai tingkat akurasinya dalam memperkirakan pengeluaran makanan bulanan mahasiswa.

  • Memberikan rekomendasi metode sampling yang lebih sesuai untuk penelitian sejenis di masa mendatang.

1.2 Pentingnya Menghitung MoE Dalam Pengambilan Sampel

Margin of Error (MoE) merupakan indikator statistik yang menunjukkan seberapa besar hasil estimasi dari sampel dapat menyimpang dari nilai sebenarnya dalam populasi. MoE dinyatakan dalam bentuk persentase dan dipengaruhi oleh berbagai faktor, seperti ukuran sampel, variasi dalam populasi, serta metode pengambilan sampel yang digunakan.

Dalam pengambilan sampel, MoE menjadi krusial karena:

  1. Menentukan Akurasi Estimasi
  • Semakin kecil Margin of Error, semakin dekat hasil estimasi terhadap nilai sebenarnya dalam populasi.

  • MoE yang besar menunjukkan bahwa hasil estimasi dari sampel memiliki kemungkinan penyimpangan yang lebih besar dari populasi sesungguhnya.

  1. Membantu Dalam Pengambilan Keputusan
  • Dalam penelitian, terutama yang berkaitan dengan kebijakan atau bisnis, memahami batas ketidakpastian sangat penting agar keputusan yang dibuat lebih informatif dan tepat.

  • Contohnya, jika universitas ingin menentukan kebijakan subsidi makanan bagi mahasiswa, perhitungan MoE yang akurat dapat membantu memastikan bahwa estimasi pengeluaran makanan mahasiswa cukup dapat diandalkan.

  1. Membedakan Kualitas Metode Sampling
  • Probability Sampling umumnya memiliki MoE yang lebih kecil dibandingkan Non-Probability Sampling karena setiap elemen dalam populasi memiliki probabilitas yang diketahui untuk terpilih, sehingga hasilnya lebih representatif.

  • Non-Probability Sampling sering kali memiliki MoE yang lebih besar karena keterbatasan dalam pengacakan, yang dapat menyebabkan bias dalam sampel.

Dengan memahami Margin of Error dan pentingnya dalam pengambilan sampel, penelitian ini akan mengevaluasi dan membandingkan metode Probability Sampling dan Non-Probability Sampling untuk menentukan metode mana yang lebih optimal dalam memperkirakan pengeluaran makanan bulanan mahasiswa.

2. Metode Pengambilan Sampling

2.1 Probability Sampling

  1. Simple Random Sampling (SRS): Memilih sampel secara acak dari populasi tanpa mempertimbangkan karakteristik tertentu, sehingga setiap individu memiliki peluang yang sama untuk terpilih.

    ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    102 Laki-laki 21 Ekonomi 1.200.000
    205 Perempuan 22 Teknik 1.500.000
    310 Laki-laki 23 Hukum 1.250.000
    415 Perempuan 21 Kedokteran 1.600.000
  2. Stratified Sampling: Membagi populasi ke dalam kelompok (strata) berdasarkan fakultas dan mengambil sampel secara proporsional dari setiap kelompok untuk memastikan keterwakilan yang seimbang.

    Strata ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    Fakultas Ekonomi 304 Perempuan 23 Ekonomi 1.300.000
    Fakultas Teknik 410 Laki-laki 22 Teknik 1.400.000
    Fakultas Hukum 520 Perempuan 21 Hukum 1.450.000
  3. Systematic Sampling: Memilih setiap siswa ke-k dari daftar yang diurutkan berdasarkan nomor ID mahasiswa untuk memastikan pemerataan dalam pengambilan sampel.

    ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    150 Perempuan 21 Kedokteran 1.800.000
    300 Laki-laki 23 Hukum 1.600.000
    450 Perempuan 22 Ekonomi 1.500.000
  4. Cluster Sampling: Memilih beberapa fakultas secara acak dan mensurvei seluruh mahasiswa dalam fakultas yang terpilih untuk mengurangi biaya dan waktu.

    ID Mahasiswa Fakultas Tahun Akademik Pengeluaran Makanan Bulanan (Rp)
    501 Ekonomi 2023 1.250.000
    502 Ekonomi 2024 1.350.000
    601 Teknik 2022 1.500.000
    602 Teknik 2023 1.600.000
  5. Multi-Stage Sampling: Menggunakan kombinasi beberapa teknik sampling, yaitu memilih beberapa fakultas secara acak lalu memilih beberapa mahasiswa secara acak dari fakultas tersebut.

    ID Mahasiswa Fakultas Tahun Akademik Pengeluaran Makanan Bulanan (Rp)
    701 Teknik 2023 1.450.000
    702 Ekonomi 2021 1.320.000
    703 Hukum 2024 1.380.000
    704 Kedokteran 2022 1.500.000

2.2 Non-Probability Sampling

  1. Convenience Sampling: Memilih responden yang mudah diakses seperti mahasiswa yang berada di sekitar kampus atau memiliki hubungan dengan peneliti.

    ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    801 Laki-laki 20 Kedokteran 1.700.000
    802 Perempuan 21 Teknik 1.400.000
    803 Laki-laki 22 Ekonomi 1.600.000
  2. Purposive Sampling: Memilih responden berdasarkan kriteria tertentu seperti mahasiswa dengan pengeluaran makanan lebih dari Rp 1.500.000.

    Kriteria ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    Pengeluaran > Rp 1.500.000 1003 Laki-laki 23 Teknik 1.800.000
    Pengeluaran > Rp 1.500.000 1004 Perempuan 22 Hukum 1.600.000
  3. Quota Sampling: Memilih responden berdasarkan kuota tertentu dari subkelompok, misalnya membagi jumlah sampel dengan persentase yang sama antara fakultas Teknik dan Ekonomi.

    Kuota ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    50% Teknik, 50% Ekonomi 1205 Laki-laki 21 Teknik 1.450.000
    50% Teknik, 50% Ekonomi 1306 Perempuan 23 Ekonomi 1.380.000
  4. Snowball Sampling: Memilih responden berdasarkan referensi dari peserta sebelumnya, seperti mahasiswa yang merekomendasikan teman mereka untuk berpartisipasi dalam survei.

    ID Mahasiswa Jenis Kelamin Usia Fakultas Pengeluaran Makanan Bulanan (Rp)
    1407 Laki-laki 22 Ekonomi 1.420.000
    1408 Perempuan 21 Teknik 1.500.000
    1409 Laki-laki 23 Kedokteran 1.600.000

3. Perhitungan MoE untuk Pengambilan Sampel Probabilitas

Margin of Error (MoE) adalah konsep statistik yang mengukur ketidakpastian dalam hasil survei atau estimasi berbasis sampel. Konsep ini memberikan rentang di mana parameter populasi sebenarnya cenderung berada.

Secara umum, MoE dihitung dengan rumus:

\[ MoE = Z \times \frac{\sigma}{\sqrt{n}} \]

Dimana: - \(Z = 1.96\) (untuk tingkat kepercayaan 95%)

  • \(n\) = jumlah sampel

  • \(\sigma\) = Simpangan baku sampel

Simpangan baku (\(\sigma\)) dihitung dengan rumus:

\[ \sigma = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n - 1}} \]

Dimana: - \(X_i\) = Pengeluaran makanan mahasiswa ke-\(i\)

  • \(\bar{X}\) = Rata-rata pengeluaran makanan mahasiswa

3.1 Simple Random Sampling (SRS)

Diketahui:

  • \(Z = 1.96\)

  • \(n = 277\)

  • \(\sigma = 421.205,59\)

Maka:

\[ MoE = 1.96 \times \frac{421.205,59}{\sqrt{277}} \]

\[ MoE = 49.602,36 \]

3.2 Stratified Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 250\)

  • \(\sigma = 391.242,90\)

Maka:

\[ MoE = 1.96 \times \frac{391.242,90}{\sqrt{250}} \]

\[ MoE = 48.459,72 \]

3.3 Cluster Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 300\)

  • \(\sigma = 375.114,78\)

Maka:

\[ MoE = 1.96 \times \frac{375.114,78}{\sqrt{300}} \]

\[ MoE = 43.263,15 \]

3.4 Systematic Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 280\)

  • \(\sigma = 405.312,40\)

Maka:

\[ MoE = 1.96 \times \frac{405.312,40}{\sqrt{280}} \]

\[ MoE = 47.485,93 \]

3.5 Multi-Stage Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 260\)

  • \(\sigma = 398.102,75\)

Maka:

\[ MoE = 1.96 \times \frac{398.102,75}{\sqrt{260}} \]

\[ MoE = 48.377,64 \]

4. Perhitungan MoE untuk Pengambilan Sampel Non-Probabilitas

4.1 Convenience Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 223\)

  • \(\sigma = 425.090,14\)

Maka:

\[ MoE = 1.96 \times \frac{425.090,14}{\sqrt{223}} \]

\[ MoE = 55.792,61 \]

4.2 Snowball Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 200\)

  • \(\sigma = 412.312,47\)

Maka:

\[ MoE = 1.96 \times \frac{412.312,47}{\sqrt{200}} \]

\[ MoE = 57.102,84 \]

4.3 Purposive Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 210\)

  • \(\sigma = 398.541,22\)

Maka:

\[ MoE = 1.96 \times \frac{398.541,22}{\sqrt{210}} \]

\[ MoE = 53.723,10 \]

4.4 Quota Sampling

Diketahui:

  • \(Z = 1.96\)

  • \(n = 230\)

  • \(\sigma = 389.214,78\)

Maka:

\[ MoE = 1.96 \times \frac{389.214,78}{\sqrt{230}} \]

\[ MoE = 50.208,56 \]

5. Perbandingan Setiap Metode

Dari hasil perhitungan di atas, dapat disimpulkan bahwa metode probability sampling memiliki Margin of Error yang lebih rendah dibandingkan dengan metode non-probability sampling. Berikut adalah perbandingan rinci grafik Margin of Error (MoE) dari berbagai metode sampling :

Visualisasi Perbandingan MoE

  • Metode Stratified Sampling memiliki MoE terendah dalam Probability Sampling, yang menunjukkan bahwa metode ini lebih stabil dan akurat dibandingkan yang lain.
  • Metode Convenience Sampling memiliki MoE tertinggi dalam Non-Probability Sampling, yang menunjukkan adanya tingkat ketidakpastian yang tinggi dalam hasil estimasi.
  • Cluster Sampling juga cukup baik dalam mengurangi MoE, terutama dalam populasi besar.
  • Snowball Sampling memberikan hasil yang lebih baik dibandingkan Convenience Sampling, tetapi masih lebih tinggi dibandingkan Stratified Sampling.

6. Ukuran Sampel yang Diperlukan untuk MoE = 5

Untuk mendapatkan Margin of Error sebesar 5, kita dapat menggunakan rumus:

\[ n = \left( \frac{Z \times \sigma}{MoE} \right)^2 \]

Misalnya untuk Stratified Sampling:

\[ n = \left( \frac{1.96 \times 391.242,90}{5} \right)^2 = 594.899 \]

Jadi, dibutuhkan sekitar 595 responden agar MoE mencapai 5 dengan tingkat kepercayaan 95%.

7. Kesimpulan

Berdasarkan perhitungan MoE dari berbagai metode sampling, dapat disimpulkan bahwa metode probability sampling menghasilkan estimasi yang lebih akurat dibandingkan dengan non-probability sampling. Metode Stratified Sampling dan Cluster Sampling memberikan Margin of Error yang paling kecil, menunjukkan bahwa metode ini lebih andal dalam memperkirakan pengeluaran mahasiswa.

Sebaliknya, metode non-probability sampling cenderung memiliki Margin of Error yang lebih tinggi, terutama pada Convenience Sampling. Oleh karena itu, metode ini kurang direkomendasikan untuk penelitian yang membutuhkan estimasi yang sangat akurat.

8. Rekomendasi

  1. Gunakan metode Stratified atau Cluster Sampling untuk hasil lebih akurat.
  2. Non-Probability Sampling hanya jika keterbatasan waktu dan sumber daya menjadi kendala.
  3. Jika ingin MoE sangat kecil, jumlah sampel harus lebih besar.
LS0tICANCnRpdGxlOiAiU0FNUExJTkcgJiBTVVJWRVkgVEVDSE5JUVVFUyIgIA0Kc3VidGl0bGU6ICJMYXBvcmFuIFBlcmJhbmRpbmdhbiBNYXJnaW4gT2YgRXJyb3IgcGFkYSBQcm9iYWJpbGl0eSBTYW1wbGluZyBkYW4gTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIiAgDQphdXRob3I6ICJEYWRhbiBSYW1kYW4gSGlkYXlhdCAoNTIyNDAwMjgpIiAgDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiICANCm91dHB1dDogIA0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICANCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZSAgDQogICAgdGh1bWJuYWlsczogdHJ1ZSAgDQogICAgbGlnaHRib3g6IHRydWUgIA0KICAgIGdhbGxlcnk6IHRydWUgIA0KICAgIGxpYl9kaXI6IGxpYnMgIA0KICAgIGRmX3ByaW50OiAicGFnZWQiICANCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93IiAgDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSAgDQogICAgY3NzOiAic3R5bGUuY3NzIiAgDQotLS0gIA0KDQo8aW1nIHNyYz0iRk9UTyBURVJCQVJVXzExem9uLmpwZyIgd2lkdGg9IjkwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IiI+DQoNCg0KDQojIDEuIFBlbmRhaHVsdWFuDQojIyAxLjEgVHVqdWFuDQoNCkxhcG9yYW4gaW5pIGJlcnR1anVhbiB1bnR1ayBtZW5nYW5hbGlzaXMgZGFuIG1lbWJhbmRpbmdrYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIGFudGFyYSBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFuIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2EuIFBlcmJhbmRpbmdhbiBpbmkgZGloYXJhcGthbiBkYXBhdCBtZW1iZXJpa2FuIHdhd2FzYW4gbWVuZ2VuYWkgZWZla3Rpdml0YXMgbWFzaW5nLW1hc2luZyBtZXRvZGUgZGFsYW0gbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHlhbmcgbGViaWggYWt1cmF0Lg0KDQpBZGFwdW4gdHVqdWFuIGxlYmloIHNwZXNpZmlrIGRhcmkgcGVuZWxpdGlhbiBpbmkgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSBNZW5lbnR1a2FuIGJlc2FybnlhIE1hcmdpbiBvZiBFcnJvciAoTW9FKSB5YW5nIGRpaGFzaWxrYW4gZGFyaSBQcm9iYWJpbGl0eSBTYW1wbGluZy4NCg0KLSBNZW5lbnR1a2FuIGJlc2FybnlhIE1hcmdpbiBvZiBFcnJvciAoTW9FKSB5YW5nIGRpaGFzaWxrYW4gZGFyaSBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcuDQoNCi0gTWVtYmFuZGluZ2thbiBoYXNpbCBrZWR1YSBtZXRvZGUgZGFuIG1lbmlsYWkgdGluZ2thdCBha3VyYXNpbnlhIGRhbGFtIG1lbXBlcmtpcmFrYW4gcGVuZ2VsdWFyYW4gbWFrYW5hbiBidWxhbmFuIG1haGFzaXN3YS4NCg0KLSBNZW1iZXJpa2FuIHJla29tZW5kYXNpIG1ldG9kZSBzYW1wbGluZyB5YW5nIGxlYmloIHNlc3VhaSB1bnR1ayBwZW5lbGl0aWFuIHNlamVuaXMgZGkgbWFzYSBtZW5kYXRhbmcuDQoNCiMjIDEuMiBQZW50aW5nbnlhIE1lbmdoaXR1bmcgTW9FIERhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbA0KDQoqTWFyZ2luIG9mIEVycm9yIChNb0UpKiBtZXJ1cGFrYW4gaW5kaWthdG9yIHN0YXRpc3RpayB5YW5nIG1lbnVuanVra2FuIHNlYmVyYXBhIGJlc2FyIGhhc2lsIGVzdGltYXNpIGRhcmkgc2FtcGVsIGRhcGF0IG1lbnlpbXBhbmcgZGFyaSBuaWxhaSBzZWJlbmFybnlhIGRhbGFtIHBvcHVsYXNpLiBNb0UgZGlueWF0YWthbiBkYWxhbSBiZW50dWsgcGVyc2VudGFzZSBkYW4gZGlwZW5nYXJ1aGkgb2xlaCBiZXJiYWdhaSBmYWt0b3IsIHNlcGVydGkgdWt1cmFuIHNhbXBlbCwgdmFyaWFzaSBkYWxhbSBwb3B1bGFzaSwgc2VydGEgbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIGRpZ3VuYWthbi4NCg0KRGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLCBNb0UgbWVuamFkaSBrcnVzaWFsIGthcmVuYToNCg0KMS4gKk1lbmVudHVrYW4gQWt1cmFzaSBFc3RpbWFzaSoNCg0KLSBTZW1ha2luIGtlY2lsIE1hcmdpbiBvZiBFcnJvciwgc2VtYWtpbiBkZWthdCBoYXNpbCBlc3RpbWFzaSB0ZXJoYWRhcCBuaWxhaSBzZWJlbmFybnlhIGRhbGFtIHBvcHVsYXNpLg0KDQotIE1vRSB5YW5nIGJlc2FyIG1lbnVuanVra2FuIGJhaHdhIGhhc2lsIGVzdGltYXNpIGRhcmkgc2FtcGVsIG1lbWlsaWtpIGtlbXVuZ2tpbmFuIHBlbnlpbXBhbmdhbiB5YW5nIGxlYmloIGJlc2FyIGRhcmkgcG9wdWxhc2kgc2VzdW5nZ3VobnlhLg0KDQoyLiAqTWVtYmFudHUgRGFsYW0gUGVuZ2FtYmlsYW4gS2VwdXR1c2FuKg0KDQotIERhbGFtIHBlbmVsaXRpYW4sIHRlcnV0YW1hIHlhbmcgYmVya2FpdGFuIGRlbmdhbiBrZWJpamFrYW4gYXRhdSBiaXNuaXMsIG1lbWFoYW1pIGJhdGFzIGtldGlkYWtwYXN0aWFuIHNhbmdhdCBwZW50aW5nIGFnYXIga2VwdXR1c2FuIHlhbmcgZGlidWF0IGxlYmloIGluZm9ybWF0aWYgZGFuIHRlcGF0Lg0KDQotIENvbnRvaG55YSwgamlrYSB1bml2ZXJzaXRhcyBpbmdpbiBtZW5lbnR1a2FuIGtlYmlqYWthbiBzdWJzaWRpIG1ha2FuYW4gYmFnaSBtYWhhc2lzd2EsIHBlcmhpdHVuZ2FuIE1vRSB5YW5nIGFrdXJhdCBkYXBhdCBtZW1iYW50dSBtZW1hc3Rpa2FuIGJhaHdhIGVzdGltYXNpIHBlbmdlbHVhcmFuIG1ha2FuYW4gbWFoYXNpc3dhIGN1a3VwIGRhcGF0IGRpYW5kYWxrYW4uDQoNCjMuICpNZW1iZWRha2FuIEt1YWxpdGFzIE1ldG9kZSBTYW1wbGluZyoNCg0KLSBQcm9iYWJpbGl0eSBTYW1wbGluZyB1bXVtbnlhIG1lbWlsaWtpIE1vRSB5YW5nIGxlYmloIGtlY2lsIGRpYmFuZGluZ2thbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcga2FyZW5hIHNldGlhcCBlbGVtZW4gZGFsYW0gcG9wdWxhc2kgbWVtaWxpa2kgcHJvYmFiaWxpdGFzIHlhbmcgZGlrZXRhaHVpIHVudHVrIHRlcnBpbGloLCBzZWhpbmdnYSBoYXNpbG55YSBsZWJpaCByZXByZXNlbnRhdGlmLg0KDQotIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyBzZXJpbmcga2FsaSBtZW1pbGlraSBNb0UgeWFuZyBsZWJpaCBiZXNhciBrYXJlbmEga2V0ZXJiYXRhc2FuIGRhbGFtIHBlbmdhY2FrYW4sIHlhbmcgZGFwYXQgbWVueWViYWJrYW4gYmlhcyBkYWxhbSBzYW1wZWwuDQoNCkRlbmdhbiBtZW1haGFtaSBNYXJnaW4gb2YgRXJyb3IgZGFuIHBlbnRpbmdueWEgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLCBwZW5lbGl0aWFuIGluaSBha2FuIG1lbmdldmFsdWFzaSBkYW4gbWVtYmFuZGluZ2thbiBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFuIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyB1bnR1ayBtZW5lbnR1a2FuIG1ldG9kZSBtYW5hIHlhbmcgbGViaWggb3B0aW1hbCBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2EuDQoNCiMgMi4gTWV0b2RlIFBlbmdhbWJpbGFuIFNhbXBsaW5nDQoNCiMjIDIuMSBQcm9iYWJpbGl0eSBTYW1wbGluZw0KDQoxLiAqKlNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykqKjogTWVtaWxpaCBzYW1wZWwgc2VjYXJhIGFjYWsgZGFyaSBwb3B1bGFzaSB0YW5wYSBtZW1wZXJ0aW1iYW5na2FuIGthcmFrdGVyaXN0aWsgdGVydGVudHUsIHNlaGluZ2dhIHNldGlhcCBpbmRpdmlkdSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayB0ZXJwaWxpaC4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgMTAyICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMSAgIHwgRWtvbm9taSAgfCAxLjIwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDIwNSAgICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjIgICB8IFRla25payAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAzMTAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBIdWt1bSAgICB8IDEuMjUwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNDE1ICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMSAgIHwgS2Vkb2t0ZXJhbiB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMi4gKipTdHJhdGlmaWVkIFNhbXBsaW5nKio6IE1lbWJhZ2kgcG9wdWxhc2kga2UgZGFsYW0ga2Vsb21wb2sgKHN0cmF0YSkgYmVyZGFzYXJrYW4gZmFrdWx0YXMgZGFuIG1lbmdhbWJpbCBzYW1wZWwgc2VjYXJhIHByb3BvcnNpb25hbCBkYXJpIHNldGlhcCBrZWxvbXBvayB1bnR1ayBtZW1hc3Rpa2FuIGtldGVyd2FraWxhbiB5YW5nIHNlaW1iYW5nLg0KICAgDQogICB8IFN0cmF0YSAgICAgICAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KICAgfCBGYWt1bHRhcyBFa29ub21pIHwgMzA0ICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMyAgIHwgRWtvbm9taSAgfCAxLjMwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IEZha3VsdGFzIFRla25payAgfCA0MTAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIyICAgfCBUZWtuaWsgICB8IDEuNDAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgRmFrdWx0YXMgSHVrdW0gICB8IDUyMCAgICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjEgICB8IEh1a3VtICAgIHwgMS40NTAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KDQozLiAqKlN5c3RlbWF0aWMgU2FtcGxpbmcqKjogTWVtaWxpaCBzZXRpYXAgc2lzd2Ega2UtayBkYXJpIGRhZnRhciB5YW5nIGRpdXJ1dGthbiBiZXJkYXNhcmthbiBub21vciBJRCBtYWhhc2lzd2EgdW50dWsgbWVtYXN0aWthbiBwZW1lcmF0YWFuIGRhbGFtIHBlbmdhbWJpbGFuIHNhbXBlbC4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzICAgIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KICAgfCAxNTAgICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIxICAgfCBLZWRva3RlcmFuIHwgMS44MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAzMDAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBIdWt1bSAgICAgIHwgMS42MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCA0NTAgICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIyICAgfCBFa29ub21pICAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KDQo0LiAqKkNsdXN0ZXIgU2FtcGxpbmcqKjogTWVtaWxpaCBiZWJlcmFwYSBmYWt1bHRhcyBzZWNhcmEgYWNhayBkYW4gbWVuc3VydmVpIHNlbHVydWggbWFoYXNpc3dhIGRhbGFtIGZha3VsdGFzIHlhbmcgdGVycGlsaWggdW50dWsgbWVuZ3VyYW5naSBiaWF5YSBkYW4gd2FrdHUuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgRmFrdWx0YXMgICAgICAgfCBUYWh1biBBa2FkZW1payB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgNTAxICAgICAgICAgfCBFa29ub21pICAgICAgICB8IDIwMjMgICAgICAgICAgfCAxLjI1MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDUwMiAgICAgICAgIHwgRWtvbm9taSAgICAgICAgfCAyMDI0ICAgICAgICAgIHwgMS4zNTAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCA2MDEgICAgICAgICB8IFRla25payAgICAgICAgIHwgMjAyMiAgICAgICAgICB8IDEuNTAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNjAyICAgICAgICAgfCBUZWtuaWsgICAgICAgICB8IDIwMjMgICAgICAgICAgfCAxLjYwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCjUuICoqTXVsdGktU3RhZ2UgU2FtcGxpbmcqKjogTWVuZ2d1bmFrYW4ga29tYmluYXNpIGJlYmVyYXBhIHRla25payBzYW1wbGluZywgeWFpdHUgbWVtaWxpaCBiZWJlcmFwYSBmYWt1bHRhcyBzZWNhcmEgYWNhayBsYWx1IG1lbWlsaWggYmViZXJhcGEgbWFoYXNpc3dhIHNlY2FyYSBhY2FrIGRhcmkgZmFrdWx0YXMgdGVyc2VidXQuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgRmFrdWx0YXMgfCBUYWh1biBBa2FkZW1payB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgNzAxICAgICAgICAgfCBUZWtuaWsgIHwgMjAyMyAgICAgICAgICB8IDEuNDUwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzAyICAgICAgICAgfCBFa29ub21pIHwgMjAyMSAgICAgICAgICB8IDEuMzIwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzAzICAgICAgICAgfCBIdWt1bSAgIHwgMjAyNCAgICAgICAgICB8IDEuMzgwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzA0ICAgICAgICAgfCBLZWRva3RlcmFuIHwgMjAyMiAgICAgICAgfCAxLjUwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCiMjIDIuMiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcNCg0KMS4gKipDb252ZW5pZW5jZSBTYW1wbGluZyoqOiBNZW1pbGloIHJlc3BvbmRlbiB5YW5nIG11ZGFoIGRpYWtzZXMgc2VwZXJ0aSBtYWhhc2lzd2EgeWFuZyBiZXJhZGEgZGkgc2VraXRhciBrYW1wdXMgYXRhdSBtZW1pbGlraSBodWJ1bmdhbiBkZW5nYW4gcGVuZWxpdGkuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyAgICB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgODAxICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMCAgIHwgS2Vkb2t0ZXJhbiB8IDEuNzAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgODAyICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMSAgIHwgVGVrbmlrICAgICB8IDEuNDAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgODAzICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMiAgIHwgRWtvbm9taSAgICB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMi4gKipQdXJwb3NpdmUgU2FtcGxpbmcqKjogTWVtaWxpaCByZXNwb25kZW4gYmVyZGFzYXJrYW4ga3JpdGVyaWEgdGVydGVudHUgc2VwZXJ0aSBtYWhhc2lzd2EgZGVuZ2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gbGViaWggZGFyaSBScCAxLjUwMC4wMDAuDQogICANCiAgIHwgS3JpdGVyaWEgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgUGVuZ2VsdWFyYW4gPiBScCAxLjUwMC4wMDAgICAgICAgfCAxMDAzICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBUZWtuaWsgICB8IDEuODAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgUGVuZ2VsdWFyYW4gPiBScCAxLjUwMC4wMDAgICAgICAgfCAxMDA0ICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIyICAgfCBIdWt1bSAgICB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMy4gKipRdW90YSBTYW1wbGluZyoqOiBNZW1pbGloIHJlc3BvbmRlbiBiZXJkYXNhcmthbiBrdW90YSB0ZXJ0ZW50dSBkYXJpIHN1YmtlbG9tcG9rLCBtaXNhbG55YSBtZW1iYWdpIGp1bWxhaCBzYW1wZWwgZGVuZ2FuIHBlcnNlbnRhc2UgeWFuZyBzYW1hIGFudGFyYSBmYWt1bHRhcyBUZWtuaWsgZGFuIEVrb25vbWkuDQogICANCiAgIHwgS3VvdGEgICAgICAgICAgICAgICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQogICB8IDUwJSBUZWtuaWssIDUwJSBFa29ub21pIHwgMTIwNSAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMSAgIHwgVGVrbmlrICAgfCAxLjQ1MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDUwJSBUZWtuaWssIDUwJSBFa29ub21pIHwgMTMwNiAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMyAgIHwgRWtvbm9taSAgfCAxLjM4MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCjQuICoqU25vd2JhbGwgU2FtcGxpbmcqKjogTWVtaWxpaCByZXNwb25kZW4gYmVyZGFzYXJrYW4gcmVmZXJlbnNpIGRhcmkgcGVzZXJ0YSBzZWJlbHVtbnlhLCBzZXBlcnRpIG1haGFzaXN3YSB5YW5nIG1lcmVrb21lbmRhc2lrYW4gdGVtYW4gbWVyZWthIHVudHVrIGJlcnBhcnRpc2lwYXNpIGRhbGFtIHN1cnZlaS4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgMTQwNyAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMiAgIHwgRWtvbm9taSAgfCAxLjQyMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDE0MDggICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjEgICB8IFRla25payAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAxNDA5ICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBLZWRva3RlcmFuIHwgMS42MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgDQoNCiMgMy4gUGVyaGl0dW5nYW4gTW9FIHVudHVrIFBlbmdhbWJpbGFuIFNhbXBlbCBQcm9iYWJpbGl0YXMNCg0KTWFyZ2luIG9mIEVycm9yIChNb0UpIGFkYWxhaCBrb25zZXAgc3RhdGlzdGlrIHlhbmcgbWVuZ3VrdXIga2V0aWRha3Bhc3RpYW4gZGFsYW0gaGFzaWwgc3VydmVpIGF0YXUgZXN0aW1hc2kgYmVyYmFzaXMgc2FtcGVsLiBLb25zZXAgaW5pIG1lbWJlcmlrYW4gcmVudGFuZyBkaSBtYW5hIHBhcmFtZXRlciBwb3B1bGFzaSBzZWJlbmFybnlhIGNlbmRlcnVuZyBiZXJhZGEuDQoNClNlY2FyYSB1bXVtLCBNb0UgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOg0KDQo+ICQkDQpNb0UgPSBaIFx0aW1lcyBcZnJhY3tcc2lnbWF9e1xzcXJ0e259fQ0KPiAkJA0KDQpEaW1hbmE6DQotIFwoIFogPSAxLjk2IFwpICh1bnR1ayB0aW5na2F0IGtlcGVyY2F5YWFuIDk1JSkNCg0KLSBcKCBuIFwpID0ganVtbGFoIHNhbXBlbA0KDQotIFwoIFxzaWdtYSBcKSA9IFNpbXBhbmdhbiBiYWt1IHNhbXBlbA0KDQpTaW1wYW5nYW4gYmFrdSAoXCggXHNpZ21hIFwpKSBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNCj4gJCQNClxzaWdtYSA9IFxzcXJ0e1xmcmFje1xzdW0gKFhfaSAtIFxiYXJ7WH0pXjJ9e24gLSAxfX0NCj4gJCQNCg0KRGltYW5hOg0KLSBcKCBYX2kgXCkgPSBQZW5nZWx1YXJhbiBtYWthbmFuIG1haGFzaXN3YSBrZS1cKCBpIFwpDQoNCi0gXCggXGJhcntYfSBcKSA9IFJhdGEtcmF0YSBwZW5nZWx1YXJhbiBtYWthbmFuIG1haGFzaXN3YQ0KDQojIyAzLjEgU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKQ0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjc3IFwpDQoNCi0gXCggXHNpZ21hID0gNDIxLjIwNSw1OSBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MjEuMjA1LDU5fXtcc3FydHsyNzd9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA0OS42MDIsMzYNCj4gJCQNCg0KIyMgMy4yIFN0cmF0aWZpZWQgU2FtcGxpbmcNCg0KRGlrZXRhaHVpOg0KDQotIFwoIFogPSAxLjk2IFwpDQoNCi0gXCggbiA9IDI1MCBcKQ0KDQotIFwoIFxzaWdtYSA9IDM5MS4yNDIsOTAgXCkNCg0KTWFrYToNCg0KPiAkJA0KTW9FID0gMS45NiBcdGltZXMgXGZyYWN7MzkxLjI0Miw5MH17XHNxcnR7MjUwfX0NCj4gJCQNCg0KPiAkJA0KTW9FID0gNDguNDU5LDcyDQo+ICQkDQoNCiMjIDMuMyBDbHVzdGVyIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAzMDAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzNzUuMTE0LDc4IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM3NS4xMTQsNzh9e1xzcXJ0ezMwMH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDQzLjI2MywxNQ0KPiAkJA0KDQojIyAzLjQgU3lzdGVtYXRpYyBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjgwIFwpDQoNCi0gXCggXHNpZ21hID0gNDA1LjMxMiw0MCBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MDUuMzEyLDQwfXtcc3FydHsyODB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA0Ny40ODUsOTMNCj4gJCQNCg0KIyMgMy41IE11bHRpLVN0YWdlIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAyNjAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzOTguMTAyLDc1IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM5OC4xMDIsNzV9e1xzcXJ0ezI2MH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDQ4LjM3Nyw2NA0KPiAkJA0KDQojIDQuIFBlcmhpdHVuZ2FuIE1vRSB1bnR1ayBQZW5nYW1iaWxhbiBTYW1wZWwgTm9uLVByb2JhYmlsaXRhcw0KDQojIyA0LjEgQ29udmVuaWVuY2UgU2FtcGxpbmcNCg0KRGlrZXRhaHVpOg0KDQotIFwoIFogPSAxLjk2IFwpDQoNCi0gXCggbiA9IDIyMyBcKQ0KDQotIFwoIFxzaWdtYSA9IDQyNS4wOTAsMTQgXCkNCg0KTWFrYToNCg0KPiAkJA0KTW9FID0gMS45NiBcdGltZXMgXGZyYWN7NDI1LjA5MCwxNH17XHNxcnR7MjIzfX0NCj4gJCQNCg0KPiAkJA0KTW9FID0gNTUuNzkyLDYxDQo+ICQkDQoNCiMjIDQuMiBTbm93YmFsbCBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjAwIFwpDQoNCi0gXCggXHNpZ21hID0gNDEyLjMxMiw0NyBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MTIuMzEyLDQ3fXtcc3FydHsyMDB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA1Ny4xMDIsODQNCj4gJCQNCg0KIyMgNC4zIFB1cnBvc2l2ZSBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjEwIFwpDQoNCi0gXCggXHNpZ21hID0gMzk4LjU0MSwyMiBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3szOTguNTQxLDIyfXtcc3FydHsyMTB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA1My43MjMsMTANCj4gJCQNCg0KIyMgNC40IFF1b3RhIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAyMzAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzODkuMjE0LDc4IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM4OS4yMTQsNzh9e1xzcXJ0ezIzMH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDUwLjIwOCw1Ng0KPiAkJA0KDQojIDUuIFBlcmJhbmRpbmdhbiBTZXRpYXAgTWV0b2RlDQoNCkRhcmkgaGFzaWwgcGVyaGl0dW5nYW4gZGkgYXRhcywgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2EgbWV0b2RlIHByb2JhYmlsaXR5IHNhbXBsaW5nIG1lbWlsaWtpIE1hcmdpbiBvZiBFcnJvciB5YW5nIGxlYmloIHJlbmRhaCBkaWJhbmRpbmdrYW4gZGVuZ2FuIG1ldG9kZSBub24tcHJvYmFiaWxpdHkgc2FtcGxpbmcuIEJlcmlrdXQgYWRhbGFoIHBlcmJhbmRpbmdhbiByaW5jaSBncmFmaWsgTWFyZ2luIG9mIEVycm9yIChNb0UpIGRhcmkgYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nIDoNCg0KVmlzdWFsaXNhc2kgUGVyYmFuZGluZ2FuIE1vRQ0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIERhdGEgTWFyZ2luIG9mIEVycm9yIChNb0UpDQptZXRob2RzIDwtIGMoIlNpbXBsZSBSYW5kb20iLCAiU3RyYXRpZmllZCIsICJDbHVzdGVyIiwgIlN5c3RlbWF0aWMiLCAiTXVsdGktU3RhZ2UiLCANCiAgICAgICAgICAgICAiQ29udmVuaWVuY2UiLCAiU25vd2JhbGwiLCAiUHVycG9zaXZlIiwgIlF1b3RhIikNCm1vZV92YWx1ZXMgPC0gYyg0OS42MDIzNiwgNDguNDU5NzIsIDQzLjI2MzE1LCA0Ny40ODU5MywgNDguMzc3NjQsIA0KICAgICAgICAgICAgICAgIDU1Ljc5MjYxLCA1Ny4xMDI4NCwgNTMuNzIzMTAsIDUwLjIwODU2KQ0KDQojIFdhcm5hIHVudHVrIFByb2JhYmlsaXR5IHZzIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZw0KY29sb3JzIDwtIGMocmVwKCJibHVlIiwgNSksIHJlcCgicmVkIiwgNCkpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZShNZXRob2QgPSBmYWN0b3IobWV0aG9kcywgbGV2ZWxzID0gcmV2KG1ldGhvZHMpKSwgTW9FID0gbW9lX3ZhbHVlcywgQ29sb3IgPSBjb2xvcnMpDQoNCiMgTWVtYnVhdCBncmFmaWsgYmF0YW5nDQpnZ3Bsb3QoZGF0YSwgYWVzKHggPSBNb0UsIHkgPSBNZXRob2QsIGZpbGwgPSBDb2xvcikpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJibHVlIiA9ICJibHVlIiwgInJlZCIgPSAicmVkIikpICsNCiAgbGFicyh0aXRsZSA9ICJQZXJiYW5kaW5nYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIHBhZGEgQmVyYmFnYWkgTWV0b2RlIFNhbXBsaW5nIiwgDQogICAgICAgeCA9ICJNYXJnaW4gb2YgRXJyb3IgKE1vRSkiLCB5ID0gIk1ldG9kZSBTYW1wbGluZyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKE1vRSwgMikpLCBoanVzdCA9IC0wLjIsIHNpemUgPSA0KSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCg0KDQpgYGANCg0KLSAqKk1ldG9kZSBTdHJhdGlmaWVkIFNhbXBsaW5nIG1lbWlsaWtpIE1vRSB0ZXJlbmRhaCBkYWxhbSBQcm9iYWJpbGl0eSBTYW1wbGluZyoqLCB5YW5nIG1lbnVuanVra2FuIGJhaHdhIG1ldG9kZSBpbmkgbGViaWggc3RhYmlsIGRhbiBha3VyYXQgZGliYW5kaW5na2FuIHlhbmcgbGFpbi4NCi0gKipNZXRvZGUgQ29udmVuaWVuY2UgU2FtcGxpbmcgbWVtaWxpa2kgTW9FIHRlcnRpbmdnaSBkYWxhbSBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiwgeWFuZyBtZW51bmp1a2thbiBhZGFueWEgdGluZ2thdCBrZXRpZGFrcGFzdGlhbiB5YW5nIHRpbmdnaSBkYWxhbSBoYXNpbCBlc3RpbWFzaS4NCi0gKipDbHVzdGVyIFNhbXBsaW5nIGp1Z2EgY3VrdXAgYmFpayBkYWxhbSBtZW5ndXJhbmdpIE1vRSoqLCB0ZXJ1dGFtYSBkYWxhbSBwb3B1bGFzaSBiZXNhci4NCi0gKipTbm93YmFsbCBTYW1wbGluZyBtZW1iZXJpa2FuIGhhc2lsIHlhbmcgbGViaWggYmFpayBkaWJhbmRpbmdrYW4gQ29udmVuaWVuY2UgU2FtcGxpbmcsIHRldGFwaSBtYXNpaCBsZWJpaCB0aW5nZ2kgZGliYW5kaW5na2FuIFN0cmF0aWZpZWQgU2FtcGxpbmcuKioNCg0KDQoNCiMgNi4gVWt1cmFuIFNhbXBlbCB5YW5nIERpcGVybHVrYW4gdW50dWsgTW9FID0gNQ0KDQpVbnR1ayBtZW5kYXBhdGthbiBNYXJnaW4gb2YgRXJyb3Igc2ViZXNhciA1LCBraXRhIGRhcGF0IG1lbmdndW5ha2FuIHJ1bXVzOg0KDQpcWw0KbiA9IFxsZWZ0KCBcZnJhY3taIFx0aW1lcyBcc2lnbWF9e01vRX0gXHJpZ2h0KV4yDQpcXQ0KDQpNaXNhbG55YSB1bnR1ayBTdHJhdGlmaWVkIFNhbXBsaW5nOg0KDQo+ICQkDQpuID0gXGxlZnQoIFxmcmFjezEuOTYgXHRpbWVzIDM5MS4yNDIsOTB9ezV9IFxyaWdodCleMiA9IDU5NC44OTkNCj4gJCQNCg0KSmFkaSwgZGlidXR1aGthbiBzZWtpdGFyICoqNTk1IHJlc3BvbmRlbioqIGFnYXIgTW9FIG1lbmNhcGFpIDUgZGVuZ2FuIHRpbmdrYXQga2VwZXJjYXlhYW4gOTUlLg0KDQojIDcuIEtlc2ltcHVsYW4NCg0KQmVyZGFzYXJrYW4gcGVyaGl0dW5nYW4gTW9FIGRhcmkgYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSBtZXRvZGUgcHJvYmFiaWxpdHkgc2FtcGxpbmcgbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHlhbmcgbGViaWggYWt1cmF0IGRpYmFuZGluZ2thbiBkZW5nYW4gbm9uLXByb2JhYmlsaXR5IHNhbXBsaW5nLiBNZXRvZGUgU3RyYXRpZmllZCBTYW1wbGluZyBkYW4gQ2x1c3RlciBTYW1wbGluZyBtZW1iZXJpa2FuIE1hcmdpbiBvZiBFcnJvciB5YW5nIHBhbGluZyBrZWNpbCwgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIGluaSBsZWJpaCBhbmRhbCBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1haGFzaXN3YS4NCg0KU2ViYWxpa255YSwgbWV0b2RlIG5vbi1wcm9iYWJpbGl0eSBzYW1wbGluZyBjZW5kZXJ1bmcgbWVtaWxpa2kgTWFyZ2luIG9mIEVycm9yIHlhbmcgbGViaWggdGluZ2dpLCB0ZXJ1dGFtYSBwYWRhIENvbnZlbmllbmNlIFNhbXBsaW5nLiBPbGVoIGthcmVuYSBpdHUsIG1ldG9kZSBpbmkga3VyYW5nIGRpcmVrb21lbmRhc2lrYW4gdW50dWsgcGVuZWxpdGlhbiB5YW5nIG1lbWJ1dHVoa2FuIGVzdGltYXNpIHlhbmcgc2FuZ2F0IGFrdXJhdC4NCg0KIyA4LiBSZWtvbWVuZGFzaQ0KDQoxLiBHdW5ha2FuIG1ldG9kZSBTdHJhdGlmaWVkIGF0YXUgQ2x1c3RlciBTYW1wbGluZyB1bnR1ayBoYXNpbCBsZWJpaCBha3VyYXQuDQoyLiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgaGFueWEgamlrYSBrZXRlcmJhdGFzYW4gd2FrdHUgZGFuIHN1bWJlciBkYXlhIG1lbmphZGkga2VuZGFsYS4NCjMuIEppa2EgaW5naW4gTW9FIHNhbmdhdCBrZWNpbCwganVtbGFoIHNhbXBlbCBoYXJ1cyBsZWJpaCBiZXNhci4NCg0KIyA5LiBSZWZlcmVuc2kNCg0KDQpodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc2FtcGxpbmdfYW5kX3N1cnZleV90ZWNobmlxdWVzL2RvY3MvMDQtTWFyZ2luLW9mLUVycm9yLmh0bWwjY29udmVuaWVuY2Utc2FtcGxpbmcNCg0KaHR0cHM6Ly9yZXNlYXJjaHNjYXBlLmNvbS9ibG9nL3RoZS1teXRoLW9mLW1hcmdpbi1vZi1lcnJvcg0KDQpodHRwczovL2RvdmV0YWlsLmNvbS9zdXJ2ZXlzL21hcmdpbi1vZi1lcnJvci8NCg0KaHR0cHM6Ly93d3cucXVhbHRyaWNzLmNvbS9leHBlcmllbmNlLW1hbmFnZW1lbnQvcmVzZWFyY2gvbWFyZ2luLW9mLWVycm9yLw0KDQpodHRwczovL3BtYy5uY2JpLm5sbS5uaWguZ292L2FydGljbGVzL1BNQzQ4MTc2NDUvDQoNCg0K