Tugas Individu

Ukuran Pemusatan Data

Foto Diri

Praktikum 1

Mean, Median, dan Modus adalah tiga ukuran pemusatan data yang sering digunakan dalam statistika. Dalam praktikum 1 ini akan membahas konsep dasar dan langkah-langkah menghitung Mean, Median, dan Modus untuk data kelompok.

Contoh kasus

Berikut adalah tabel distribusi nilai berat badan anak untuk 30 anak:

Interval Kelas Frekuensi (f)
21 - 25 2
26 - 30 8
31 - 35 9
36 - 40 6
41 - 45 3
46 - 50 2

Mean untuk Data Kelompok

Definisi Mean (Rata-rata):

Mean, atau rata-rata, adalah ukuran pemusatan data yang diperoleh dengan membagi jumlah total nilai dengan jumlah data. Pada data kelompok, mean dihitung dengan mempertimbangkan titik tengah setiap kelas dan frekuensinya.

Rumus Mean (Rata-rata):

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \]

Dimana:

(\(f\))=Frekuensi setiap kelas

(\(x\))= Titik tengah kelas interval

(\(Σf\))=Jumlah total frekuensi

(\(Σf \cdot x\))=Jumlah produk antara frekuensi dan titik tengah

Langkah-langkah Menghitung Mean:

Langkah 1: Tentukan Titik Tengah (\(x\)) untuk setiap interval kelas. \[ \text{Nilai Tengah} = \dfrac{\text{Batas Bawah} + \text{Batas Atas}}{2} \] \[ \begin{split} \text{Nilai Tengah} = \frac{21 + 25}{2} = 23 \\ \text{Nilai Tengah} = \frac{26 + 30}{2} = 28 \\ \text{Nilai Tengah} = \frac{31 + 35}{2} = 33 \\ \text{Nilai Tengah} = \frac{36 + 40}{2} = 38 \\ \text{Nilai Tengah} = \frac{41 + 45}{2} = 43 \\ \text{Nilai Tengah} = \frac{46 + 50}{2} = 48  \end{split} \] Langkah 2: Hitung \(f \cdot x\) untuk setiap kelas.

Interval Kelas Frekuensi \((f)\) Nilai Tengah \((x)\) \(f \cdot x\)
21 - 25 2 23 \(2 \cdot 23 = 46\)
26 - 30 8 28 \(8 \cdot 28 = 224\)
31 - 35 9 33 \(9 \cdot 33 = 297\)
36 - 40 6 38 \(6 \cdot 38 = 228\)
41 - 45 3 43 \(3 \cdot 43 = 129\)
46 - 50 2 48 \(2 \cdot 48 = 96\)

Langkah 3: Hitung Total (\(f \cdot x\)) dan \(f\).

Hitung Total (\(f \cdot x\)) \[ \sum f \cdot x=46+224+297+228+129+96=1020\\ \sum f \cdot x=1020 \] Hitung Total \(f\) \[ \sum f =2+8+9+6+3+2=30\\ \sum f =30 \] Langkah 4: Hitung Mean (Rata-rata)

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \] \[ \text{Mean} = \dfrac{\text{1020}}{30}=34 \]

Boxplot Mean:

Interpretasi berdasarkan mean:

Rata-rata nilai berat badan anak dari semua anak adalah 34. Ini berarti jika seluruh nilai siswa dijumlahkan dan dibagi rata di antara mereka, setiap siswa akan memiliki berat badan 34. Mean menggambarkan kecenderungan sentral semua data, tetapi bisa dipengaruhi oleh nilai ekstrim (terlalu tinggi atau terlalu rendah).

Median untuk Data Kelompok

Definisi Median (Nilai tengah):

Median adalah nilai yang membagi data menjadi dua bagian yang sama, di mana setengah data berada di bawahnya dan setengah lainnya di atasnya. Dalam data kelompok, median dihitung dengan menggunakan frekuensi kumulatif untuk menemukan kelas median.

Rumus Median:

\[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \] Dimana:

\(t_b\) = Tepi batas bawah kelas median

\(n\) = Jumlah total data(untuk menentukan posisi kelas median)

\(f_k\) = Frekuensi kumulatif sebelum kelas median

\(f_m\) = Frekuensi kelas median

\(c\) = Panjang kelas

Langkah-langkah Menghitung Median:

Langkah 1: Menghitung frekuensi kumulatif.

Frekuensi kumulatif adalah jumlah total frekuensi dari kelas interval sebelumnya dan kelas interval saat ini. Untuk menghitung frekuensi kumulatif, kita cukup menjumlahkan frekuensi untuk setiap interval kelas berturut-turut.

Interval Kelas Frekuensi \((f)\) Total Frekuensi pada setiap interval \((Σf)\)
21 - 25 2 2
26 - 30 8 2 + 8 = 10
31 - 35 9 10 + 9 = 19
36 - 40 6 19 + 6 = 25
41 - 45 3 25 + 3 = 28
46 - 50 2 28 + 2 = 30

Langkah 2: Tentukan Posisi Median (n / 2) Posisi median adalah \[ \text{Posisi median} = \dfrac{\text{n}}{2} \] \[ \text{Posisi median} = \dfrac{\text{30}}{2}=15 \]

Langkah 3: Hitung Parameter untuk Rumus Median

  1. Tepi Batas Bawah Kelas Median (\(t_b\))

    Tepi batas bawah kelas median dihitung dengan mengurangi 0.5 dari batas bawah kelas median:

    \[ t_b = 31 - 0.5 = 30.5 \]

  2. Frekuensi Kelas Median (\(f_m\))

    Frekuensi kelas median adalah frekuensi dari kelas median yang telah ditentukan sebelumnya, yaitu 9 .

    \[ f_m = 9 \]

  3. Frekuensi Kumulatif Sebelum Kelas Median (\(f_k\))

    Frekuensi kumulatif sebelum kelas median adalah total kumulatif frekuensi sampai kelas sebelum kelas median, yaitu 10.

    \[ f_k = 10 \]

  4. Panjang Kelas (\(c\))

    Panjang kelas dihitung sebagai selisih antara batas atas dan batas bawah kelas median:

    \[ c = 35 - 31 = 5 \]

Langkah 4: Substitusi ke Rumus Median

Rumus Median:

\[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

Substitusi nilai-nilai yang telah dihitung:

\[ \text{Median} = 30.5 + \left( \frac{15 - 10}{9} \right) \cdot 5 \]

\[ \text{Median} = 30.5 + \left( \frac{5}{9} \right) \cdot 5 \]

\[ \text{Median} = 30.5 + 2.78 \]

\[ \text{Median} = 33.28 \]

Boxplot Median:

Interpretasi berdasarkan median::

Berdasarkan perhitungan, nilai median dari data kelompok adalah 33.28. Ini berarti bahwa 50% dari anak-anak memiliki berat badan di bawah 33.28, dan 50% lainnya memiliki berat badan di atas nilai tersebut. Median ini memberi gambaran yang lebih baik mengenai posisi pusat data, terutama ketika data memiliki nilai ekstrim (outliers), karena median tidak dipengaruhi oleh nilai ekstrem seperti mean. Dalam hal ini, nilai median menunjukkan kecenderungan sentral yang lebih representatif untuk data berat badan anak-anak yang diperoleh dalam distribusi tersebut.

Modus untuk Data Kelompok

Definisi Modus (Nilai yang paling sering muncul):

Modus adalah nilai atau kelas yang memiliki frekuensi tertinggi dalam suatu data. Pada data kelompok, modus dihitung dengan menggunakan kelas yang memiliki frekuensi tertinggi, yaitu kelas modus.

Rumus Modus:

\[ \text{Median} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas modus

\(d_1\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas sebelumnya

\(d_2\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas setelahnya

\(c\) = Panjang kelas

Langkah-langkah Menghitung Modus:

Langkah 1: Menentukan Kelas Modus.

Interval Kelas Frekuensi (f)
21 - 25 2
26 - 30 8
31 - 35 9
36 - 40 6
41 - 45 3
46 - 50 2

Kelas modus adalah kelas dengan frekuensi tertinggi, yaitu kelas 31 - 35 dengan frekuensi \(f_1 = 9\).

Langkah 2: Menentukan Parameter untuk Rumus Modus

  1. Tepi Batas Bawah Kelas Median (\(t_b\))

    Tepi batas bawah kelas median dihitung dengan mengurangi 0.5 dari batas bawah kelas median:

    \[ t_b = 31 - 0.5 = 30.5 \]

  2. Selisih antara frekuensi kelas modus dengan frekuensi kelas sebelumnya \(d_1\)

    \(d_1 = f_1 - f_0 = 9 - 8 = 1\)

  3. Selisih antara frekuensi kelas modus dengan frekuensi kelas setelahnya \(d_2\)

\(d_2 = f_1 - f_2 = 9 - 6 = 3\)

  1. Panjang Kelas (\(c\))

    Panjang kelas dihitung sebagai selisih antara batas atas dan batas bawah kelas modus:

    \[ c = 35 - 31 = 5 \]

Langkah 3: Substitusi ke Rumus Modus

Rumus Modus: \[ \text{Modus} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

Substitusi nilai-nilai yang telah dihitung ke dalam rumus modus:

\[ \text{Modus} = 30.5 + \left( \frac{1}{1 + 3} \right) \cdot 5 \]

\[ \text{Modus} = 30.5 + \left( \frac{1}{4} \right) \cdot 5 \]

\[ \text{Modus} = 30.5 + 1.25 \]

\[ \text{Modus} = 31.75 \]

Boxplot Modus:

Interpretasi berdasarkan modus::

Modus dari data kelompok ini adalah 31.75. Artinya, kelas interval 31 - 35 memiliki frekuensi tertinggi, dan modus memberikan gambaran tentang nilai yang paling sering muncul dalam distribusi data. Modus ini menggambarkan kecenderungan pusat dari data berdasarkan frekuensi tertinggi, tetapi tidak selalu menggambarkan nilai yang sebenarnya paling banyak muncul jika data tidak memiliki distribusi yang simetris.

Praktikum 2

Pada bagian ini bertujuan untuk mengajarkan dan melatih kita dalam menghitung ukuran pemusatan data (mean, median, dan modus) pada data kelompok yang diambil dari studi kasus dalam bidang bisnis, kesehatan, dan pendidikan.

Bisnis

Studi Kasus Bisnis: Penjualan Produk dalam Satu Bulan

Deskripsi Kasus: Sebuah toko mencatat jumlah produk yang terjual setiap hari selama sebulan (30 hari). Data penjualan dikelompokkan berdasarkan rentang jumlah produk yang terjual.

Interval Kelas Frekuensi (f)
10 - 20 6
21 - 30 15
31 - 40 9

Perhitungan mean, median, dan modus:

  1. Menghitung Mean

Rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \]

Dimana:

(\(f\))=Frekuensi setiap kelas

(\(x\))= Titik tengah kelas interval

(\(Σf\))=Jumlah total frekuensi

(\(Σf \cdot x\))=Jumlah produk antara frekuensi dan titik tengah

Interval Kelas Frekuensi \((f)\) Nilai Tengah \((x)\) \(f \cdot x\)
10 - 20 6 15 \(6 \cdot 15 = 90\)
21 - 30 15 25 \(15 \cdot 25 = 375\)
31 - 40 9 35 \(9 \cdot 35 = 315\)
Total 30 - 780

Substitusi ke rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \]

\[ \text{Mean} = \dfrac{\text{780}}{30}=26 \] 2. Menghitung Median

Rumus:

\[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas median

\(n\) = Jumlah total data(untuk menentukan posisi kelas median)

\(f_k\) = Frekuensi kumulatif sebelum kelas median

\(f_m\) = Frekuensi kelas median

\(c\) = Panjang kelas

Langkah- langkah: a. menentukan posisi median

\[ \text{Posisi median} = \dfrac{\text{n}}{2} \]

\[ \text{Posisi median} = \dfrac{\text{30}}{2}=15 \]

  1. Kelas median: 21–30 (karena posisi median ada di kelas ini).

  2. Parameter:

Interval Kelas Frekuensi \((f)\) Total Frekuensi pada setiap interval \((Σf)\)
10 - 20 6 6
21 - 30 15 6 + 15 = 21
31 - 40 9 21 + 9 = 30

\(t_b\)=21−0.5=20.5

\(f_k\)=6

\(f_m\) =15

\(c\)=10

Substitusi ke rumus: \[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

\[ \text{Median} = 20.5 + \left( \frac{15 - 6}{15} \right) \cdot 10 \]

\[ \text{Median} = 20.5 + \left( \frac{9}{15} \right) \cdot 10 \]

\[ \text{Median} = 20.5 + 6 \]

\[ \text{Median} = 26.5 \]

  1. Menghitung Modus Rumus:

\[ \text{Modus} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas modus

\(d_1\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas sebelumnya

\(d_2\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas setelahnya

\(c\) = Panjang kelas

Langkah- langkah:

  1. Kelas modus: 21–30 (frekuensi terbesar = 15)
  2. Parameter:

\(t_b\) =21−0.5=20.5

\(d_1\) =15−6=9

\(d_2\) =15−9=6

\(c\) =10

Substitusi ke rumus:

\[ \text{Modus} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

\[ \text{Modus} = 20.5 + \left( \frac{9}{9 + 6} \right) \cdot 10 \]

\[ \text{Modus} = 20.5 + \left( \frac{9}{15} \right) \cdot 10 \]

\[ \text{Modus} = 20.5 + 6 \]

\[ \text{Modus} = 26.5 \]

Kesimpulan dan Analisis (Bisnis): Mean menunjukkan rata-rata penjualan harian adalah 26 produk. Median menunjukkan bahwa separuh hari memiliki penjualan di atas 26.5 produk. Modus menunjukkan bahwa rentang 21–30 produk adalah yang paling sering terjadi. Distribusi data yang simetris (mean, median, dan modus hampir sama) mengindikasikan kestabilan penjualan harian. Strategi bisnis dapat difokuskan untuk meningkatkan penjualan di rentang 31–40.

Kesehatan

Studi Kasus Kesehatan: Tekanan Darah Pasien dalam Satu Minggu

Deskripsi Kasus:

Data tekanan darah sistolik dari 50 pasien yang diklasifikasikan ke dalam interval.

Interval Kelas Frekuensi (f)
110–120 10
121–130 25
131–140 15

Perhitungan mean, median, dan modus:

  1. Menghitung Mean

Rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \] Dimana:

(\(f\))=Frekuensi setiap kelas

(\(x\))= Titik tengah kelas interval

(\(Σf\))=Jumlah total frekuensi

(\(Σf \cdot x\))=Jumlah produk antara frekuensi dan titik tengah

Interval Kelas Frekuensi \((f)\) Nilai Tengah \((x)\) \(f \cdot x\)
110 - 120 10 115 \(10 \cdot 115 = 1150\)
121 - 130 25 125 \(25 \cdot 125 = 3125\)
131 - 140 15 135 \(15 \cdot 135 = 2025\)
Total 50 - 6300

Substitusi ke rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \]

\[ \text{Mean} = \dfrac{\text{6300}}{50}=126 \] 2. Menghitung Median

Rumus:

\[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas median

\(n\) = Jumlah total data(untuk menentukan posisi kelas median)

\(f_k\) = Frekuensi kumulatif sebelum kelas median

\(f_m\) = Frekuensi kelas median

\(c\) = Panjang kelas

Langkah- langkah: a. menentukan posisi median

\[ \text{Posisi median} = \dfrac{\text{n}}{2} \]

\[ \text{Posisi median} = \dfrac{\text{50}}{2}=25 \]

  1. Kelas median: 121–130 (karena posisi median ada di kelas ini).

  2. Parameter:

Interval Kelas Frekuensi \((f)\) Total Frekuensi pada setiap interval \((Σf)\)
110 - 120 10 10
121 - 130 25 10 + 25 = 35
131 - 140 15 35 + 15 = 50

\(t_b\)=121−0.5=120.5

\(f_k\)=10

\(f_m\) =25

\(c\)=10

Substitusi ke rumus: \[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

\[ \text{Median} = 120.5 + \left( \frac{25 - 10}{25} \right) \cdot 10 \]

\[ \text{Median} = 120.5 + \left( \frac{15}{25} \right) \cdot 10 \]

\[ \text{Median} = 120.5 + 6 \]

\[ \text{Median} = 126.5 \]

  1. Menghitung Modus Rumus:

\[ \text{Modus} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas modus

\(d_1\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas sebelumnya

\(d_2\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas setelahnya

\(c\) = Panjang kelas

Langkah- langkah:

Interval Kelas Frekuensi (f)
110–120 10
121–130 25
131–140 15
  1. Kelas modus: 121–130 (frekuensi terbesar = 25)
  2. Parameter:

\(t_b\) =121−0.5=120.5

\(d_1\) =25−10=15

\(d_2\) =25−15=10

\(c\) =10

Substitusi ke rumus:

\[ \text{Modus} = 120.5 + \left( \frac{15}{15 + 10} \right) \cdot 10 \]

\[ \text{Modus} = 120.5 + \left( \frac{15}{25} \right) \cdot 10 \]

\[ \text{Modus} = 120.5 + 6 \]

\[ \text{Modus} = 126.5 \]

Kesimpulan dan Analisis (Kesehatan): Mean menunjukkan rata-rata tekanan darah pasien adalah 126 mmHg, berada dalam rentang normal. Median menunjukkan separuh pasien memiliki tekanan darah di atas 126.5 mmHg, separuh lainnya di bawah. Modus menunjukkan bahwa rentang tekanan darah 121–130 mmHg paling sering terjadi, mendominasi kelompok pasien. Distribusi data yang sangat simetris (mean, median, dan modus hampir identik) menunjukkan bahwa mayoritas pasien memiliki tekanan darah normal. Dengan akurasi harus mencapai 99%, hasil ini mendukung kesimpulan bahwa pasien umumnya sehat.

Pendidikan

Studi Kasus Pendidikan: Nilai Ujian Akhir Matematika Siswa dalam Kelas

Deskripsi Kasus:

Sebanyak 40 siswa dalam satu kelas mengikuti ujian akhir. Nilai mereka dikelompokkan ke dalam interval berikut:

Interval Kelas Frekuensi (f)
50–60 5
61–70 10
71–80 15
81–90 8
91–100 2

Perhitungan mean, median, dan modus:

  1. Menghitung Mean

Rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \] Dimana:

(\(f\))=Frekuensi setiap kelas

(\(x\))= Titik tengah kelas interval

(\(Σf\))=Jumlah total frekuensi

(\(Σf \cdot x\))=Jumlah produk antara frekuensi dan titik tengah

Interval Kelas Frekuensi \((f)\) Nilai Tengah \((x)\) \(f \cdot x\)
50 - 60 5 55 \(5 \cdot 55 = 275\)
61 - 70 10 65 \(10 \cdot 65 = 650\)
71 - 80 15 75 \(15 \cdot 75 = 1125\)
81 - 90 8 85 \(8 \cdot 85 = 680\)
91 - 100 2 95 \(2 \cdot 95 = 190\)
Total 40 - 2920

Substitusi ke rumus:

\[ \text{Mean} = \dfrac{\text{\(Σf \cdot x\)}}{Σf} \] \[ \text{Mean} = \dfrac{\text{2920}}{40}=73 \] 2. Menghitung Median

Rumus:

\[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas median

\(n\) = Jumlah total data(untuk menentukan posisi kelas median)

\(f_k\) = Frekuensi kumulatif sebelum kelas median

\(f_m\) = Frekuensi kelas median

\(c\) = Panjang kelas

Langkah- langkah: a. menentukan posisi median

\[ \text{Posisi median} = \dfrac{\text{n}}{2} \] \[ \text{Posisi median} = \dfrac{\text{40}}{2}=20 \] b. Kelas median: 71–80 (karena posisi median ada di kelas ini).

  1. Parameter:
Interval Kelas Frekuensi \((f)\) Total Frekuensi pada setiap interval \((Σf)\)
50 - 60 5 5
61 - 70 10 5 + 10 = 15
71 - 80 15 15 + 15 = 30
81 - 90 8 30 + 8 = 38
91 - 100 2 38 + 2 = 40

\(t_b\)=71−0.5=70.5

\(f_k\)=15

\(f_m\) =15

\(c\)=10

Substitusi ke rumus: \[ \text{Median} = t_b + \left( \frac{\frac{n}{2} - f_k}{f_m} \right) \cdot c \]

\[ \text{Median} = 70.5 + \left( \frac{20 - 15}{15} \right) \cdot 10 \]

\[ \text{Median} = 70.5 + \left( \frac{5}{15} \right) \cdot 10 \]

\[ \text{Median} = 70.5 + 3.33 \]

\[ \text{Median} = 73.83 \]

  1. Menghitung Modus Rumus:

\[ \text{Modus} = t_b + \left( \frac{d_1}{d_1 + d_2} \right) \cdot c \]

Dimana:

\(t_b\) = Tepi batas bawah kelas modus

\(d_1\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas sebelumnya

\(d_2\) = Selisih antara frekuensi kelas modus dengan frekuensi kelas setelahnya

\(c\) = Panjang kelas

Langkah- langkah:

Interval Kelas Frekuensi (f)
50–60 5
61–70 10
71–80 15
81–90 8
91–100 2
  1. Kelas modus: 71–80 (frekuensi terbesar = 15)
  2. Parameter:

\(t_b\) =71−0.5=70.5

\(d_1\) =15−10=5

\(d_2\) =15−8=7

\(c\) =10

Substitusi ke rumus:

\[ \text{Modus} = 70.5 + \left( \frac{5}{5 + 7} \right) \cdot 10 \]

\[ \text{Modus} = 70.5 + \left( \frac{5}{12} \right) \cdot 10 \]

\[ \text{Modus} = 70.5 + 4.17 \]

\[ \text{Modus} = 74.67 \]

Kesimpulan dan Analisis (Pendidikan): Mean menunjukkan rata-rata nilai siswa adalah 73, menunjukkan performa kelas secara umum cukup baik dan berada di atas nilai lulus standar. Median menunjukkan nilai tengah adalah 73.83, artinya separuh siswa mendapatkan nilai di atas 73.83, dan separuh lainnya di bawah. Modus menunjukkan bahwa rentang nilai 71–80 adalah yang paling sering terjadi. Distribusi data sedikit condong ke kanan, karena modus lebih tinggi dari mean. Fokus dapat diberikan pada siswa yang berada di bawah nilai rata-rata (kelas 50–60) untuk meningkatkan pencapaian mereka.

Referensi

_Bakti Siregar, M.Sc., CDS. (2024). Ukuran Pemusatan Data. Diambil dari https://bookdown.org/dsciencelabs/statistika_dasar/_book/Ukuran_Pemusatan_Data.html#mean-rata-rata_

Sutisna, I. (2020). Statistika penelitian. Universitas Negeri Gorontalo, 1(1), 1-15.

Pratikno, A. S., Prastiwi, A. A., & Ramahwati, S. (2022). Ukuran Pemusatan Rata-rata.

Handayani, I., Ikasari, I. H., & Kom, M. (2019). Statistika Dasar. Purwokerto: Cv. Pena Persada.

Sukoriyanto, S., & Khurin’in, K. I. (2023, January). Statistical reasoning of junior high school students in solving central tendency problems mean, median, and modus. In AIP Conference Proceedings (Vol. 2569, No. 1). AIP Publishing.

LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1Ig0Kc3VidGl0bGU6ICJVa3VyYW4gUGVtdXNhdGFuIERhdGEiDQphdXRob3I6ICJPbGl2aWEgTWVpbGluZGEgRGF2dGluIFBlc2lyZXJvbiINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgc3JjPSJCQS5qcGciIHdpZHRoPSIzMDAiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyIgYWx0PSJGb3RvIERpcmkiPg0KDQoNCg0KIyAgUHJha3Rpa3VtIDENCg0KKipNZWFuKiosICoqTWVkaWFuKiosIGRhbiAqKk1vZHVzKiogYWRhbGFoIHRpZ2EgdWt1cmFuIHBlbXVzYXRhbiBkYXRhIHlhbmcgc2VyaW5nIGRpZ3VuYWthbiBkYWxhbSBzdGF0aXN0aWthLiBEYWxhbSBwcmFrdGlrdW0gMSBpbmkgYWthbiBtZW1iYWhhcyBrb25zZXAgZGFzYXIgZGFuIGxhbmdrYWgtbGFuZ2thaCBtZW5naGl0dW5nIE1lYW4sIE1lZGlhbiwgZGFuIE1vZHVzIHVudHVrIGRhdGEga2Vsb21wb2suDQoNCiMjIENvbnRvaCBrYXN1cw0KQmVyaWt1dCBhZGFsYWggdGFiZWwgZGlzdHJpYnVzaSBuaWxhaSBiZXJhdCBiYWRhbiBhbmFrIHVudHVrIDMwIGFuYWs6DQoNCnwgKipJbnRlcnZhbCBLZWxhcyoqIHwgKipGcmVrdWVuc2kgKGYpKiogfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDIxIC0gMjUgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwNCnwgMjYgLSAzMCAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgfA0KfCAzMSAtIDM1ICAgICAgICAgICAgfCA5ICAgICAgICAgICAgICAgICB8DQp8IDM2IC0gNDAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgIHwNCnwgNDEgLSA0NSAgICAgICAgICAgIHwgMyAgICAgICAgICAgICAgICAgfA0KfCA0NiAtIDUwICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICB8DQoNCiMjIE1lYW4gdW50dWsgRGF0YSBLZWxvbXBvaw0KIyMjICoqRGVmaW5pc2kgTWVhbiAoUmF0YS1yYXRhKSoqOiAgDQpNZWFuLCBhdGF1IHJhdGEtcmF0YSwgYWRhbGFoIHVrdXJhbiBwZW11c2F0YW4gZGF0YSB5YW5nIGRpcGVyb2xlaCBkZW5nYW4gbWVtYmFnaSBqdW1sYWggdG90YWwgbmlsYWkgZGVuZ2FuIGp1bWxhaCBkYXRhLiBQYWRhIGRhdGEga2Vsb21wb2ssIG1lYW4gZGloaXR1bmcgZGVuZ2FuIG1lbXBlcnRpbWJhbmdrYW4gdGl0aWsgdGVuZ2FoIHNldGlhcCBrZWxhcyBkYW4gZnJla3VlbnNpbnlhLg0KDQojIyMgKipSdW11cyBNZWFuIChSYXRhLXJhdGEpKio6DQoNCiQkDQpcdGV4dHtNZWFufSA9IFxkZnJhY3tcdGV4dHtcKM6jZiBcY2RvdCB4XCl9fXvOo2Z9DQokJA0KDQoNCkRpbWFuYToNCg0KKFwoZlwpKT1GcmVrdWVuc2kgc2V0aWFwIGtlbGFzDQoNCihcKHhcKSk9IFRpdGlrIHRlbmdhaCBrZWxhcyBpbnRlcnZhbA0KDQooXCjOo2ZcKSk9SnVtbGFoIHRvdGFsIGZyZWt1ZW5zaQ0KDQooXCjOo2YgXGNkb3QgeFwpKT1KdW1sYWggcHJvZHVrIGFudGFyYSBmcmVrdWVuc2kgZGFuIHRpdGlrIHRlbmdhaA0KDQoNCiMjIyAqKkxhbmdrYWgtbGFuZ2thaCBNZW5naGl0dW5nIE1lYW4qKjoNCioqTGFuZ2thaCAxOiBUZW50dWthbiBUaXRpayBUZW5nYWggKFwoeFwpKSB1bnR1ayBzZXRpYXAgaW50ZXJ2YWwga2VsYXMuKioNCiQkDQpcdGV4dHtOaWxhaSBUZW5nYWh9ID0gXGRmcmFje1x0ZXh0e0JhdGFzIEJhd2FofSArIFx0ZXh0e0JhdGFzIEF0YXN9fXsyfQ0KJCQNCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtOaWxhaSBUZW5nYWh9ID0gXGZyYWN7MjEgKyAyNX17Mn0gPSAyMyBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSA9IFxmcmFjezI2ICsgMzB9ezJ9ID0gMjggXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gPSBcZnJhY3szMSArIDM1fXsyfSA9IDMzIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ID0gXGZyYWN7MzYgKyA0MH17Mn0gPSAzOCBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSA9IFxmcmFjezQxICsgNDV9ezJ9ID0gNDMgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gPSBcZnJhY3s0NiArIDUwfXsyfSA9IDQ4wqANClxlbmR7c3BsaXR9DQokJA0KKipMYW5na2FoIDI6IEhpdHVuZyBcKGYgXGNkb3QgeFwpIHVudHVrIHNldGlhcCBrZWxhcy4qKg0KDQp8ICoqSW50ZXJ2YWwgS2VsYXMqKiB8ICoqRnJla3VlbnNpIFwoKGYpXCkqKiB8ICoqTmlsYWkgVGVuZ2FoIFwoKHgpXCkqKiB8ICoqXCggZiBcY2RvdCB4IFwpKiogfA0KfDotLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS06fA0KfCAyMSAtIDI1ICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICB8IDIzICAgICAgICAgICAgICAgICAgICAgfCBcKCAyIFxjZG90IDIzID0gNDYgXCkgfA0KfCAyNiAtIDMwICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICB8IDI4ICAgICAgICAgICAgICAgICAgICAgfCBcKCA4IFxjZG90IDI4ID0gMjI0IFwpIHwNCnwgMzEgLSAzNSAgICAgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgICAgfCAzMyAgICAgICAgICAgICAgICAgICAgIHwgXCggOSBcY2RvdCAzMyA9IDI5NyBcKSB8DQp8IDM2IC0gNDAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgIHwgMzggICAgICAgICAgICAgICAgICAgICB8IFwoIDYgXGNkb3QgMzggPSAyMjggXCkgfA0KfCA0MSAtIDQ1ICAgICAgICAgICAgfCAzICAgICAgICAgICAgICAgICAgICB8IDQzICAgICAgICAgICAgICAgICAgICAgfCBcKCAzIFxjZG90IDQzID0gMTI5IFwpIHwNCnwgNDYgLSA1MCAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgfCA0OCAgICAgICAgICAgICAgICAgICAgIHwgXCggMiBcY2RvdCA0OCA9IDk2IFwpIHwNCg0KKipMYW5na2FoIDM6IEhpdHVuZyBUb3RhbCAoXChmIFxjZG90IHhcKSkgZGFuIFwoZlwpLioqDQoNCkhpdHVuZyBUb3RhbCAoXChmIFxjZG90IHhcKSkNCiQkDQpcc3VtIGYgXGNkb3QgeD00NisyMjQrMjk3KzIyOCsxMjkrOTY9MTAyMFxcDQpcc3VtIGYgXGNkb3QgeD0xMDIwDQokJA0KSGl0dW5nIFRvdGFsIFwoZlwpDQokJA0KXHN1bSBmID0yKzgrOSs2KzMrMj0zMFxcDQpcc3VtIGYgPTMwDQokJA0KKipMYW5na2FoIDQ6IEhpdHVuZyBNZWFuIChSYXRhLXJhdGEpKioNCg0KJCQNClx0ZXh0e01lYW59ID0gXGRmcmFje1x0ZXh0e1wozqNmIFxjZG90IHhcKX19e86jZn0NCiQkDQokJA0KXHRleHR7TWVhbn0gPSBcZGZyYWN7XHRleHR7MTAyMH19ezMwfT0zNA0KJCQNCg0KIyMjICoqQm94cGxvdCBNZWFuKio6DQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQpkYXRhX3RhbnBhX291dGxpZXJzIDwtIHJlcChjKDIzLCAyOCwgMzMsIDM4LCA0MywgNDgpLCB0aW1lcyA9IGMoMiwgOCwgOSwgNiwgMywgMikpDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKGRhdGFfdGFucGFfb3V0bGllcnMsIDE1LCA3MCkNCg0KbWVhbl90YW5wYV9vdXRsaWVycyA8LSBtZWFuKGRhdGFfdGFucGFfb3V0bGllcnMpDQptZWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIE5pbGFpID0gYyhkYXRhX3RhbnBhX291dGxpZXJzLCBkYXRhX2Rlbmdhbl9vdXRsaWVycyksDQogIEtlbG9tcG9rID0gcmVwKGMoIlRhbnBhIE91dGxpZXJzIiwgIkRlbmdhbiBPdXRsaWVycyIpLCANCiAgICAgICAgICAgICAgICAgdGltZXMgPSBjKGxlbmd0aChkYXRhX3RhbnBhX291dGxpZXJzKSwgbGVuZ3RoKGRhdGFfZGVuZ2FuX291dGxpZXJzKSkpDQopDQoNCnBsb3QgPC0gcGxvdF9seSgNCiAgZGF0YSwgDQogIHkgPSB+TmlsYWksIA0KICBjb2xvciA9IH5LZWxvbXBvaywgDQogIHR5cGUgPSAiYm94IiwgDQogIGJveHBvaW50cyA9ICJvdXRsaWVycyINCikgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBNZWFuIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkgQmVyYXQgQmFkYW4gKGtnKSIpLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJLZWxvbXBvayIpLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAiVGFucGEgT3V0bGllcnMiLA0KICAgICAgICB5ID0gbWVhbl90YW5wYV9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWFuOiIsIHJvdW5kKG1lYW5fdGFucGFfb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKSwNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAiRGVuZ2FuIE91dGxpZXJzIiwNCiAgICAgICAgeSA9IG1lYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lYW46Iiwgcm91bmQobWVhbl9kZW5nYW5fb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQpwbG90DQoNCmBgYA0KDQoNCg0KIyMjICoqSW50ZXJwcmV0YXNpIGJlcmRhc2Fya2FuIG1lYW4qKjoNCg0KUmF0YS1yYXRhIG5pbGFpIGJlcmF0IGJhZGFuIGFuYWsgZGFyaSBzZW11YSBhbmFrIGFkYWxhaCAzNC4gSW5pIGJlcmFydGkgamlrYSBzZWx1cnVoIG5pbGFpIHNpc3dhIGRpanVtbGFoa2FuIGRhbiBkaWJhZ2kgcmF0YSBkaSBhbnRhcmEgbWVyZWthLCBzZXRpYXAgc2lzd2EgYWthbiBtZW1pbGlraSBiZXJhdCBiYWRhbiAzNC4gTWVhbiBtZW5nZ2FtYmFya2FuIGtlY2VuZGVydW5nYW4gc2VudHJhbCBzZW11YSBkYXRhLCB0ZXRhcGkgYmlzYSBkaXBlbmdhcnVoaSBvbGVoIG5pbGFpIGVrc3RyaW0gKHRlcmxhbHUgdGluZ2dpIGF0YXUgdGVybGFsdSByZW5kYWgpLg0KDQojIyBNZWRpYW4gdW50dWsgRGF0YSBLZWxvbXBvaw0KIyMjICoqRGVmaW5pc2kgTWVkaWFuIChOaWxhaSB0ZW5nYWgpKio6ICANCg0KTWVkaWFuIGFkYWxhaCBuaWxhaSB5YW5nIG1lbWJhZ2kgZGF0YSBtZW5qYWRpIGR1YSBiYWdpYW4geWFuZyBzYW1hLCBkaSBtYW5hIHNldGVuZ2FoIGRhdGEgYmVyYWRhIGRpIGJhd2FobnlhIGRhbiBzZXRlbmdhaCBsYWlubnlhIGRpIGF0YXNueWEuIERhbGFtIGRhdGEga2Vsb21wb2ssIG1lZGlhbiBkaWhpdHVuZyBkZW5nYW4gbWVuZ2d1bmFrYW4gZnJla3VlbnNpIGt1bXVsYXRpZiB1bnR1ayBtZW5lbXVrYW4ga2VsYXMgbWVkaWFuLg0KDQojIyMgKipSdW11cyBNZWRpYW4qKjoNClxbDQpcdGV4dHtNZWRpYW59ID0gdF9iICsgXGxlZnQoIFxmcmFje1xmcmFje259ezJ9IC0gZl9rfXtmX219IFxyaWdodCkgXGNkb3QgYw0KXF0NCkRpbWFuYToNCg0KIFwodF9iXCkgPSBUZXBpIGJhdGFzIGJhd2FoIGtlbGFzIG1lZGlhbg0KIA0KIFwoblwpID0gSnVtbGFoIHRvdGFsIGRhdGEodW50dWsgbWVuZW50dWthbiBwb3Npc2kga2VsYXMgbWVkaWFuKQ0KIA0KIFwoZl9rXCkgPSBGcmVrdWVuc2kga3VtdWxhdGlmIHNlYmVsdW0ga2VsYXMgbWVkaWFuDQogDQogXChmX21cKSA9IEZyZWt1ZW5zaSBrZWxhcyBtZWRpYW4NCiANCiBcKGNcKSA9IFBhbmphbmcga2VsYXMNCiANCiMjIyAqKkxhbmdrYWgtbGFuZ2thaCBNZW5naGl0dW5nIE1lZGlhbioqOg0KDQoqKkxhbmdrYWggMTogTWVuZ2hpdHVuZyBmcmVrdWVuc2kga3VtdWxhdGlmLioqDQoNCkZyZWt1ZW5zaSBrdW11bGF0aWYgYWRhbGFoIGp1bWxhaCB0b3RhbCBmcmVrdWVuc2kgZGFyaSBrZWxhcyBpbnRlcnZhbCBzZWJlbHVtbnlhIGRhbiBrZWxhcyBpbnRlcnZhbCBzYWF0IGluaS4gVW50dWsgbWVuZ2hpdHVuZyBmcmVrdWVuc2kga3VtdWxhdGlmLCBraXRhIGN1a3VwIG1lbmp1bWxhaGthbiBmcmVrdWVuc2kgdW50dWsgc2V0aWFwIGludGVydmFsIGtlbGFzIGJlcnR1cnV0LXR1cnV0Lg0KDQoNCnwgSW50ZXJ2YWwgS2VsYXMgfCBGcmVrdWVuc2kgXCgoZilcKSB8IFRvdGFsIEZyZWt1ZW5zaSBwYWRhIHNldGlhcCBpbnRlcnZhbCBcKCjOo2YpXCkgfA0KfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAyMSAtIDI1ICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAyNiAtIDMwICAgICAgICB8IDggICAgICAgICAgICAgICAgIHwgMiArIDggPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAzMSAtIDM1ICAgICAgICB8IDkgICAgICAgICAgICAgICAgIHwgMTAgKyA5ID0gMTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAzNiAtIDQwICAgICAgICB8IDYgICAgICAgICAgICAgICAgIHwgMTkgKyA2ID0gMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCA0MSAtIDQ1ICAgICAgICB8IDMgICAgICAgICAgICAgICAgIHwgMjUgKyAzID0gMjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCA0NiAtIDUwICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwgMjggKyAyID0gMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KDQoNCioqTGFuZ2thaCAyOiBUZW50dWthbiBQb3Npc2kgTWVkaWFuIChuIC8gMikqKg0KUG9zaXNpIG1lZGlhbiBhZGFsYWggDQokJA0KXHRleHR7UG9zaXNpIG1lZGlhbn0gPSBcZGZyYWN7XHRleHR7bn19ezJ9DQokJA0KJCQNClx0ZXh0e1Bvc2lzaSBtZWRpYW59ID0gXGRmcmFje1x0ZXh0ezMwfX17Mn09MTUNCiQkDQoNCg0KKipMYW5na2FoIDM6IEhpdHVuZyBQYXJhbWV0ZXIgdW50dWsgUnVtdXMgTWVkaWFuKioNCg0KMS4gKipUZXBpIEJhdGFzIEJhd2FoIEtlbGFzIE1lZGlhbiAoXCggdF9iIFwpKSoqDQoNCiAgIFRlcGkgYmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuIGRpaGl0dW5nIGRlbmdhbiBtZW5ndXJhbmdpIDAuNSBkYXJpIGJhdGFzIGJhd2FoIGtlbGFzIG1lZGlhbjoNCg0KICAgXFsNCiAgIHRfYiA9IDMxIC0gMC41ID0gMzAuNQ0KICAgXF0NCg0KMi4gKipGcmVrdWVuc2kgS2VsYXMgTWVkaWFuIChcKCBmX20gXCkpKioNCg0KICAgRnJla3VlbnNpIGtlbGFzIG1lZGlhbiBhZGFsYWggZnJla3VlbnNpIGRhcmkga2VsYXMgbWVkaWFuIHlhbmcgdGVsYWggZGl0ZW50dWthbiBzZWJlbHVtbnlhLCB5YWl0dSA5IC4NCg0KICAgXFsNCiAgIGZfbSA9IDkNCiAgIFxdDQoNCjMuICoqRnJla3VlbnNpIEt1bXVsYXRpZiBTZWJlbHVtIEtlbGFzIE1lZGlhbiAoXCggZl9rIFwpKSoqDQoNCiAgIEZyZWt1ZW5zaSBrdW11bGF0aWYgc2ViZWx1bSBrZWxhcyBtZWRpYW4gYWRhbGFoIHRvdGFsIGt1bXVsYXRpZiBmcmVrdWVuc2kgc2FtcGFpIGtlbGFzIHNlYmVsdW0ga2VsYXMgbWVkaWFuLCB5YWl0dSAxMC4NCg0KICAgXFsNCiAgIGZfayA9IDEwDQogICBcXQ0KDQo0LiAqKlBhbmphbmcgS2VsYXMgKFwoIGMgXCkpKioNCg0KICAgUGFuamFuZyBrZWxhcyBkaWhpdHVuZyBzZWJhZ2FpIHNlbGlzaWggYW50YXJhIGJhdGFzIGF0YXMgZGFuIGJhdGFzIGJhd2FoIGtlbGFzIG1lZGlhbjoNCg0KICAgXFsNCiAgIGMgPSAzNSAtIDMxID0gNQ0KICAgXF0NCg0KDQoqKkxhbmdrYWggNDogU3Vic3RpdHVzaSBrZSBSdW11cyBNZWRpYW4qKg0KDQpSdW11cyBNZWRpYW46DQoNClxbDQpcdGV4dHtNZWRpYW59ID0gdF9iICsgXGxlZnQoIFxmcmFje1xmcmFje259ezJ9IC0gZl9rfXtmX219IFxyaWdodCkgXGNkb3QgYw0KXF0NCg0KU3Vic3RpdHVzaSBuaWxhaS1uaWxhaSB5YW5nIHRlbGFoIGRpaGl0dW5nOg0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDMwLjUgKyBcbGVmdCggXGZyYWN7MTUgLSAxMH17OX0gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDMwLjUgKyBcbGVmdCggXGZyYWN7NX17OX0gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDMwLjUgKyAyLjc4DQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDMzLjI4DQpcXQ0KDQoNCg0KDQojIyMgKipCb3hwbG90IE1lZGlhbioqOg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgVGFucGEgT3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gcmVwKGMoMjMsIDI4LCAzMywgMzgsIDQzLCA0OCksIHRpbWVzID0gYygyLCA4LCA5LCA2LCAzLCAyKSkNCg0KIyBEYXRhIERlbmdhbiBPdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYyhkYXRhX3RhbnBhX291dGxpZXJzLCAxNSwgNzApDQoNCiMgTWVuZ2hpdHVuZyBNZWRpYW4NCm1lZGlhbl90YW5wYV9vdXRsaWVycyA8LSBtZWRpYW4oZGF0YV90YW5wYV9vdXRsaWVycykNCm1lZGlhbl9kZW5nYW5fb3V0bGllcnMgPC0gbWVkaWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KDQojIE1lbWJ1YXQgZGF0YSBmcmFtZSB1bnR1ayB2aXN1YWxpc2FzaQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBOaWxhaSA9IGMoZGF0YV90YW5wYV9vdXRsaWVycywgZGF0YV9kZW5nYW5fb3V0bGllcnMpLA0KICBLZWxvbXBvayA9IHJlcChjKCJUYW5wYSBPdXRsaWVycyIsICJEZW5nYW4gT3V0bGllcnMiKSwgDQogICAgICAgICAgICAgICAgIHRpbWVzID0gYyhsZW5ndGgoZGF0YV90YW5wYV9vdXRsaWVycyksIGxlbmd0aChkYXRhX2Rlbmdhbl9vdXRsaWVycykpKQ0KKQ0KDQojIE1lbWJ1YXQgcGxvdA0KcGxvdCA8LSBwbG90X2x5KA0KICBkYXRhLCANCiAgeSA9IH5OaWxhaSwgDQogIGNvbG9yID0gfktlbG9tcG9rLCANCiAgdHlwZSA9ICJib3giLCANCiAgYm94cG9pbnRzID0gIm91dGxpZXJzIiAgIyBNZW5hbXBpbGthbiB0aXRpayBvdXRsaWVycw0KKSAlPiUgDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBNZWRpYW4iLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOaWxhaSBCZXJhdCBCYWRhbiAoa2cpIiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIktlbG9tcG9rIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWRpYW5fdGFucGFfb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTWVkaWFuOiIsIGZvcm1hdChyb3VuZChtZWRpYW5fdGFucGFfb3V0bGllcnMsIDIpLCBuc21hbGwgPSAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWRpYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCBmb3JtYXQocm91bmQobWVkaWFuX2Rlbmdhbl9vdXRsaWVycywgMiksIG5zbWFsbCA9IDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCg0KYGBgDQoNCg0KDQoNCiMjIyAqKkludGVycHJldGFzaSBiZXJkYXNhcmthbiBtZWRpYW46Kio6DQoNCkJlcmRhc2Fya2FuIHBlcmhpdHVuZ2FuLCBuaWxhaSBtZWRpYW4gZGFyaSBkYXRhIGtlbG9tcG9rIGFkYWxhaCAzMy4yOC4gSW5pIGJlcmFydGkgYmFod2EgNTAlIGRhcmkgYW5hay1hbmFrIG1lbWlsaWtpIGJlcmF0IGJhZGFuIGRpIGJhd2FoIDMzLjI4LCBkYW4gNTAlIGxhaW5ueWEgbWVtaWxpa2kgYmVyYXQgYmFkYW4gZGkgYXRhcyBuaWxhaSB0ZXJzZWJ1dC4gTWVkaWFuIGluaSBtZW1iZXJpIGdhbWJhcmFuIHlhbmcgbGViaWggYmFpayBtZW5nZW5haSBwb3Npc2kgcHVzYXQgZGF0YSwgdGVydXRhbWEga2V0aWthIGRhdGEgbWVtaWxpa2kgbmlsYWkgZWtzdHJpbSAob3V0bGllcnMpLCBrYXJlbmEgbWVkaWFuIHRpZGFrIGRpcGVuZ2FydWhpIG9sZWggbmlsYWkgZWtzdHJlbSBzZXBlcnRpIG1lYW4uIERhbGFtIGhhbCBpbmksIG5pbGFpIG1lZGlhbiBtZW51bmp1a2thbiBrZWNlbmRlcnVuZ2FuIHNlbnRyYWwgeWFuZyBsZWJpaCByZXByZXNlbnRhdGlmIHVudHVrIGRhdGEgYmVyYXQgYmFkYW4gYW5hay1hbmFrIHlhbmcgZGlwZXJvbGVoIGRhbGFtIGRpc3RyaWJ1c2kgdGVyc2VidXQuDQoNCg0KDQojIyBNb2R1cyB1bnR1ayBEYXRhIEtlbG9tcG9rDQoNCiMjIyAqKkRlZmluaXNpIE1vZHVzIChOaWxhaSB5YW5nIHBhbGluZyBzZXJpbmcgbXVuY3VsKSoqOiAgDQoNCk1vZHVzIGFkYWxhaCBuaWxhaSBhdGF1IGtlbGFzIHlhbmcgbWVtaWxpa2kgZnJla3VlbnNpIHRlcnRpbmdnaSBkYWxhbSBzdWF0dSBkYXRhLiBQYWRhIGRhdGEga2Vsb21wb2ssIG1vZHVzIGRpaGl0dW5nIGRlbmdhbiBtZW5nZ3VuYWthbiBrZWxhcyB5YW5nIG1lbWlsaWtpIGZyZWt1ZW5zaSB0ZXJ0aW5nZ2ksIHlhaXR1IGtlbGFzIG1vZHVzLg0KDQojIyMgKipSdW11cyBNb2R1czoqKg0KXFsNClx0ZXh0e01lZGlhbn0gPSB0X2IgKyBcbGVmdCggXGZyYWN7ZF8xfXtkXzEgKyBkXzJ9IFxyaWdodCkgXGNkb3QgYw0KXF0NCg0KRGltYW5hOg0KDQogXCggdF9iIFwpID0gVGVwaSBiYXRhcyBiYXdhaCBrZWxhcyBtb2R1cw0KIA0KIFwoIGRfMSBcKSA9IFNlbGlzaWggYW50YXJhIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIGtlbGFzIHNlYmVsdW1ueWENCiANCiBcKCBkXzIgXCkgPSBTZWxpc2loIGFudGFyYSBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGVuZ2FuIGZyZWt1ZW5zaSBrZWxhcyBzZXRlbGFobnlhDQogDQogXCggYyBcKSA9IFBhbmphbmcga2VsYXMNCiANCiMjIyAqKkxhbmdrYWgtbGFuZ2thaCBNZW5naGl0dW5nIE1vZHVzKio6DQoNCioqTGFuZ2thaCAxOiBNZW5lbnR1a2FuIEtlbGFzIE1vZHVzLioqDQoNCnwgKipJbnRlcnZhbCBLZWxhcyoqIHwgKipGcmVrdWVuc2kgKGYpKiogfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDIxIC0gMjUgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwNCnwgMjYgLSAzMCAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgfA0KfCAzMSAtIDM1ICAgICAgICAgICAgfCA5ICAgICAgICAgICAgICAgICB8DQp8IDM2IC0gNDAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgIHwNCnwgNDEgLSA0NSAgICAgICAgICAgIHwgMyAgICAgICAgICAgICAgICAgfA0KfCA0NiAtIDUwICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICB8DQoNCktlbGFzIG1vZHVzIGFkYWxhaCBrZWxhcyBkZW5nYW4gZnJla3VlbnNpIHRlcnRpbmdnaSwgeWFpdHUga2VsYXMgKiozMSAtIDM1KiogZGVuZ2FuIGZyZWt1ZW5zaSBcKCBmXzEgPSA5IFwpLg0KDQoqKkxhbmdrYWggMjogTWVuZW50dWthbiBQYXJhbWV0ZXIgdW50dWsgUnVtdXMgTW9kdXMqKg0KDQoxLiAqKlRlcGkgQmF0YXMgQmF3YWggS2VsYXMgTWVkaWFuIChcKCB0X2IgXCkpKioNCg0KICAgVGVwaSBiYXRhcyBiYXdhaCBrZWxhcyBtZWRpYW4gZGloaXR1bmcgZGVuZ2FuIG1lbmd1cmFuZ2kgMC41IGRhcmkgYmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuOg0KDQogICBcWw0KICAgdF9iID0gMzEgLSAwLjUgPSAzMC41DQogICBcXQ0KICAgDQoyLiAqKlNlbGlzaWggYW50YXJhIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIGtlbGFzIHNlYmVsdW1ueWEgXCggZF8xIFwpKioNCiAgIA0KICAgXCggZF8xID0gZl8xIC0gZl8wID0gOSAtIDggPSAxIFwpIA0KICAgDQogICANCjMuICoqU2VsaXNpaCBhbnRhcmEgZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kga2VsYXMgc2V0ZWxhaG55YSBcKCBkXzIgXCkqKg0KDQoNCiAgXCggZF8yID0gZl8xIC0gZl8yID0gOSAtIDYgPSAzIFwpIA0KICAgDQogICANCjQuICoqUGFuamFuZyBLZWxhcyAoXCggYyBcKSkqKg0KDQogICBQYW5qYW5nIGtlbGFzIGRpaGl0dW5nIHNlYmFnYWkgc2VsaXNpaCBhbnRhcmEgYmF0YXMgYXRhcyBkYW4gYmF0YXMgYmF3YWgga2VsYXMgbW9kdXM6DQoNCiAgIFxbDQogICBjID0gMzUgLSAzMSA9IDUNCiAgIFxdDQoNCioqTGFuZ2thaCAzOiBTdWJzdGl0dXNpIGtlIFJ1bXVzIE1vZHVzKioNCg0KUnVtdXMgTW9kdXM6DQpcWw0KXHRleHR7TW9kdXN9ID0gdF9iICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IGMNClxdDQoNClN1YnN0aXR1c2kgbmlsYWktbmlsYWkgeWFuZyB0ZWxhaCBkaWhpdHVuZyBrZSBkYWxhbSBydW11cyBtb2R1czoNCg0KXFsNClx0ZXh0e01vZHVzfSA9IDMwLjUgKyBcbGVmdCggXGZyYWN7MX17MSArIDN9IFxyaWdodCkgXGNkb3QgNQ0KXF0NCg0KXFsNClx0ZXh0e01vZHVzfSA9IDMwLjUgKyBcbGVmdCggXGZyYWN7MX17NH0gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KDQpcWw0KXHRleHR7TW9kdXN9ID0gMzAuNSArIDEuMjUNClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAzMS43NQ0KXF0NCg0KDQoNCiMjIyAqKkJveHBsb3QgTW9kdXMqKjoNCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIHRhbnBhIG91dGxpZXJzIGRhbiBkZW5nYW4gb3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gcmVwKGMoMjMsIDI4LCAzMywgMzgsIDQzLCA0OCksIHRpbWVzID0gYygyLCA4LCA5LCA2LCAzLCAyKSkNCmRhdGFfZGVuZ2FuX291dGxpZXJzIDwtIGMoZGF0YV90YW5wYV9vdXRsaWVycywgMTUsIDcwKQ0KDQojIE1lbmVudHVrYW4ga2VsYXMgbW9kdXMNCmludGVydmFsIDwtIGMoMjEsIDI1LCAyNiwgMzAsIDMxLCAzNSwgMzYsIDQwLCA0MSwgNDUsIDQ2LCA1MCkNCg0KIyBNZW1idWF0IHRhYmVsIGZyZWt1ZW5zaQ0KZnJlcV90YW5wYV9vdXRsaWVycyA8LSBjKDIsIDgsIDksIDYsIDMsIDIpICAjIEZyZWt1ZW5zaSB0YW5wYSBvdXRsaWVycw0KZnJlcV9kZW5nYW5fb3V0bGllcnMgPC0gYygyLCA4LCA5LCA2LCAzLCAyKSAgIyBGcmVrdWVuc2kgZGVuZ2FuIG91dGxpZXJzLCB0aWRhayBiZXJ1YmFoDQoNCiMgSGl0dW5nIG1vZHVzIHVudHVrIGRhdGEgdGFucGEgb3V0bGllcnMNCnRfYl90YW5wYV9vdXRsaWVycyA8LSAzMC41ICAjIFRlcGkgYmF3YWgga2VsYXMgbW9kdXMNCmQxX3RhbnBhX291dGxpZXJzIDwtIDkgLSA4ICAjIFNlbGlzaWggZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRhbiBrZWxhcyBzZWJlbHVtbnlhDQpkMl90YW5wYV9vdXRsaWVycyA8LSA5IC0gNiAgIyBTZWxpc2loIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkYW4ga2VsYXMgc2V0ZWxhaG55YQ0KY190YW5wYV9vdXRsaWVycyA8LSA1ICAjIFBhbmphbmcga2VsYXMgbW9kdXMNCg0KbW9kdXNfdGFucGFfb3V0bGllcnMgPC0gdF9iX3RhbnBhX291dGxpZXJzICsgKGQxX3RhbnBhX291dGxpZXJzIC8gKGQxX3RhbnBhX291dGxpZXJzICsgZDJfdGFucGFfb3V0bGllcnMpKSAqIGNfdGFucGFfb3V0bGllcnMNCg0KIyBIaXR1bmcgbW9kdXMgdW50dWsgZGF0YSBkZW5nYW4gb3V0bGllcnMNCnRfYl9kZW5nYW5fb3V0bGllcnMgPC0gMzAuNSAgIyBUZXBpIGJhd2FoIGtlbGFzIG1vZHVzDQpkMV9kZW5nYW5fb3V0bGllcnMgPC0gOSAtIDggICMgU2VsaXNpaCBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGFuIGtlbGFzIHNlYmVsdW1ueWENCmQyX2Rlbmdhbl9vdXRsaWVycyA8LSA5IC0gNiAgIyBTZWxpc2loIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkYW4ga2VsYXMgc2V0ZWxhaG55YQ0KY19kZW5nYW5fb3V0bGllcnMgPC0gNSAgIyBQYW5qYW5nIGtlbGFzIG1vZHVzDQoNCm1vZHVzX2Rlbmdhbl9vdXRsaWVycyA8LSB0X2JfZGVuZ2FuX291dGxpZXJzICsgKGQxX2Rlbmdhbl9vdXRsaWVycyAvIChkMV9kZW5nYW5fb3V0bGllcnMgKyBkMl9kZW5nYW5fb3V0bGllcnMpKSAqIGNfZGVuZ2FuX291dGxpZXJzDQoNCiMgTWVtYnVhdCBkYXRhIGZyYW1lIHVudHVrIHZpc3VhbGlzYXNpDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIE5pbGFpID0gYyhkYXRhX3RhbnBhX291dGxpZXJzLCBkYXRhX2Rlbmdhbl9vdXRsaWVycyksDQogIEtlbG9tcG9rID0gcmVwKGMoIlRhbnBhIE91dGxpZXJzIiwgIkRlbmdhbiBPdXRsaWVycyIpLCANCiAgICAgICAgICAgICAgICAgdGltZXMgPSBjKGxlbmd0aChkYXRhX3RhbnBhX291dGxpZXJzKSwgbGVuZ3RoKGRhdGFfZGVuZ2FuX291dGxpZXJzKSkpDQopDQoNCiMgTWVtYnVhdCBib3hwbG90IG1lbmdndW5ha2FuIFBsb3RseQ0KcGxvdCA8LSBwbG90X2x5KA0KICBkYXRhLCANCiAgeSA9IH5OaWxhaSwgDQogIGNvbG9yID0gfktlbG9tcG9rLCANCiAgdHlwZSA9ICJib3giLCANCiAgYm94cG9pbnRzID0gIm91dGxpZXJzIg0KKSAlPiUgDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBNb2R1cyIsDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk5pbGFpIEJlcmF0IEJhZGFuIChrZykiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIlRhbnBhIE91dGxpZXJzIiwNCiAgICAgICAgeSA9IG1vZHVzX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1vZHVzOiIsIHJvdW5kKG1vZHVzX3RhbnBhX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtb2R1c19kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTW9kdXM6Iiwgcm91bmQobW9kdXNfZGVuZ2FuX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90DQoNCg0KYGBgDQoNCg0KIyMjICoqSW50ZXJwcmV0YXNpIGJlcmRhc2Fya2FuIG1vZHVzOioqOg0KDQpNb2R1cyBkYXJpIGRhdGEga2Vsb21wb2sgaW5pIGFkYWxhaCAqKjMxLjc1KiouIEFydGlueWEsIGtlbGFzIGludGVydmFsIDMxIC0gMzUgbWVtaWxpa2kgZnJla3VlbnNpIHRlcnRpbmdnaSwgZGFuIG1vZHVzIG1lbWJlcmlrYW4gZ2FtYmFyYW4gdGVudGFuZyBuaWxhaSB5YW5nIHBhbGluZyBzZXJpbmcgbXVuY3VsIGRhbGFtIGRpc3RyaWJ1c2kgZGF0YS4gTW9kdXMgaW5pIG1lbmdnYW1iYXJrYW4ga2VjZW5kZXJ1bmdhbiBwdXNhdCBkYXJpIGRhdGEgYmVyZGFzYXJrYW4gZnJla3VlbnNpIHRlcnRpbmdnaSwgdGV0YXBpIHRpZGFrIHNlbGFsdSBtZW5nZ2FtYmFya2FuIG5pbGFpIHlhbmcgc2ViZW5hcm55YSBwYWxpbmcgYmFueWFrIG11bmN1bCBqaWthIGRhdGEgdGlkYWsgbWVtaWxpa2kgZGlzdHJpYnVzaSB5YW5nIHNpbWV0cmlzLg0KDQoNCg0KICAgDQoNCg0KIyAgUHJha3Rpa3VtIDINCg0KUGFkYSBiYWdpYW4gaW5pIGJlcnR1anVhbiB1bnR1ayBtZW5nYWphcmthbiBkYW4gbWVsYXRpaCBraXRhIGRhbGFtIG1lbmdoaXR1bmcgdWt1cmFuIHBlbXVzYXRhbiBkYXRhIChtZWFuLCBtZWRpYW4sIGRhbiBtb2R1cykgcGFkYSBkYXRhIGtlbG9tcG9rIHlhbmcgZGlhbWJpbCBkYXJpIHN0dWRpIGthc3VzIGRhbGFtIGJpZGFuZyBiaXNuaXMsIGtlc2VoYXRhbiwgZGFuIHBlbmRpZGlrYW4uDQoNCiMjIEJpc25pcw0KDQojIyMgU3R1ZGkgS2FzdXMgQmlzbmlzOiBQZW5qdWFsYW4gUHJvZHVrIGRhbGFtIFNhdHUgQnVsYW4NCg0KKipEZXNrcmlwc2kgS2FzdXM6KioNClNlYnVhaCB0b2tvIG1lbmNhdGF0IGp1bWxhaCBwcm9kdWsgeWFuZyB0ZXJqdWFsIHNldGlhcCBoYXJpIHNlbGFtYSBzZWJ1bGFuICgzMCBoYXJpKS4gRGF0YSBwZW5qdWFsYW4gZGlrZWxvbXBva2thbiBiZXJkYXNhcmthbiByZW50YW5nIGp1bWxhaCBwcm9kdWsgeWFuZyB0ZXJqdWFsLg0KDQp8ICoqSW50ZXJ2YWwgS2VsYXMqKiB8ICoqRnJla3VlbnNpIChmKSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxMCAtIDIwICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgICB8DQp8IDIxIC0gMzAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgIHwNCnwgMzEgLSA0MCAgICAgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgfA0KDQoqKlBlcmhpdHVuZ2FuIG1lYW4sIG1lZGlhbiwgZGFuIG1vZHVzOioqDQoNCjEuIE1lbmdoaXR1bmcgTWVhbg0KDQpSdW11czoNCg0KJCQNClx0ZXh0e01lYW59ID0gXGRmcmFje1x0ZXh0e1wozqNmIFxjZG90IHhcKX19e86jZn0NCiQkDQoNCkRpbWFuYToNCg0KKFwoZlwpKT1GcmVrdWVuc2kgc2V0aWFwIGtlbGFzDQoNCihcKHhcKSk9IFRpdGlrIHRlbmdhaCBrZWxhcyBpbnRlcnZhbA0KDQoNCihcKM6jZlwpKT1KdW1sYWggdG90YWwgZnJla3VlbnNpDQoNCihcKM6jZiBcY2RvdCB4XCkpPUp1bWxhaCBwcm9kdWsgYW50YXJhIGZyZWt1ZW5zaSBkYW4gdGl0aWsgdGVuZ2FoDQoNCnwgKipJbnRlcnZhbCBLZWxhcyoqIHwgKipGcmVrdWVuc2kgXCgoZilcKSoqIHwgKipOaWxhaSBUZW5nYWggXCgoeClcKSoqIHwgKipcKCBmIFxjZG90IHggXCkqKiB8DQp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8DQp8IDEwIC0gMjAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgICAgICB8IFwoIDYgXGNkb3QgMTUgPSA5MCBcKSB8DQp8IDIxIC0gMzAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICAgIHwgMjUgICAgICAgICAgICAgICAgICAgICB8IFwoIDE1IFxjZG90IDI1ID0gMzc1IFwpIHwNCnwgMzEgLSA0MCAgICAgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgICAgfCAzNSAgICAgICAgICAgICAgICAgICAgIHwgXCggOSBcY2RvdCAzNSA9IDMxNSBcKSB8DQp8IFRvdGFsICAgICAgICAgICAgICB8IDMwICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgICAgICB8IDc4MCB8DQoNClN1YnN0aXR1c2kga2UgcnVtdXM6DQoNCiQkDQpcdGV4dHtNZWFufSA9IFxkZnJhY3tcdGV4dHtcKM6jZiBcY2RvdCB4XCl9fXvOo2Z9DQokJA0KDQokJA0KXHRleHR7TWVhbn0gPSBcZGZyYWN7XHRleHR7NzgwfX17MzB9PTI2DQokJA0KMi4gTWVuZ2hpdHVuZyBNZWRpYW4NCg0KUnVtdXM6DQoNClxbDQpcdGV4dHtNZWRpYW59ID0gdF9iICsgXGxlZnQoIFxmcmFje1xmcmFje259ezJ9IC0gZl9rfXtmX219IFxyaWdodCkgXGNkb3QgYw0KXF0NCg0KRGltYW5hOg0KDQogXCh0X2JcKSA9IFRlcGkgYmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuDQogDQogXChuXCkgPSBKdW1sYWggdG90YWwgZGF0YSh1bnR1ayBtZW5lbnR1a2FuIHBvc2lzaSBrZWxhcyBtZWRpYW4pDQogDQogXChmX2tcKSA9IEZyZWt1ZW5zaSBrdW11bGF0aWYgc2ViZWx1bSBrZWxhcyBtZWRpYW4NCiANCiBcKGZfbVwpID0gRnJla3VlbnNpIGtlbGFzIG1lZGlhbg0KIA0KIFwoY1wpID0gUGFuamFuZyBrZWxhcw0KIA0KIExhbmdrYWgtIGxhbmdrYWg6DQogYS4gbWVuZW50dWthbiBwb3Npc2kgbWVkaWFuDQogDQokJA0KXHRleHR7UG9zaXNpIG1lZGlhbn0gPSBcZGZyYWN7XHRleHR7bn19ezJ9DQokJA0KDQokJA0KXHRleHR7UG9zaXNpIG1lZGlhbn0gPSBcZGZyYWN7XHRleHR7MzB9fXsyfT0xNQ0KJCQNCg0KYi4gS2VsYXMgbWVkaWFuOiAyMeKAkzMwIChrYXJlbmEgcG9zaXNpIG1lZGlhbiBhZGEgZGkga2VsYXMgaW5pKS4NCg0KYy4gUGFyYW1ldGVyOg0KDQp8IEludGVydmFsIEtlbGFzIHwgRnJla3VlbnNpIFwoKGYpXCkgfCBUb3RhbCBGcmVrdWVuc2kgcGFkYSBzZXRpYXAgaW50ZXJ2YWwgXCgozqNmKVwpIHwNCnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgMTAgLSAyMCAgICAgICAgfCA2ICAgICAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgMjEgLSAzMCAgICAgICAgfCAxNSAgICAgICAgICAgICAgICB8IDYgKyAxNSA9IDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IDMxIC0gNDAgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgfCAyMSArIDkgPSAzMCANCg0KXCh0X2JcKT0yMeKIkjAuNT0yMC41DQoNClwoZl9rXCk9Ng0KDQpcKGZfbVwpID0xNQ0KDQpcKGNcKT0xMA0KDQpTdWJzdGl0dXNpIGtlIHJ1bXVzOg0KXFsNClx0ZXh0e01lZGlhbn0gPSB0X2IgKyBcbGVmdCggXGZyYWN7XGZyYWN7bn17Mn0gLSBmX2t9e2ZfbX0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDIwLjUgKyBcbGVmdCggXGZyYWN7MTUgLSA2fXsxNX0gXHJpZ2h0KSBcY2RvdCAxMA0KXF0NCg0KXFsNClx0ZXh0e01lZGlhbn0gPSAyMC41ICsgXGxlZnQoIFxmcmFjezl9ezE1fSBccmlnaHQpIFxjZG90IDEwDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDIwLjUgKyA2DQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDI2LjUNClxdDQoNCjMuIE1lbmdoaXR1bmcgTW9kdXMNClJ1bXVzOg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gdF9iICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IGMNClxdDQoNCkRpbWFuYToNCg0KIFwoIHRfYiBcKSA9IFRlcGkgYmF0YXMgYmF3YWgga2VsYXMgbW9kdXMNCiANCiBcKCBkXzEgXCkgPSBTZWxpc2loIGFudGFyYSBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGVuZ2FuIGZyZWt1ZW5zaSBrZWxhcyBzZWJlbHVtbnlhDQogDQogXCggZF8yIFwpID0gU2VsaXNpaCBhbnRhcmEgZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kga2VsYXMgc2V0ZWxhaG55YQ0KIA0KIFwoIGMgXCkgPSBQYW5qYW5nIGtlbGFzDQogDQogTGFuZ2thaC0gbGFuZ2thaDoNCiANCmEuIEtlbGFzIG1vZHVzOiAyMeKAkzMwIChmcmVrdWVuc2kgdGVyYmVzYXIgPSAxNSkNCmIuIFBhcmFtZXRlcjoNCg0KXCggdF9iIFwpID0yMeKIkjAuNT0yMC41DQoNClwoIGRfMSBcKSA9MTXiiJI2PTkNCg0KXCggZF8yIFwpID0xNeKIkjk9Ng0KDQpcKCBjIFwpICAgPTEwDQoNClN1YnN0aXR1c2kga2UgcnVtdXM6DQoNClxbDQpcdGV4dHtNb2R1c30gPSB0X2IgKyBcbGVmdCggXGZyYWN7ZF8xfXtkXzEgKyBkXzJ9IFxyaWdodCkgXGNkb3QgYw0KXF0NCg0KXFsNClx0ZXh0e01vZHVzfSA9IDIwLjUgKyBcbGVmdCggXGZyYWN7OX17OSArIDZ9IFxyaWdodCkgXGNkb3QgMTANClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAyMC41ICsgXGxlZnQoIFxmcmFjezl9ezE1fSBccmlnaHQpIFxjZG90IDEwDQpcXQ0KDQpcWw0KXHRleHR7TW9kdXN9ID0gMjAuNSArIDYNClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAyNi41DQpcXQ0KDQoqKktlc2ltcHVsYW4gZGFuIEFuYWxpc2lzIChCaXNuaXMpKio6DQpNZWFuIG1lbnVuanVra2FuIHJhdGEtcmF0YSBwZW5qdWFsYW4gaGFyaWFuIGFkYWxhaCAyNiBwcm9kdWsuDQpNZWRpYW4gbWVudW5qdWtrYW4gYmFod2Egc2VwYXJ1aCBoYXJpIG1lbWlsaWtpIHBlbmp1YWxhbiBkaSBhdGFzIDI2LjUgcHJvZHVrLg0KTW9kdXMgbWVudW5qdWtrYW4gYmFod2EgcmVudGFuZyAyMeKAkzMwIHByb2R1ayBhZGFsYWggeWFuZyBwYWxpbmcgc2VyaW5nIHRlcmphZGkuDQpEaXN0cmlidXNpIGRhdGEgeWFuZyBzaW1ldHJpcyAobWVhbiwgbWVkaWFuLCBkYW4gbW9kdXMgaGFtcGlyIHNhbWEpIG1lbmdpbmRpa2FzaWthbiBrZXN0YWJpbGFuIHBlbmp1YWxhbiBoYXJpYW4uIFN0cmF0ZWdpIGJpc25pcyBkYXBhdCBkaWZva3Vza2FuIHVudHVrIG1lbmluZ2thdGthbiBwZW5qdWFsYW4gZGkgcmVudGFuZyAzMeKAkzQwLg0KDQoNCg0KIyMgS2VzZWhhdGFuIA0KDQojIyMgU3R1ZGkgS2FzdXMgS2VzZWhhdGFuOiBUZWthbmFuIERhcmFoIFBhc2llbiBkYWxhbSBTYXR1IE1pbmdndQ0KDQoqKkRlc2tyaXBzaSBLYXN1czoqKg0KDQpEYXRhIHRla2FuYW4gZGFyYWggc2lzdG9saWsgZGFyaSA1MCBwYXNpZW4geWFuZyBkaWtsYXNpZmlrYXNpa2FuIGtlIGRhbGFtIGludGVydmFsLg0KDQp8ICoqSW50ZXJ2YWwgS2VsYXMqKiB8ICoqRnJla3VlbnNpIChmKSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxMTDigJMxMjAgICAgICAgICAgICB8IDEwICAgICAgICAgICAgICAgICB8DQp8IDEyMeKAkzEzMCAgICAgICAgICAgIHwgMjUgICAgICAgICAgICAgICAgfA0KfCAxMzHigJMxNDAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICB8DQoNCioqUGVyaGl0dW5nYW4gbWVhbiwgbWVkaWFuLCBkYW4gbW9kdXM6KioNCg0KMS4gTWVuZ2hpdHVuZyBNZWFuDQoNClJ1bXVzOg0KDQokJA0KXHRleHR7TWVhbn0gPSBcZGZyYWN7XHRleHR7XCjOo2YgXGNkb3QgeFwpfX17zqNmfQ0KJCQNCkRpbWFuYToNCg0KKFwoZlwpKT1GcmVrdWVuc2kgc2V0aWFwIGtlbGFzDQoNCihcKHhcKSk9IFRpdGlrIHRlbmdhaCBrZWxhcyBpbnRlcnZhbA0KDQoNCihcKM6jZlwpKT1KdW1sYWggdG90YWwgZnJla3VlbnNpDQoNCihcKM6jZiBcY2RvdCB4XCkpPUp1bWxhaCBwcm9kdWsgYW50YXJhIGZyZWt1ZW5zaSBkYW4gdGl0aWsgdGVuZ2FoDQoNCnwgKipJbnRlcnZhbCBLZWxhcyoqIHwgKipGcmVrdWVuc2kgXCgoZilcKSoqIHwgKipOaWxhaSBUZW5nYWggXCgoeClcKSoqIHwgKipcKCBmIFxjZG90IHggXCkqKiB8DQp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8DQp8IDExMCAtIDEyMCAgICAgICAgICAgIHwgMTAgICAgICAgICAgICAgICAgICAgIHwgMTE1ICAgICAgICAgICAgICAgICAgICAgfCBcKCAxMCBcY2RvdCAxMTUgPSAxMTUwIFwpIHwNCnwgMTIxIC0gMTMwICAgICAgICAgICAgfCAyNSAgICAgICAgICAgICAgICAgICB8IDEyNSAgICAgICAgICAgICAgICAgICAgIHwgXCggMjUgXGNkb3QgMTI1ID0gMzEyNSBcKSB8DQp8IDEzMSAtIDE0MCAgICAgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgICAgIHwgMTM1ICAgICAgICAgICAgICAgICAgICAgfCBcKCAxNSBcY2RvdCAxMzUgPSAyMDI1IFwpIHwNCnwgVG90YWwgICAgICAgICAgICAgIHwgNTAgICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICAgICAgICAgICAgICAgIHwgNjMwMCB8DQoNClN1YnN0aXR1c2kga2UgcnVtdXM6DQoNCiQkDQpcdGV4dHtNZWFufSA9IFxkZnJhY3tcdGV4dHtcKM6jZiBcY2RvdCB4XCl9fXvOo2Z9DQokJA0KDQokJA0KXHRleHR7TWVhbn0gPSBcZGZyYWN7XHRleHR7NjMwMH19ezUwfT0xMjYNCiQkDQoyLiBNZW5naGl0dW5nIE1lZGlhbg0KDQpSdW11czoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSB0X2IgKyBcbGVmdCggXGZyYWN7XGZyYWN7bn17Mn0gLSBmX2t9e2ZfbX0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpEaW1hbmE6DQoNCiBcKHRfYlwpID0gVGVwaSBiYXRhcyBiYXdhaCBrZWxhcyBtZWRpYW4NCiANCiBcKG5cKSA9IEp1bWxhaCB0b3RhbCBkYXRhKHVudHVrIG1lbmVudHVrYW4gcG9zaXNpIGtlbGFzIG1lZGlhbikNCiANCiBcKGZfa1wpID0gRnJla3VlbnNpIGt1bXVsYXRpZiBzZWJlbHVtIGtlbGFzIG1lZGlhbg0KIA0KIFwoZl9tXCkgPSBGcmVrdWVuc2kga2VsYXMgbWVkaWFuDQogDQogXChjXCkgPSBQYW5qYW5nIGtlbGFzDQogDQogTGFuZ2thaC0gbGFuZ2thaDoNCiBhLiBtZW5lbnR1a2FuIHBvc2lzaSBtZWRpYW4NCiANCiQkDQpcdGV4dHtQb3Npc2kgbWVkaWFufSA9IFxkZnJhY3tcdGV4dHtufX17Mn0NCiQkDQoNCiQkDQpcdGV4dHtQb3Npc2kgbWVkaWFufSA9IFxkZnJhY3tcdGV4dHs1MH19ezJ9PTI1DQokJA0KDQpiLiBLZWxhcyBtZWRpYW46IDEyMeKAkzEzMCAoa2FyZW5hIHBvc2lzaSBtZWRpYW4gYWRhIGRpIGtlbGFzIGluaSkuDQoNCmMuIFBhcmFtZXRlcjoNCg0KfCBJbnRlcnZhbCBLZWxhcyB8IEZyZWt1ZW5zaSBcKChmKVwpIHwgVG90YWwgRnJla3VlbnNpIHBhZGEgc2V0aWFwIGludGVydmFsIFwoKM6jZilcKSB8DQp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDExMCAtIDEyMCAgICAgICAgfCAxMCAgICAgICAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAxMjEgLSAxMzAgICAgICAgIHwgMjUgICAgICAgICAgICAgICAgfCAxMCArIDI1ID0gMzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgMTMxIC0gMTQwICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICB8IDM1ICsgMTUgPSA1MCANCg0KXCh0X2JcKT0xMjHiiJIwLjU9MTIwLjUNCg0KXChmX2tcKT0xMA0KDQpcKGZfbVwpID0yNQ0KDQpcKGNcKT0xMA0KDQpTdWJzdGl0dXNpIGtlIHJ1bXVzOg0KXFsNClx0ZXh0e01lZGlhbn0gPSB0X2IgKyBcbGVmdCggXGZyYWN7XGZyYWN7bn17Mn0gLSBmX2t9e2ZfbX0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDEyMC41ICsgXGxlZnQoIFxmcmFjezI1IC0gMTB9ezI1fSBccmlnaHQpIFxjZG90IDEwDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDEyMC41ICsgXGxlZnQoIFxmcmFjezE1fXsyNX0gXHJpZ2h0KSBcY2RvdCAxMA0KXF0NCg0KXFsNClx0ZXh0e01lZGlhbn0gPSAxMjAuNSArIDYNClxdDQoNClxbDQpcdGV4dHtNZWRpYW59ID0gMTI2LjUNClxdDQoNCjMuIE1lbmdoaXR1bmcgTW9kdXMNClJ1bXVzOg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gdF9iICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IGMNClxdDQoNCkRpbWFuYToNCg0KIFwoIHRfYiBcKSA9IFRlcGkgYmF0YXMgYmF3YWgga2VsYXMgbW9kdXMNCiANCiBcKCBkXzEgXCkgPSBTZWxpc2loIGFudGFyYSBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGVuZ2FuIGZyZWt1ZW5zaSBrZWxhcyBzZWJlbHVtbnlhDQogDQogXCggZF8yIFwpID0gU2VsaXNpaCBhbnRhcmEgZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kga2VsYXMgc2V0ZWxhaG55YQ0KIA0KIFwoIGMgXCkgPSBQYW5qYW5nIGtlbGFzDQogDQogTGFuZ2thaC0gbGFuZ2thaDoNCiANCiB8ICoqSW50ZXJ2YWwgS2VsYXMqKiB8ICoqRnJla3VlbnNpIChmKSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxMTDigJMxMjAgICAgICAgICAgICB8IDEwICAgICAgICAgICAgICAgICB8DQp8IDEyMeKAkzEzMCAgICAgICAgICAgIHwgMjUgICAgICAgICAgICAgICAgfA0KfCAxMzHigJMxNDAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICB8DQoNCiANCmEuIEtlbGFzIG1vZHVzOiAxMjHigJMxMzAgKGZyZWt1ZW5zaSB0ZXJiZXNhciA9IDI1KQ0KYi4gUGFyYW1ldGVyOg0KDQpcKCB0X2IgXCkgPTEyMeKIkjAuNT0xMjAuNQ0KDQpcKCBkXzEgXCkgPTI14oiSMTA9MTUNCg0KXCggZF8yIFwpID0yNeKIkjE1PTEwDQoNClwoIGMgXCkgICA9MTANCg0KU3Vic3RpdHVzaSBrZSBydW11czoNCg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gMTIwLjUgKyBcbGVmdCggXGZyYWN7MTV9ezE1ICsgMTB9IFxyaWdodCkgXGNkb3QgMTANClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAxMjAuNSArIFxsZWZ0KCBcZnJhY3sxNX17MjV9IFxyaWdodCkgXGNkb3QgMTANClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAxMjAuNSArIDYNClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSAxMjYuNQ0KXF0NCg0KKipLZXNpbXB1bGFuIGRhbiBBbmFsaXNpcyAoS2VzZWhhdGFuKSoqOg0KTWVhbiBtZW51bmp1a2thbiByYXRhLXJhdGEgdGVrYW5hbiBkYXJhaCBwYXNpZW4gYWRhbGFoIDEyNiBtbUhnLCBiZXJhZGEgZGFsYW0gcmVudGFuZyBub3JtYWwuDQpNZWRpYW4gbWVudW5qdWtrYW4gc2VwYXJ1aCBwYXNpZW4gbWVtaWxpa2kgdGVrYW5hbiBkYXJhaCBkaSBhdGFzIDEyNi41IG1tSGcsIHNlcGFydWggbGFpbm55YSBkaSBiYXdhaC4NCk1vZHVzIG1lbnVuanVra2FuIGJhaHdhIHJlbnRhbmcgdGVrYW5hbiBkYXJhaCAxMjHigJMxMzAgbW1IZyBwYWxpbmcgc2VyaW5nIHRlcmphZGksIG1lbmRvbWluYXNpIGtlbG9tcG9rIHBhc2llbi4NCkRpc3RyaWJ1c2kgZGF0YSB5YW5nIHNhbmdhdCBzaW1ldHJpcyAobWVhbiwgbWVkaWFuLCBkYW4gbW9kdXMgaGFtcGlyIGlkZW50aWspIG1lbnVuanVra2FuIGJhaHdhIG1heW9yaXRhcyBwYXNpZW4gbWVtaWxpa2kgdGVrYW5hbiBkYXJhaCBub3JtYWwuIERlbmdhbiBha3VyYXNpIGhhcnVzIG1lbmNhcGFpIDk5JSwgaGFzaWwgaW5pIG1lbmR1a3VuZyBrZXNpbXB1bGFuIGJhaHdhIHBhc2llbiB1bXVtbnlhIHNlaGF0Lg0KDQojIyBQZW5kaWRpa2FuDQoNCiMjIyBTdHVkaSBLYXN1cyBQZW5kaWRpa2FuOiBOaWxhaSBVamlhbiBBa2hpciBNYXRlbWF0aWthIFNpc3dhIGRhbGFtIEtlbGFzDQoNCioqRGVza3JpcHNpIEthc3VzOioqDQoNClNlYmFueWFrIDQwIHNpc3dhIGRhbGFtIHNhdHUga2VsYXMgbWVuZ2lrdXRpIHVqaWFuIGFraGlyLiBOaWxhaSBtZXJla2EgZGlrZWxvbXBva2thbiBrZSBkYWxhbSBpbnRlcnZhbCBiZXJpa3V0Og0KDQp8ICoqSW50ZXJ2YWwgS2VsYXMqKiB8ICoqRnJla3VlbnNpIChmKSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCA1MOKAkzYwICAgICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgIHwNCnwgNjHigJM3MCAgICAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICB8DQp8IDcx4oCTODAgICAgICAgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgIHwNCnwgODHigJM5MCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgIHwNCnwgOTHigJMxMDAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICB8DQoNCioqUGVyaGl0dW5nYW4gbWVhbiwgbWVkaWFuLCBkYW4gbW9kdXM6KioNCg0KMS4gTWVuZ2hpdHVuZyBNZWFuDQoNClJ1bXVzOg0KDQokJA0KXHRleHR7TWVhbn0gPSBcZGZyYWN7XHRleHR7XCjOo2YgXGNkb3QgeFwpfX17zqNmfQ0KJCQNCkRpbWFuYToNCg0KKFwoZlwpKT1GcmVrdWVuc2kgc2V0aWFwIGtlbGFzDQoNCihcKHhcKSk9IFRpdGlrIHRlbmdhaCBrZWxhcyBpbnRlcnZhbA0KDQoNCihcKM6jZlwpKT1KdW1sYWggdG90YWwgZnJla3VlbnNpDQoNCihcKM6jZiBcY2RvdCB4XCkpPUp1bWxhaCBwcm9kdWsgYW50YXJhIGZyZWt1ZW5zaSBkYW4gdGl0aWsgdGVuZ2FoDQoNCnwgKipJbnRlcnZhbCBLZWxhcyoqIHwgKipGcmVrdWVuc2kgXCgoZilcKSoqIHwgKipOaWxhaSBUZW5nYWggXCgoeClcKSoqIHwgKipcKCBmIFxjZG90IHggXCkqKiB8DQp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8DQp8IDUwIC0gNjAgICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgICAgIHwgNTUgICAgICAgICAgICAgICAgICAgICB8IFwoIDUgXGNkb3QgNTUgPSAyNzUgXCkgfA0KfCA2MSAtIDcwICAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICAgICB8IDY1ICAgICAgICAgICAgICAgICAgICAgfCBcKCAxMCBcY2RvdCA2NSA9IDY1MCBcKSB8DQp8IDcxIC0gODAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICAgICB8IDc1ICAgICAgICAgICAgICAgICAgICAgfCBcKCAxNSBcY2RvdCA3NSA9IDExMjUgXCkgfA0KfCA4MSAtIDkwICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgIHwgODUgICAgICAgICAgICAgICAgICAgICB8IFwoIDggXGNkb3QgODUgPSA2ODAgXCkgfA0KfCA5MSAtIDEwMCAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICB8IDk1ICAgICAgICAgICAgICAgICAgICAgfCBcKCAyIFxjZG90IDk1ID0gMTkwIFwpIHwNCnwgVG90YWwgICAgICAgICAgICAgIHwgNDAgICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICAgICAgICAgICAgICAgIHwgMjkyMCB8DQoNClN1YnN0aXR1c2kga2UgcnVtdXM6DQoNCiQkDQpcdGV4dHtNZWFufSA9IFxkZnJhY3tcdGV4dHtcKM6jZiBcY2RvdCB4XCl9fXvOo2Z9DQokJA0KJCQNClx0ZXh0e01lYW59ID0gXGRmcmFje1x0ZXh0ezI5MjB9fXs0MH09NzMNCiQkDQoyLiBNZW5naGl0dW5nIE1lZGlhbg0KDQpSdW11czoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSB0X2IgKyBcbGVmdCggXGZyYWN7XGZyYWN7bn17Mn0gLSBmX2t9e2ZfbX0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpEaW1hbmE6DQoNCiBcKHRfYlwpID0gVGVwaSBiYXRhcyBiYXdhaCBrZWxhcyBtZWRpYW4NCiANCiBcKG5cKSA9IEp1bWxhaCB0b3RhbCBkYXRhKHVudHVrIG1lbmVudHVrYW4gcG9zaXNpIGtlbGFzIG1lZGlhbikNCiANCiBcKGZfa1wpID0gRnJla3VlbnNpIGt1bXVsYXRpZiBzZWJlbHVtIGtlbGFzIG1lZGlhbg0KIA0KIFwoZl9tXCkgPSBGcmVrdWVuc2kga2VsYXMgbWVkaWFuDQogDQogXChjXCkgPSBQYW5qYW5nIGtlbGFzDQogDQogTGFuZ2thaC0gbGFuZ2thaDoNCiBhLiBtZW5lbnR1a2FuIHBvc2lzaSBtZWRpYW4NCiANCiQkDQpcdGV4dHtQb3Npc2kgbWVkaWFufSA9IFxkZnJhY3tcdGV4dHtufX17Mn0NCiQkDQokJA0KXHRleHR7UG9zaXNpIG1lZGlhbn0gPSBcZGZyYWN7XHRleHR7NDB9fXsyfT0yMA0KJCQNCmIuIEtlbGFzIG1lZGlhbjogNzHigJM4MCAoa2FyZW5hIHBvc2lzaSBtZWRpYW4gYWRhIGRpIGtlbGFzIGluaSkuDQoNCmMuIFBhcmFtZXRlcjoNCg0KfCBJbnRlcnZhbCBLZWxhcyB8IEZyZWt1ZW5zaSBcKChmKVwpIHwgVG90YWwgRnJla3VlbnNpIHBhZGEgc2V0aWFwIGludGVydmFsIFwoKM6jZilcKSB8DQp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDUwIC0gNjAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IDYxIC0gNzAgICAgICAgIHwgMTAgICAgICAgICAgICAgICAgfCA1ICsgMTAgPSAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCA3MSAtIDgwICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICB8IDE1ICsgMTUgPSAzMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCA4MSAtIDkwICAgICAgICB8IDggICAgICAgICAgICAgICAgfCAzMCArIDggPSAzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCA5MSAtIDEwMCAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwgMzggKyAyID0gNDAgDQoNClwodF9iXCk9NzHiiJIwLjU9NzAuNQ0KDQpcKGZfa1wpPTE1DQoNClwoZl9tXCkgPTE1DQoNClwoY1wpPTEwDQoNClN1YnN0aXR1c2kga2UgcnVtdXM6DQpcWw0KXHRleHR7TWVkaWFufSA9IHRfYiArIFxsZWZ0KCBcZnJhY3tcZnJhY3tufXsyfSAtIGZfa317Zl9tfSBccmlnaHQpIFxjZG90IGMNClxdDQoNClxbDQpcdGV4dHtNZWRpYW59ID0gNzAuNSArIFxsZWZ0KCBcZnJhY3syMCAtIDE1fXsxNX0gXHJpZ2h0KSBcY2RvdCAxMA0KXF0NCg0KXFsNClx0ZXh0e01lZGlhbn0gPSA3MC41ICsgXGxlZnQoIFxmcmFjezV9ezE1fSBccmlnaHQpIFxjZG90IDEwDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDcwLjUgKyAzLjMzDQpcXQ0KDQpcWw0KXHRleHR7TWVkaWFufSA9IDczLjgzDQpcXQ0KDQozLiBNZW5naGl0dW5nIE1vZHVzDQpSdW11czoNCg0KXFsNClx0ZXh0e01vZHVzfSA9IHRfYiArIFxsZWZ0KCBcZnJhY3tkXzF9e2RfMSArIGRfMn0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpEaW1hbmE6DQoNCiBcKCB0X2IgXCkgPSBUZXBpIGJhdGFzIGJhd2FoIGtlbGFzIG1vZHVzDQogDQogXCggZF8xIFwpID0gU2VsaXNpaCBhbnRhcmEgZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kga2VsYXMgc2ViZWx1bW55YQ0KIA0KIFwoIGRfMiBcKSA9IFNlbGlzaWggYW50YXJhIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIGtlbGFzIHNldGVsYWhueWENCiANCiBcKCBjIFwpID0gUGFuamFuZyBrZWxhcw0KIA0KIExhbmdrYWgtIGxhbmdrYWg6DQogDQogfCAqKkludGVydmFsIEtlbGFzKiogfCAqKkZyZWt1ZW5zaSAoZikqKiB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgNTDigJM2MCAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICB8DQp8IDYx4oCTNzAgICAgICAgICAgICAgIHwgMTAgICAgICAgICAgICAgICAgfA0KfCA3MeKAkzgwICAgICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICB8DQp8IDgx4oCTOTAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICB8DQp8IDkx4oCTMTAwICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgfA0KDQogDQphLiBLZWxhcyBtb2R1czogNzHigJM4MCAoZnJla3VlbnNpIHRlcmJlc2FyID0gMTUpDQpiLiBQYXJhbWV0ZXI6DQoNClwoIHRfYiBcKSA9NzHiiJIwLjU9NzAuNQ0KDQpcKCBkXzEgXCkgPTE14oiSMTA9NQ0KDQpcKCBkXzIgXCkgPTE14oiSOD03DQoNClwoIGMgXCkgICA9MTANCg0KU3Vic3RpdHVzaSBrZSBydW11czoNCg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gNzAuNSArIFxsZWZ0KCBcZnJhY3s1fXs1ICsgN30gXHJpZ2h0KSBcY2RvdCAxMA0KXF0NCg0KXFsNClx0ZXh0e01vZHVzfSA9IDcwLjUgKyBcbGVmdCggXGZyYWN7NX17MTJ9IFxyaWdodCkgXGNkb3QgMTANClxdDQoNClxbDQpcdGV4dHtNb2R1c30gPSA3MC41ICsgNC4xNw0KXF0NCg0KXFsNClx0ZXh0e01vZHVzfSA9IDc0LjY3DQpcXQ0KDQoqKktlc2ltcHVsYW4gZGFuIEFuYWxpc2lzIChQZW5kaWRpa2FuKSoqOg0KTWVhbiBtZW51bmp1a2thbiByYXRhLXJhdGEgbmlsYWkgc2lzd2EgYWRhbGFoIDczLCBtZW51bmp1a2thbiBwZXJmb3JtYSBrZWxhcyBzZWNhcmEgdW11bSBjdWt1cCBiYWlrIGRhbiBiZXJhZGEgZGkgYXRhcyBuaWxhaSBsdWx1cyBzdGFuZGFyLg0KTWVkaWFuIG1lbnVuanVra2FuIG5pbGFpIHRlbmdhaCBhZGFsYWggNzMuODMsIGFydGlueWEgc2VwYXJ1aCBzaXN3YSBtZW5kYXBhdGthbiBuaWxhaSBkaSBhdGFzIDczLjgzLCBkYW4gc2VwYXJ1aCBsYWlubnlhIGRpIGJhd2FoLg0KTW9kdXMgbWVudW5qdWtrYW4gYmFod2EgcmVudGFuZyBuaWxhaSA3MeKAkzgwIGFkYWxhaCB5YW5nIHBhbGluZyBzZXJpbmcgdGVyamFkaS4NCkRpc3RyaWJ1c2kgZGF0YSBzZWRpa2l0IGNvbmRvbmcga2Uga2FuYW4sIGthcmVuYSBtb2R1cyBsZWJpaCB0aW5nZ2kgZGFyaSBtZWFuLiBGb2t1cyBkYXBhdCBkaWJlcmlrYW4gcGFkYSBzaXN3YSB5YW5nIGJlcmFkYSBkaSBiYXdhaCBuaWxhaSByYXRhLXJhdGEgKGtlbGFzIDUw4oCTNjApIHVudHVrIG1lbmluZ2thdGthbiBwZW5jYXBhaWFuIG1lcmVrYS4NCg0KDQoNCiMgUmVmZXJlbnNpDQoNCl9CYWt0aSBTaXJlZ2FyLCBNLlNjLiwgQ0RTLiAoMjAyNCkuIFVrdXJhbiBQZW11c2F0YW4gRGF0YS4gRGlhbWJpbCBkYXJpIGh0dHBzOi8vYm9va2Rvd24ub3JnL2RzY2llbmNlbGFicy9zdGF0aXN0aWthX2Rhc2FyL19ib29rL1VrdXJhbl9QZW11c2F0YW5fRGF0YS5odG1sI21lYW4tcmF0YS1yYXRhXw0KDQpfU3V0aXNuYSwgSS4gKDIwMjApLiBTdGF0aXN0aWthIHBlbmVsaXRpYW4uIFVuaXZlcnNpdGFzIE5lZ2VyaSBHb3JvbnRhbG8sIDEoMSksIDEtMTUuXw0KDQpfUHJhdGlrbm8sIEEuIFMuLCBQcmFzdGl3aSwgQS4gQS4sICYgUmFtYWh3YXRpLCBTLiAoMjAyMikuIFVrdXJhbiBQZW11c2F0YW4gUmF0YS1yYXRhLl8NCg0KX0hhbmRheWFuaSwgSS4sIElrYXNhcmksIEkuIEguLCAmIEtvbSwgTS4gKDIwMTkpLiBTdGF0aXN0aWthIERhc2FyLiBQdXJ3b2tlcnRvOiBDdi4gUGVuYSBQZXJzYWRhLl8NCg0KX1N1a29yaXlhbnRvLCBTLiwgJiBLaHVyaW4naW4sIEsuIEkuICgyMDIzLCBKYW51YXJ5KS4gU3RhdGlzdGljYWwgcmVhc29uaW5nIG9mIGp1bmlvciBoaWdoIHNjaG9vbCBzdHVkZW50cyBpbiBzb2x2aW5nIGNlbnRyYWwgdGVuZGVuY3kgcHJvYmxlbXMgbWVhbiwgbWVkaWFuLCBhbmQgbW9kdXMuIEluIEFJUCBDb25mZXJlbmNlIFByb2NlZWRpbmdzIChWb2wuIDI1NjksIE5vLiAxKS4gQUlQIFB1Ymxpc2hpbmcuXw0KDQo=