Latihan 1
Sebuah perusahaan ingin memahami karakteristik penyebaran data hasil
penjualan dari empat cabang (A, B, C, dan D) selama satu bulan terakhir.
Data penjualan (dalam juta rupiah) dari keempat cabang tersebut adalah
sebagai berikut:
• Cabang A: 50, 55, 60, 65, 70
• Cabang B: 40, 50, 60, 70, 80
• Cabang C: 30, 30, 35, 40, 45
• Cabang D: 70, 75, 80, 85, 90
2. Cabang mana yang memiliki penyebaran data paling kecil? Jelaskan
alasannya.
Untuk penyebaran data yang paling kecil kita bisa melihat standar
deviasi dari masing masing cabang
| A |
7.91 |
| B |
15.81 |
| C |
7.58 |
| D |
7.91 |
Bisa kita lihat di dalam tabel bahwa cabang c memiliki penyebaran
data yang paling kecil jika dilihat dari standara deviasi yaitu 7.58,
ini artinya cabang c tidak terlalu tersebar jauh dari rata rata nya.
3. Jika target penjualan minimum adalah 50 juta rupiah, cabang mana
saja yang gagal mencapai target di semua datanya?
Cabang A (50, 55, 60, 65, 70) : Semua data memenuhi
target
Cabang B (40, 50, 60, 70 ,80) : Ada satu data yang tidak memenuhi
target yaitu 40
Cabang C (30, 30, 35, 40, 45) : Semua data tidak memenuhi
target
Cabang D (70, 75, 80, 85, 90) : semua data memenuhi
target
Cabang C adalah satu satu nya cabang yang gagal mencapat target di
semua datanya
4. Buatlah diagram kotak (box plot) untuk memvisualisasikan
penyebaran data setiap cabang.
Latihan 2
Perusahaan XYZ mengelola pengiriman barang ke berbagai wilayah dengan
menggunakan berbaga jenis transportasi Setiap pengiriman melibatkan
biaya transportasi, waktu yang dibutuhkan, dan jumlat barang yang
dikının Berikut adalah dala terkait pengiriman barang berdasarkan
wilayah dan jenis barang
Tabel Data Distribusi Barang
| Utara |
Elektronik |
200 |
5 |
15000 |
| Selatan |
Pakaian |
150 |
8 |
8000 |
| Timur |
Makanan |
180 |
6 |
10000 |
| Barat |
Peralatan |
120 |
7 |
12000 |
| Tengah |
Elektronik |
250 |
4 |
14000 |
| Utara |
Pakaian |
300 |
9 |
8500 |
| Selatan |
Makanan |
220 |
7 |
9500 |
| Timur |
Peralatan |
140 |
5 |
11000 |
| Barat |
Elektronik |
180 |
6 |
14500 |
| Tengah |
Pakaian |
350 |
8 |
7800 |
| Utara |
Peralatan |
170 |
4 |
12000 |
| Selatan |
Elektronik |
250 |
6 |
16000 |
| Timur |
Pakaian |
190 |
7 |
8200 |
| Barat |
Makanan |
130 |
5 |
10500 |
| Tengah |
Peralatan |
180 |
5 |
11500 |
1 Analisis Efisiensi Pengiriman
Visualisasikan pengiriman barang berdasarkan jumlah barang, waktu
pengiriman, dan biaya per unit dengan menggunakan plot 3D
Elektronik
Wilayah dan Data:
Wilayah Utara:
Jumlah barang = 200 unit
Waktu = 5 jam
Biaya per unit = Rp15,000
Wilayah Tengah:
Jumlah barang = 250 unit
Waktu = 4 jam
Biaya per unit = Rp14,000
Wilayah Barat:
Jumlah barang = 180 unit
Waktu = 6 jam
Biaya per unit = Rp12,000
Wilayah Selatan:
Jumlah barang = 250 unit
Waktu = 6 jam
Biaya per unit = Rp16,000
Pakaian
Wilayah dan Data:
Wilayah Utara:
Jumlah barang = 300 unit
Waktu = 9 jam
Biaya per unit = Rp8,500
Wilayah Tengah:
Jumlah barang = 350 unit
Waktu = 8 jam
Biaya per unit = Rp7,800
Wilayah Barat:
Jumlah barang = 190 unit
Waktu = 7 jam
Biaya per unit = Rp8,200
Wilayah Selatan:
Jumlah barang = 150 unit
Waktu = 8 jam
Biaya per unit = Rp8,000
Makanan
Wilayah dan Data:
Wilayah Utara:
Jumlah barang = 180 unit
Waktu = 6 jam
Biaya per unit = Rp10,000
Wilayah Tengah:
Jumlah barang = 220 unit
Waktu = 7 jam
Biaya per unit = Rp9,500
Wilayah Barat:
Jumlah barang = 130 unit
Waktu = 5 jam
Biaya per unit = Rp10,500
Peralatan
Wilayah dan Data:
Wilayah Utara:
Jumlah barang = 170 unit
Waktu = 5 jam
Biaya per unit = Rp12,000
Wilayah Tengah:
Jumlah barang = 180 unit
Waktu = 5 jam
Biaya per unit = Rp11,500
Wilayah Barat:
Jumlah barang = 120 unit
Waktu = 7 jam
Biaya per unit = Rp12,000
Wilayah Timur:
Jumlah barang = 140 unit
Waktu = 5 jam
Biaya per unit = Rp11,000
Tentukan wilayah mana yang memiliki efisiensi pengiriman terendah
berdasarkan biaya per unit dan waktu pengiriman
## # A tibble: 5 × 4
## Wilayah Total_Pengiriman Jumlah_Lambat Persentase_Lambat
## <chr> <int> <int> <dbl>
## 1 Barat 3 1 33.3
## 2 Selatan 3 2 66.7
## 3 Tengah 3 1 33.3
## 4 Timur 3 1 33.3
## 5 Utara 3 1 33.3
2 Rekomendasi Operasional
Berdasarkan hasıl analisis, wilayah mana yang memerlukan perhatian
khusus untuk meningkatkan efisiensi pengiriman?
Jawaban:
Berdasarkan hasil analisa di atas yang memerlukan perhatian khusus
ada di wilayah selatan, karena efisiensi pengiriman di selatan mencapai
2 dari 3 total pengiriman yang lambat dalam pengirimannya.
Apa rekomendasi untuk mengurangi biaya dan waktu pengiriman di
wilayah tersebut?
Jawaban:
Peningkatan Sistem Rute Pengiriman: Menggunakan teknologi route
optimization untuk menghindari kemacetan atau memilih jalur yang lebih
efisien dapat mengurangi waktu pengiriman secara signifikan.
Jadwal Pengiriman yang Lebih Fleksibel: Menyesuaikan jadwal
pengiriman dengan kondisi lalu lintas atau menggunakan model pengiriman
24 jam bisa membantu mengurangi penundaan, terutama pada jam
sibuk.
Sistem Pelacakan Real-Time: Implementasi sistem pelacakan
pengiriman secara real-time dapat membantu untuk mengetahui posisi
pengiriman kapan saja. Hal ini dapat mempercepat respons ketika terjadi
keterlambatan atau masalah lainnya.
Peringatan Dini untuk Pengiriman Lambat: Sistem berbasis AI dapat
memprediksi keterlambatan pengiriman dengan menganalisis pola lalu
lintas dan kondisi cuaca, serta memberi peringatan dini untuk mencegah
pengiriman terlambat.
3 Kinerja Berdasarkan Jenis Barang
Analısıs kinerja pengiriman berdasarkan jenis barang dan wilayah Mana
yang memiliki waktu pengiriman lebih cepat dan biaya per unit lebih
rendah?
Waktu Pengiriman (Rata-rata)
Untuk menganalisis kinerja pengiriman berdasarkan jenis barang, mari
kita lihat waktu rata-rata pengiriman untuk setiap jenis barang di
setiap wilayah:
| Elektronik |
5 |
6 |
- |
6 |
4 |
| Pakaian |
9 |
8 |
7 |
- |
8 |
| Makanan |
- |
7 |
6 |
5 |
- |
| Peralatan |
4 |
- |
5 |
7 |
5 |
Biaya Per Unit (Rata-rata) Untuk biaya per unit:
| Elektronik |
15.000 |
16.000 |
- |
14.500 |
14.000 |
| Pakaian |
8.500 |
8.000 |
8.200 |
- |
7.800 |
| Makanan |
- |
9.500 |
10.000 |
10.500 |
- |
| Peralatan |
12.000 |
- |
11.000 |
12.000 |
11.500 |
Waktu Pengiriman Cepat: Wilayah Tengah dan Utara memiliki waktu
pengiriman tercepat untuk masing masing barang, yaitu barang elektronik
di wilayah tengah dan peralatan di wilayah utara.
Biaya Per Unit Rendah: Wilayah Tengah memiliki biaya pengiriman yang
cukup rendah yaitu pakaian
Kesimpulannya Wilayah tengah memiilki Waktu pengiriman cepat dalam
waktu 4 jam untuk mengirim barang elektronik lalu wilayah tengah juga
mempunyai biaya yang sangat rendah di banding biaya per unit di wilayah
lain yaitu 7.800 untuk barang pakaian.
LS0tDQp0aXRsZTogIlBlbXVzYXRhbiBEYXRhIg0Kc3VidGl0bGU6ICJNZWFuLCBNZWRpYW4sIE1vZHVzIg0KYXV0aG9yOiANCiAgLSAiWmFpbiBJcWJhbCBTYXB1dHJhIg0KICAtICJOSU0gNTIyNDAwMjQiDQpkYXRlOiAgIk1pbmdndSwgOC8xMi8yMDI0Ig0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgbGliX2RpcjogbGlicw0KICAgIDNkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCiMgTGF0aWhhbiAxDQoNClNlYnVhaCBwZXJ1c2FoYWFuIGluZ2luIG1lbWFoYW1pIGthcmFrdGVyaXN0aWsgcGVueWViYXJhbiBkYXRhIGhhc2lsIHBlbmp1YWxhbiBkYXJpIGVtcGF0IGNhYmFuZyAoQSwgQiwgQywgZGFuIEQpIHNlbGFtYSBzYXR1IGJ1bGFuIHRlcmFraGlyLiBEYXRhIHBlbmp1YWxhbiAoZGFsYW0ganV0YSBydXBpYWgpIGRhcmkga2VlbXBhdCBjYWJhbmcgdGVyc2VidXQgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0K4oCiIENhYmFuZyBBOiA1MCwgNTUsIDYwLCA2NSwgNzANCg0K4oCiIENhYmFuZyBCOiA0MCwgNTAsIDYwLCA3MCwgODANCg0K4oCiIENhYmFuZyBDOiAzMCwgMzAsIDM1LCA0MCwgNDUNCg0K4oCiIENhYmFuZyBEOiA3MCwgNzUsIDgwLCA4NSwgOTANCg0KIyMgMS4gSGl0dW5nbGFoIHJhdGEtcmF0YSwgbWVkaWFuLCBkYW4gc3RhbmRhciBkZXZpYXNpIHVudHVrIG1hc2luZy1tYXNpbmcgY2FiYW5nLg0KDQojIyMjIENhYmFuZyBBICg1MCwgNTUsIDYwLCA2NSwgNzApOg0KDQotIE1lYW4gKHgpOg0KJCQNClxiYXIgeCA9IFxmcmFje1xzdW0geH17bn09XGZyYWN7NTAgKyA1NSArIDYwICsgNjUgKyA3MH17NX09XGZyYWN7MzAwfXs1fT02MA0KJCQNCi0gTWVkaWFuIDogS2FyZW5hIGRhdGEgbnlhIGdhbmppbCBkYW4gc3VkYWggdGVydXJ1dCwgbWFrYSBuaWxhaSBtZWRpYW5ueWEgYWRhbGFoIG5pbGFpIHRlbmdhaCB5YWl0dSA2MCANCg0KLSBWYXJpYW5zIDogDQokJA0KXGJhciB4ID0gXGZyYWN7XHNxcnRcc3VtICh4aSAtIHgpXjJ9e259DQokJA0KDQp4aTogTmlsYWkgaW5kaXZpZHUuDQoNCng6IFJhdGEtcmF0YSBzYW1wZWwuDQoNCm46IEp1bWxhaCBkYXRhIGRhbGFtIHNhbXBlbC4NCg0KDQpIaXR1bmcgdmFyaWFucyB0ZXJsZWJpaCBkYWh1bHU6DQokJA0KXGJhciB2YXJpYW5zID0gXGZyYWMge1xzcXJ0ICg1MC02MCleMiArICg1NS02MCleMiArLi4uKyg3MC02MCleMn17NS0xfQ0KJCQNCg0KJCQNClxiYXIgdmFyaWFucyA9IFxmcmFjIHtcc3FydCAxMDAgKyAyNSArIDAgKyAyNSArIDEwMH17NS0xfT1cZnJhYyB7XHNxcnQgMjUwfXs0fT02Mi41DQokJA0KDQotIEhpdHVuZyBzdGFuZGFyIGRldmlhc2kgOg0KDQokJA0KXGJhciBzdGFuZGFyIGRldmlhc2kgPSBcc3FydHs2Mi41fT03LjkxDQokJA0KDQojIyMjIENhYmFuZyBCICg0MCwgNTAsIDYwLCA3MCAsODApOg0KDQotIE1lYW4gKHgpOg0KJCQNClxiYXIgeCA9IFxmcmFje1xzdW0geH17bn09XGZyYWN7NDArNTArNjArNzArODB9ezV9PVxmcmFjezMwMH17NX09NjANCiQkDQotIE1lZGlhbiA6IDYwIA0KDQotIFZhcmlhbnMgOiANCiQkDQpcYmFyIHggPSBcZnJhY3tcc3FydFxzdW0gKHhpIC0geCleMn17bn0NCiQkDQoNCnhpOiBOaWxhaSBpbmRpdmlkdS4NCg0KeDogUmF0YS1yYXRhIHNhbXBlbC4NCg0KbjogSnVtbGFoIGRhdGEgZGFsYW0gc2FtcGVsLg0KDQoNCkhpdHVuZyB2YXJpYW5zIHRlcmxlYmloIGRhaHVsdToNCiQkDQpcYmFyIHZhcmlhbnMgPSBcZnJhYyB7XHNxcnQgKDQwLTYwKV4yICsgKDUwLTYwKV4yICsuLi4rKDgwLTYwKV4yfXs1LTF9DQokJA0KDQokJA0KXGJhciB2YXJpYW5zID0gXGZyYWMge1xzcXJ0IDQwMCArIDEwMCArIDAgKyAxMDAgKyA0MDB9ezUtMX09XGZyYWMge1xzcXJ0IDEwMH17NH09MjUwDQokJA0KDQotIEhpdHVuZyBzdGFuZGFyIGRldmlhc2kgOg0KDQokJA0KXGJhciBzdGFuZGFyIGRldmlhc2kgPSBcc3FydHsyNTB9PTE1LjgxDQokJA0KDQojIyMjIENhYmFuZyBDICgzMCwgMzAsIDM1LCA0MCwgNDUpOg0KDQotIE1lYW4gKHgpOg0KJCQNClxiYXIgeCA9IFxmcmFje1xzdW0geH17bn09XGZyYWN7MzAgKyAzMCArIDM1ICsgNDAgKyA0NX17NX09XGZyYWN7MTg1fXs1fT0zNw0KJCQNCi0gTWVkaWFuIDogMzUNCg0KLSBydW11cyB2YXJpYW5zIDogDQokJA0KXGJhciB4ID0gXGZyYWN7XHNxcnRcc3VtICh4aSAtIHgpXjJ9e259DQokJA0KDQp4aTogTmlsYWkgaW5kaXZpZHUuDQoNCng6IFJhdGEtcmF0YSBzYW1wZWwuDQoNCm46IEp1bWxhaCBkYXRhIGRhbGFtIHNhbXBlbC4NCg0KDQpIaXR1bmcgdmFyaWFucyB0ZXJsZWJpaCBkYWh1bHU6DQokJA0KXGJhciB2YXJpYW5zID0gXGZyYWMge1xzcXJ0ICgzMC0zNyleMiArICgzMC0zNyleMiArLi4uKyg0NS0zNyleMn17NS0xfQ0KJCQNCg0KJCQNClxiYXIgdmFyaWFucyA9IFxmcmFjIHtcc3FydCA0OSArIDQ5ICsgNCArIDY0ICsgNjR9ezUtMX09XGZyYWMge1xzcXJ0IDIzMH17NH09NTcuNQ0KJCQNCg0KLSBIaXR1bmcgc3RhbmRhciBkZXZpYXNpIDoNCg0KJCQNClxiYXIgc3RhbmRhciBkZXZpYXNpID0gXHNxcnR7NTcuNX09Ny41OA0KJCQNCg0KIyMjIyBDYWJhbmcgRCAoNzAsIDc1LCA4MCwgODUsIDkwKToNCg0KLSBNZWFuICh4KToNCiQkDQpcYmFyIHggPSBcZnJhY3tcc3VtIHh9e259PVxmcmFjezcwICsgNzUgKyA4MCArIDg1ICsgOTB9ezV9PVxmcmFjezQwMH17NX09ODANCiQkDQotIE1lZGlhbiA6IDgwDQoNCi0gVmFyaWFucyA6IA0KJCQNClxiYXIgeCA9IFxmcmFje1xzcXJ0XHN1bSAoeGkgLSB4KV4yfXtufQ0KJCQNCg0KeGk6IE5pbGFpIGluZGl2aWR1Lg0KDQp4OiBSYXRhLXJhdGEgc2FtcGVsLg0KDQpuOiBKdW1sYWggZGF0YSBkYWxhbSBzYW1wZWwuDQoNCg0KSGl0dW5nIHZhcmlhbnMgdGVybGViaWggZGFodWx1Og0KJCQNClxiYXIgdmFyaWFucyA9IFxmcmFjIHtcc3FydCAoNzAtODApXjIgKyAoNzUtODApXjIgKy4uLisoOTAtODApXjJ9ezUtMX0NCiQkDQoNCiQkDQpcYmFyIHZhcmlhbnMgPSBcZnJhYyB7XHNxcnQgMTAwICsgMjUgKyAwICsgMjUgKyAxMDB9ezUtMX09XGZyYWMge1xzcXJ0IDI1MH17NH09NjIuNQ0KJCQNCg0KLSBIaXR1bmcgc3RhbmRhciBkZXZpYXNpIDoNCg0KJCQNClxiYXIgc3RhbmRhciBkZXZpYXNpID0gXHNxcnR7NjIuNX09Ny45MQ0KJCQNCg0KIyMgMi4gQ2FiYW5nIG1hbmEgeWFuZyBtZW1pbGlraSBwZW55ZWJhcmFuIGRhdGEgcGFsaW5nIGtlY2lsPyBKZWxhc2thbiBhbGFzYW5ueWEuDQoNClVudHVrIHBlbnllYmFyYW4gZGF0YSB5YW5nIHBhbGluZyBrZWNpbCBraXRhIGJpc2EgbWVsaWhhdCBzdGFuZGFyIGRldmlhc2kgZGFyaSBtYXNpbmcgbWFzaW5nIGNhYmFuZw0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShrbml0cikNCg0KIyBEYXRhIGZyYW1lIHVudHVrIHRhYmVsDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIGBDYWJhbmdgID0gYygiQSIsICJCIiwgIkMiLCAiRCIpLA0KICBgU3RhbmRhciBEZXZpYXNpIChzKWAgPSBjKDcuOTEsIDE1LjgxLCA3LjU4LCA3LjkxKQ0KKQ0KDQojIENldGFrIHRhYmVsDQprYWJsZShkYXRhLCBjb2wubmFtZXMgPSBjKCJDYWJhbmciLCAiU3RhbmRhciBEZXZpYXNpIChzKSIpKQ0KYGBgDQoNCkJpc2Ega2l0YSBsaWhhdCBkaSBkYWxhbSB0YWJlbCBiYWh3YSBjYWJhbmcgYyBtZW1pbGlraSBwZW55ZWJhcmFuIGRhdGEgeWFuZyBwYWxpbmcga2VjaWwgamlrYSBkaWxpaGF0IGRhcmkgc3RhbmRhcmEgZGV2aWFzaSB5YWl0dSA3LjU4LCBpbmkgYXJ0aW55YSBjYWJhbmcgYyB0aWRhayB0ZXJsYWx1IHRlcnNlYmFyIGphdWggZGFyaSByYXRhIHJhdGEgbnlhLg0KDQojIyAzLiBKaWthIHRhcmdldCBwZW5qdWFsYW4gbWluaW11bSBhZGFsYWggNTAganV0YSBydXBpYWgsIGNhYmFuZyBtYW5hIHNhamEgeWFuZyBnYWdhbCBtZW5jYXBhaSB0YXJnZXQgZGkgc2VtdWEgZGF0YW55YT8NCg0KLSBDYWJhbmcgQSAoNTAsIDU1LCA2MCwgNjUsIDcwKSA6IFNlbXVhIGRhdGEgbWVtZW51aGkgdGFyZ2V0DQoNCi0gQ2FiYW5nIEIgKDQwLCA1MCwgNjAsIDcwICw4MCkgOiBBZGEgc2F0dSBkYXRhIHlhbmcgdGlkYWsgbWVtZW51aGkgdGFyZ2V0IHlhaXR1IDQwDQoNCi0gQ2FiYW5nIEMgKDMwLCAzMCwgMzUsIDQwLCA0NSkgOiBTZW11YSBkYXRhIHRpZGFrIG1lbWVudWhpIHRhcmdldA0KDQotIENhYmFuZyBEICg3MCwgNzUsIDgwLCA4NSwgOTApIDogc2VtdWEgZGF0YSBtZW1lbnVoaSB0YXJnZXQNCg0KQ2FiYW5nIEMgYWRhbGFoIHNhdHUgc2F0dSBueWEgY2FiYW5nIHlhbmcgZ2FnYWwgbWVuY2FwYXQgdGFyZ2V0IGRpIHNlbXVhIGRhdGFueWENCiANCiMjIDQuIEJ1YXRsYWggZGlhZ3JhbSBrb3RhayAoYm94IHBsb3QpIHVudHVrIG1lbXZpc3VhbGlzYXNpa2FuIHBlbnllYmFyYW4gZGF0YSBzZXRpYXAgY2FiYW5nLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgcGVuanVhbGFuIGRhcmkgc2V0aWFwIGNhYmFuZyAodGFucGEgb3V0bGllcnMpDQpkYXRhX0EgPC0gYyg1MCwgNTUsIDYwLCA2NSwgNzApDQpkYXRhX0IgPC0gYyg0MCwgNTAsIDYwLCA3MCwgODApDQpkYXRhX0MgPC0gYygzMCwgMzAsIDM1LCA0NSwgNDUpDQpkYXRhX0QgPC0gYyg3MCwgNzUsIDgwLCA4NSwgOTApDQoNCiMgTWVtYnVhdCBib3hwbG90IGRlbmdhbiBQbG90bHkNCnBsb3RfbHkoKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBkYXRhX0EsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLCANCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3NreWJsdWUnKSAgIyBXYXJuYSBib3hwbG90IHVudHVrIENhYmFuZyBBDQogICkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gZGF0YV9CLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEIiLCANCiAgICBib3htZWFuID0gVFJVRSwgDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdwaW5rJykgICMgV2FybmEgYm94cGxvdCB1bnR1ayBDYWJhbmcgQg0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IGRhdGFfQywgDQogICAgdHlwZSA9ICJib3giLCANCiAgICBuYW1lID0gIkNhYmFuZyBDIiwgDQogICAgYm94bWVhbiA9IFRSVUUsIA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnbGlnaHRncmVlbicpICAjIFdhcm5hIGJveHBsb3QgdW50dWsgQ2FiYW5nIEMNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBkYXRhX0QsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgRCIsIA0KICAgIGJveG1lYW4gPSBUUlVFLCANCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ29yYW5nZScpICAjIFdhcm5hIGJveHBsb3QgdW50dWsgQ2FiYW5nIEQNCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIkJveCBQbG90IFBlbmp1YWxhbiBwZXIgQ2FiYW5nIChUYW5wYSBPdXRsaWVycykiLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJQZW5qdWFsYW4gKGp1dGEgcnVwaWFoKSIpLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJDYWJhbmciKQ0KICApDQoNCmBgYA0KDQojIyA1LiBKaWthIEFuZGEgYWRhbGFoIG1hbmFqZXIgcGVydXNhaGFhbiwgYmFnYWltYW5hIEFuZGEgYWthbiBtZW5nZ3VuYWthbiBpbmZvcm1hc2kgaW5pIHVudHVrIG1lcmVuY2FuYWthbiBzdHJhdGVnaSBwZW5pbmdrYXRhbiBwZW5qdWFsYW4/DQoNCktpdGEgaGFydXMgbWVuZ2FuYWxpc2EgZHVsdSBhcGEgcGVueWViYWJueWEgYmFydSBraXRhIGxha3VrYW4gc3RyYXRlZ2kgZGkgYmVyYmFnYWkgY2FiYW5nDQoNCjEuIENhYmFuZyBDOg0KDQogICAtIFNlbXVhIHBlbmp1YWxhbiBkaSBjYWJhbmcgYyBrdXJhbmcgZGFyaSB0YXJnZXQgc2VtdWEsIGhhbCBpbmkgbWVudW5qdWtrYW4gcGVyZm9ybWEgeWFuZyBzYW5nYXQgYnVydWsgZGkgY2FiYW5nIGMuDQogICANCiAgIC0gU3RyYXRlZ2kgbnlhIGFkYWxhaCBraXRhIGhhcnVzIGludmVzdGlnYXNpIGtlbmFwYSBwZW5qdWFsYW5ueWEgYmlzYSBzYW5nYXQgcmVuZGFoIHNlcGVydGkgcHJvZHVrIHlhbmcgdGlkYWsgbGFrdSwgbG9rYXNpIHlhbmcga3VyYW5nIHN0cmF0ZWdpcywgYXRhdSBrb21wZXRpdG9yLiBqaWthIHN1ZGFoIHNlbXVhIGRpIGxha3VrYW4gZGFuIHRpZGFrIGFkYSBwZW1iYWlrYW4gc2FsZXMgZGFyaSBjYWJhbmcgYyBha2FuIG1lbGFrdWthbiBkYXlhIHRhcmlrIHNlcnRhIHByb21vc2kga2VwYWRhIG1hc3lhcmFrYXQgbG9rYWwgeWFuZyBhZGEgZGlzYW5hIHVudHVrIG1lbmluZ2thdGthbiBkYXlhIHRhcmlrIHByb2R1ay4NCg0KDQoyLiBDYWJhbmcgQjoNCg0KICAgLSBEaXNpbmkga2l0YSBsaWF0IGJhaHdhIGFkYSBzYXR1IGRhdGEgZGkgYmF3YWggdGFyZ2V0IHlhaXR1IDQwIGRhbiBzdGFuZGFyIGRldmlhc2kgbnlhIGp1Z2Egc2FuZ2F0IHRpbmdnaSB5YWl0dSAxNS44MSBoYWwgaW5pIG1lbnVuanVra2FuIHBlbnllYmFyYW4gZGF0YSB5YW5nIHNhbmdhdCBiZXNhci4NCiAgIA0KICAgLSBzdHJhdGVnaSBkYWxhbSBjYWJhbmcgYiBhZGFsYWggbWVuaW5na2F0a2FuIHN0cmF0ZWdpIHBlbWFzYXJhbiB1bnR1ayBtZW5qYWdhIHN0YWJpbGl0YXMgcGVuanVhbGFuIHNlcnRhIGtvbnRyb2wga3VhbGl0YXMgcHJvZHVrIHBhZGEgcGVuanVhbGFuLg0KICAgDQogICANCjMuIENhYmFuZyBBIGRhbiBEDQoNCkNhYmFuZyBBIGRhbiBEIG1lbmphZGkgc2F0dSBrYXJlbmEgY2FiYW5nIGluaSBzdWRhaCBkaSBhdGFzIHRhcmdldCBzZW11YSBwZW5qdWFsYW5ueWEgZGFuIHN0YW5kYXIgZGV2aWFzaSBueWEganVnYSBzYW1hIHlhaXR1IDcuOTENCg0KU3RyYXRlZ2k6IEZva3VzIHBhZGEgaW5vdmFzaSBhZ2FyIGJpc2EgbWVuaW5na2F0a2FuIHBlbmp1YWxhbiB5YW5nIGxlYmloIHRpbmdnaSBsYWdpDQogICAgDQojIExhdGloYW4gMg0KDQpQZXJ1c2FoYWFuIFhZWiBtZW5nZWxvbGEgcGVuZ2lyaW1hbiBiYXJhbmcga2UgYmVyYmFnYWkgd2lsYXlhaCBkZW5nYW4gbWVuZ2d1bmFrYW4gYmVyYmFnYSBqZW5pcyB0cmFuc3BvcnRhc2kgU2V0aWFwIHBlbmdpcmltYW4gbWVsaWJhdGthbiBiaWF5YSB0cmFuc3BvcnRhc2ksIHdha3R1IHlhbmcgZGlidXR1aGthbiwgZGFuIGp1bWxhdCBiYXJhbmcgeWFuZyBkaWvEsW7EsW4gQmVyaWt1dCBhZGFsYWggZGFsYSB0ZXJrYWl0IHBlbmdpcmltYW4gYmFyYW5nIGJlcmRhc2Fya2FuIHdpbGF5YWggZGFuIGplbmlzIGJhcmFuZw0KDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtYnVhdCBkYXRhIGZyYW1lDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIFdpbGF5YWggPSBjKCJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsIA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiLCANCiAgICAgICAgICAgICAgIlV0YXJhIiwgIlNlbGF0YW4iLCAiVGltdXIiLCAiQmFyYXQiLCAiVGVuZ2FoIiksDQogIEplbmlzX0JhcmFuZyA9IGMoIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwNCiAgICAgICAgICAgICAgICAgICAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLA0KICAgICAgICAgICAgICAgICAgICJQZXJhbGF0YW4iLCAiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiksDQogIEp1bWxhaF9Vbml0ID0gYygyMDAsIDE1MCwgMTgwLCAxMjAsIDI1MCwgMzAwLCAyMjAsIDE0MCwgMTgwLCAzNTAsIDE3MCwgMjUwLCAxOTAsIDEzMCwgMTgwKSwNCiAgV2FrdHVfamFtID0gYyg1LCA4LCA2LCA3LCA0LCA5LCA3LCA1LCA2LCA4LCA0LCA2LCA3LCA1LCA1KSwNCiAgQmlheWFfcGVyX1VuaXRfUnAgPSBjKDE1MDAwLCA4MDAwLCAxMDAwMCwgMTIwMDAsIDE0MDAwLCANCiAgICAgICAgICAgICAgICAgICAgICAgIDg1MDAsIDk1MDAsIDExMDAwLCAxNDUwMCwgNzgwMCwgDQogICAgICAgICAgICAgICAgICAgICAgICAxMjAwMCwgMTYwMDAsIDgyMDAsIDEwNTAwLCAxMTUwMCkNCikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkZW5nYW4ga25pdHI6OmthYmxlDQprbml0cjo6a2FibGUoZGF0YSwgY29sLm5hbWVzID0gYygiV2lsYXlhaCIsICJKZW5pcyBCYXJhbmciLCAiSnVtbGFoICh1bml0KSIsICJXYWt0dSAoamFtKSIsICJCaWF5YSBwZXIgVW5pdCAoUnApIiksDQogICAgICAgICAgICAgY2FwdGlvbiA9ICJUYWJlbCBEYXRhIERpc3RyaWJ1c2kgQmFyYW5nIikNCg0KYGBgDQoNCiMjIDEgQW5hbGlzaXMgRWZpc2llbnNpIFBlbmdpcmltYW4NCg0KIyMjIFZpc3VhbGlzYXNpa2FuIHBlbmdpcmltYW4gYmFyYW5nIGJlcmRhc2Fya2FuIGp1bWxhaCBiYXJhbmcsIHdha3R1IHBlbmdpcmltYW4sIGRhbiBiaWF5YSBwZXIgdW5pdCBkZW5nYW4gbWVuZ2d1bmFrYW4gcGxvdCAzRA0KDQojIyMjIEVsZWt0cm9uaWsNCg0KKipXaWxheWFoIGRhbiBEYXRhOioqDQoNCioqV2lsYXlhaCBVdGFyYToqKg0KDQpKdW1sYWggYmFyYW5nID0gMjAwIHVuaXQNCg0KV2FrdHUgPSA1IGphbQ0KDQpCaWF5YSBwZXIgdW5pdCA9IFJwMTUsMDAwDQoNCioqV2lsYXlhaCBUZW5nYWg6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDI1MCB1bml0DQoNCldha3R1ID0gNCBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDE0LDAwMA0KDQoqKldpbGF5YWggQmFyYXQ6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDE4MCB1bml0DQoNCldha3R1ID0gNiBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDEyLDAwMA0KDQoqKldpbGF5YWggU2VsYXRhbjoqKg0KDQpKdW1sYWggYmFyYW5nID0gMjUwIHVuaXQNCg0KV2FrdHUgPSA2IGphbQ0KDQpCaWF5YSBwZXIgdW5pdCA9IFJwMTYsMDAwDQoNCg0KIyMjIyBQYWthaWFuDQoNCioqV2lsYXlhaCBkYW4gRGF0YToqKg0KDQoqKldpbGF5YWggVXRhcmE6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDMwMCB1bml0DQoNCldha3R1ID0gOSBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDgsNTAwDQoNCioqV2lsYXlhaCBUZW5nYWg6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDM1MCB1bml0DQoNCldha3R1ID0gOCBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDcsODAwDQoNCioqV2lsYXlhaCBCYXJhdDoqKg0KDQpKdW1sYWggYmFyYW5nID0gMTkwIHVuaXQNCg0KV2FrdHUgPSA3IGphbQ0KDQpCaWF5YSBwZXIgdW5pdCA9IFJwOCwyMDANCg0KKipXaWxheWFoIFNlbGF0YW46KioNCg0KSnVtbGFoIGJhcmFuZyA9IDE1MCB1bml0DQoNCldha3R1ID0gOCBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDgsMDAwDQoNCiMjIyMgTWFrYW5hbg0KDQoqKldpbGF5YWggZGFuIERhdGE6KioNCg0KKipXaWxheWFoIFV0YXJhOioqDQoNCkp1bWxhaCBiYXJhbmcgPSAxODAgdW5pdA0KDQpXYWt0dSA9IDYgamFtDQoNCkJpYXlhIHBlciB1bml0ID0gUnAxMCwwMDANCg0KKipXaWxheWFoIFRlbmdhaDoqKg0KDQpKdW1sYWggYmFyYW5nID0gMjIwIHVuaXQNCg0KV2FrdHUgPSA3IGphbQ0KDQpCaWF5YSBwZXIgdW5pdCA9IFJwOSw1MDANCg0KKipXaWxheWFoIEJhcmF0OioqDQoNCkp1bWxhaCBiYXJhbmcgPSAxMzAgdW5pdA0KDQpXYWt0dSA9IDUgamFtDQoNCkJpYXlhIHBlciB1bml0ID0gUnAxMCw1MDANCg0KIyMjIyBQZXJhbGF0YW4NCg0KKipXaWxheWFoIGRhbiBEYXRhOioqDQoNCioqV2lsYXlhaCBVdGFyYToqKg0KDQpKdW1sYWggYmFyYW5nID0gMTcwIHVuaXQNCg0KV2FrdHUgPSA1IGphbQ0KDQpCaWF5YSBwZXIgdW5pdCA9IFJwMTIsMDAwDQoNCioqV2lsYXlhaCBUZW5nYWg6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDE4MCB1bml0DQoNCldha3R1ID0gNSBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDExLDUwMA0KDQoqKldpbGF5YWggQmFyYXQ6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDEyMCB1bml0DQoNCldha3R1ID0gNyBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDEyLDAwMA0KDQoqKldpbGF5YWggVGltdXI6KioNCg0KSnVtbGFoIGJhcmFuZyA9IDE0MCB1bml0DQoNCldha3R1ID0gNSBqYW0NCg0KQmlheWEgcGVyIHVuaXQgPSBScDExLDAwMA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCiMgSW5zdGFsbCBkYW4gbG9hZCBsaWJyYXJ5IHBsb3RseQ0KaWYgKCFyZXF1aXJlTmFtZXNwYWNlKCJwbG90bHkiLCBxdWlldGx5ID0gVFJVRSkpIHsNCiAgaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikNCn0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGENCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgV2lsYXlhaCA9IGMoIlV0YXJhIiwgIlNlbGF0YW4iLCAiVGltdXIiLCAiQmFyYXQiLCAiVGVuZ2FoIiwgDQogICAgICAgICAgICAgICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsIA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiKSwNCiAgSmVuaXNfQmFyYW5nID0gYygiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCANCiAgICAgICAgICAgICAgICAgICAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCANCiAgICAgICAgICAgICAgICAgICAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIpLA0KICBKdW1sYWhfVW5pdCA9IGMoMjAwLCAxNTAsIDE4MCwgMTIwLCAyNTAsIA0KICAgICAgICAgICAgICAgICAgMzAwLCAyMjAsIDE0MCwgMTgwLCAzNTAsIA0KICAgICAgICAgICAgICAgICAgMTcwLCAyNTAsIDE5MCwgMTMwLCAxODApLA0KICBXYWt0dV9qYW0gPSBjKDUsIDgsIDYsIDcsIDQsIA0KICAgICAgICAgICAgICAgIDksIDcsIDUsIDYsIDgsIA0KICAgICAgICAgICAgICAgIDQsIDYsIDcsIDUsIDUpLA0KICBCaWF5YV9wZXJfVW5pdF9ScCA9IGMoMTUwMDAsIDgwMDAsIDEwMDAwLCAxMjAwMCwgMTQwMDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgODUwMCwgOTUwMCwgMTEwMDAsIDE0NTAwLCA3ODAwLCANCiAgICAgICAgICAgICAgICAgICAgICAgIDEyMDAwLCAxNjAwMCwgODIwMCwgMTA1MDAsIDExNTAwKQ0KKQ0KDQojIE1lbWJ1YXQgM0Qgc2NhdHRlciBwbG90IGRlbmdhbiB0b29sdGlwIHRhbWJhaGFuDQpwbG90X2x5KGRhdGEsIA0KICAgICAgICB4ID0gfkp1bWxhaF9Vbml0LCANCiAgICAgICAgeSA9IH5XYWt0dV9qYW0sIA0KICAgICAgICB6ID0gfkJpYXlhX3Blcl9Vbml0X1JwLCANCiAgICAgICAgY29sb3IgPSB+V2lsYXlhaCwgDQogICAgICAgIGNvbG9ycyA9ICJTZXQxIiwgDQogICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwgDQogICAgICAgIG1vZGUgPSAibWFya2VycyIsIA0KICAgICAgICB0ZXh0ID0gfnBhc3RlKCJXaWxheWFoOiAiLCBXaWxheWFoLCANCiAgICAgICAgICAgICAgICAgICAgICAiPGJyPkplbmlzIEJhcmFuZzogIiwgSmVuaXNfQmFyYW5nLCANCiAgICAgICAgICAgICAgICAgICAgICAiPGJyPkp1bWxhaCBVbml0OiAiLCBKdW1sYWhfVW5pdCwgDQogICAgICAgICAgICAgICAgICAgICAgIjxicj5XYWt0dTogIiwgV2FrdHVfamFtLCAiIGphbSIsIA0KICAgICAgICAgICAgICAgICAgICAgICI8YnI+QmlheWE6IFJwIiwgQmlheWFfcGVyX1VuaXRfUnApLA0KICAgICAgICBob3ZlcmluZm8gPSAidGV4dCIpICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiM0QgU2NhdHRlciBQbG90IFBlbmdpcmltYW4gQmFyYW5nIiwNCiAgICBzY2VuZSA9IGxpc3QoDQogICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiSnVtbGFoIFVuaXQiKSwNCiAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJXYWt0dSBQZW5naXJpbWFuIChqYW0pIiksDQogICAgICB6YXhpcyA9IGxpc3QodGl0bGUgPSAiQmlheWEgcGVyIFVuaXQgKFJwKSIpDQogICAgKQ0KICApDQpgYGANCg0KIyMjIFRlbnR1a2FuIHdpbGF5YWggbWFuYSB5YW5nIG1lbWlsaWtpIGVmaXNpZW5zaSBwZW5naXJpbWFuIHRlcmVuZGFoIGJlcmRhc2Fya2FuIGJpYXlhIHBlciB1bml0IGRhbiB3YWt0dSBwZW5naXJpbWFuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBMb2FkIGxpYnJhcnkgZHBseXINCmxpYnJhcnkoZHBseXIpDQoNCiMgRGF0YQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBXaWxheWFoID0gYygiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiLA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiLA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiKSwNCiAgSmVuaXNfQmFyYW5nID0gYygiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLA0KICAgICAgICAgICAgICAgICAgICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsDQogICAgICAgICAgICAgICAgICAgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCAiTWFrYW5hbiIsICJQZXJhbGF0YW4iKSwNCiAgSnVtbGFoX0JhcmFuZyA9IGMoMjAwLCAxNTAsIDE4MCwgMTIwLCAyNTAsIDMwMCwgMjIwLCAxNDAsIDE4MCwgMzUwLCAxNzAsIDI1MCwgMTkwLCAxMzAsIDE4MCksDQogIFdha3R1X1BlbmdpcmltYW4gPSBjKDUsIDgsIDYsIDcsIDQsIDksIDcsIDUsIDYsIDgsIDQsIDYsIDcsIDUsIDUpLA0KICBCaWF5YV9QZXJfVW5pdCA9IGMoMTUwMDAsIDgwMDAsIDEwMDAwLCAxMjAwMCwgMTQwMDAsIDg1MDAsIDk1MDAsIDExMDAwLCAxNDUwMCwgNzgwMCwgMTIwMDAsIDE2MDAwLCA4MjAwLCAxMDUwMCwgMTE1MDApDQopDQoNCiMgTWVuZ2hpdHVuZyBwZXJzZW50YXNlIHBlbmdpcmltYW4gbGFtYmF0ICg+PSA3IGphbSBzZWJhZ2FpIGJhdGFzKQ0KdGFyZ2V0IDwtIGRhdGEgJT4lDQogIGdyb3VwX2J5KFdpbGF5YWgpICU+JQ0KICBzdW1tYXJpc2UoDQogICAgVG90YWxfUGVuZ2lyaW1hbiA9IG4oKSwNCiAgICBKdW1sYWhfTGFtYmF0ID0gc3VtKFdha3R1X1BlbmdpcmltYW4gPj0gNyksDQogICAgUGVyc2VudGFzZV9MYW1iYXQgPSAoSnVtbGFoX0xhbWJhdCAvIFRvdGFsX1BlbmdpcmltYW4pICogMTAwDQogICkNCg0KIyBNZW5hbXBpbGthbiBoYXNpbA0KcHJpbnQodGFyZ2V0KQ0KYGBgDQoNCiMjIDIgUmVrb21lbmRhc2kgT3BlcmFzaW9uYWwNCg0KIyMjIEJlcmRhc2Fya2FuIGhhc8SxbCBhbmFsaXNpcywgd2lsYXlhaCBtYW5hIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbj8NCg0KSmF3YWJhbjoNCg0KQmVyZGFzYXJrYW4gaGFzaWwgYW5hbGlzYSBkaSBhdGFzIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIGFkYSBkaSB3aWxheWFoIHNlbGF0YW4sIGthcmVuYSBlZmlzaWVuc2kgcGVuZ2lyaW1hbiBkaSBzZWxhdGFuIG1lbmNhcGFpIDIgZGFyaSAzIHRvdGFsIHBlbmdpcmltYW4geWFuZyBsYW1iYXQgZGFsYW0gcGVuZ2lyaW1hbm55YS4NCg0KIyMjIEFwYSByZWtvbWVuZGFzaSB1bnR1ayBtZW5ndXJhbmdpIGJpYXlhIGRhbiB3YWt0dSBwZW5naXJpbWFuIGRpIHdpbGF5YWggdGVyc2VidXQ/DQoNCkphd2FiYW46DQoNCjEuIFBlbmluZ2thdGFuIFNpc3RlbSBSdXRlIFBlbmdpcmltYW46IE1lbmdndW5ha2FuIHRla25vbG9naSByb3V0ZSBvcHRpbWl6YXRpb24gdW50dWsgbWVuZ2hpbmRhcmkga2VtYWNldGFuIGF0YXUgbWVtaWxpaCBqYWx1ciB5YW5nIGxlYmloIGVmaXNpZW4gZGFwYXQgbWVuZ3VyYW5naSB3YWt0dSBwZW5naXJpbWFuIHNlY2FyYSBzaWduaWZpa2FuLg0KDQoyLiBKYWR3YWwgUGVuZ2lyaW1hbiB5YW5nIExlYmloIEZsZWtzaWJlbDogTWVueWVzdWFpa2FuIGphZHdhbCBwZW5naXJpbWFuIGRlbmdhbiBrb25kaXNpIGxhbHUgbGludGFzIGF0YXUgbWVuZ2d1bmFrYW4gbW9kZWwgcGVuZ2lyaW1hbiAyNCBqYW0gYmlzYSBtZW1iYW50dSBtZW5ndXJhbmdpIHBlbnVuZGFhbiwgdGVydXRhbWEgcGFkYSBqYW0gc2lidWsuDQoNCjMuIFNpc3RlbSBQZWxhY2FrYW4gUmVhbC1UaW1lOiBJbXBsZW1lbnRhc2kgc2lzdGVtIHBlbGFjYWthbiBwZW5naXJpbWFuIHNlY2FyYSByZWFsLXRpbWUgZGFwYXQgbWVtYmFudHUgdW50dWsgbWVuZ2V0YWh1aSBwb3Npc2kgcGVuZ2lyaW1hbiBrYXBhbiBzYWphLiBIYWwgaW5pIGRhcGF0IG1lbXBlcmNlcGF0IHJlc3BvbnMga2V0aWthIHRlcmphZGkga2V0ZXJsYW1iYXRhbiBhdGF1IG1hc2FsYWggbGFpbm55YS4NCg0KNC4gUGVyaW5nYXRhbiBEaW5pIHVudHVrIFBlbmdpcmltYW4gTGFtYmF0OiBTaXN0ZW0gYmVyYmFzaXMgQUkgZGFwYXQgbWVtcHJlZGlrc2kga2V0ZXJsYW1iYXRhbiBwZW5naXJpbWFuIGRlbmdhbiBtZW5nYW5hbGlzaXMgcG9sYSBsYWx1IGxpbnRhcyBkYW4ga29uZGlzaSBjdWFjYSwgc2VydGEgbWVtYmVyaSBwZXJpbmdhdGFuIGRpbmkgdW50dWsgbWVuY2VnYWggcGVuZ2lyaW1hbiB0ZXJsYW1iYXQuDQoNCiMjIDMgS2luZXJqYSBCZXJkYXNhcmthbiBKZW5pcyBCYXJhbmcNCg0KQW5hbMSxc8SxcyBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nIGRhbiB3aWxheWFoIE1hbmEgeWFuZyBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIGxlYmloIGNlcGF0IGRhbiBiaWF5YSBwZXIgdW5pdCBsZWJpaCByZW5kYWg/DQoNCioqV2FrdHUgUGVuZ2lyaW1hbiAoUmF0YS1yYXRhKSoqDQoNClVudHVrIG1lbmdhbmFsaXNpcyBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nLCBtYXJpIGtpdGEgbGloYXQgd2FrdHUgcmF0YS1yYXRhIHBlbmdpcmltYW4gdW50dWsgc2V0aWFwIGplbmlzIGJhcmFuZyBkaSBzZXRpYXAgd2lsYXlhaDoNCg0KYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGtuaXRyKQ0KDQojIERhdGEgZnJhbWUgdW50dWsgdGFiZWwNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgYEplbmlzIGJhcmFuZ2AgPSBjKCJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCAiTWFrYW5hbiIsICJQZXJhbGF0YW4iKSwNCiAgYHdpbGF5YWggdXRhcmFgID0gYyg1LCA5LCAiLSIsIDQpLA0KICBgd2lsYXlhaCBzZWxhdGFuYCA9IGMoNiwgOCwgNywgIi0iKSwNCiAgYHdpbGF5YWggdGltdXJgID0gYygiLSIgLCA3LCA2LCA1KSwNCiAgYHdpbGF5YWggYmFyYXRgID0gYyg2LCAiLSIsIDUsIDcpLA0KICBgd2lsYXlhaCB0ZW5nYWhgID0gYyg0LCA4LCAiLSIsIDUpDQopDQoNCiMgQ2V0YWsgdGFiZWwNCmthYmxlKGRhdGEsIGNvbC5uYW1lcyA9IGMoIkplbmlzIGJhcmFuZyIsICJXaWxheWFoIHV0YXJhIiwgIldpbGF5YWggc2VsYXRhbiIsICJXaWxheWFoIFRpbXVyIiwgIldpbGF5YWggYmFyYXQiLCAiV2lsYXlhaCB0ZW5nYWgiKSkNCmBgYA0KDQoqKkJpYXlhIFBlciBVbml0IChSYXRhLXJhdGEpKioNClVudHVrIGJpYXlhIHBlciB1bml0Og0KDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQoNCiMgRGF0YSBmcmFtZSB1bnR1ayB0YWJlbA0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBgSmVuaXMgYmFyYW5nYCA9IGMoIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIpLA0KICBgd2lsYXlhaCB1dGFyYWAgPSBjKCIxNS4wMDAiICwgIjguNTAwIiAsICItIiwgIjEyLjAwMCIpLA0KICBgd2lsYXlhaCBzZWxhdGFuYCA9IGMoIjE2LjAwMCIgLCAiOC4wMDAiICwgIjkuNTAwIiAsICItIiksDQogIGB3aWxheWFoIHRpbXVyYCA9IGMoIi0iICwgIjguMjAwIiAsICIxMC4wMDAiICwgIjExLjAwMCIpLA0KICBgd2lsYXlhaCBiYXJhdGAgPSBjKCIxNC41MDAiICwgIi0iLCAiMTAuNTAwIiAsICIxMi4wMDAiKSwNCiAgYHdpbGF5YWggdGVuZ2FoYCA9IGMoIjE0LjAwMCIgLCAiNy44MDAiICwgIi0iLCAiMTEuNTAwIikNCikNCg0KIyBDZXRhayB0YWJlbA0Ka2FibGUoZGF0YSwgY29sLm5hbWVzID0gYygiSmVuaXMgYmFyYW5nIiwgIldpbGF5YWggdXRhcmEiLCAiV2lsYXlhaCBzZWxhdGFuIiwgIldpbGF5YWggVGltdXIiLCAiV2lsYXlhaCBiYXJhdCIsICJXaWxheWFoIHRlbmdhaCIpKQ0KYGBgDQoNCldha3R1IFBlbmdpcmltYW4gQ2VwYXQ6IFdpbGF5YWggVGVuZ2FoIGRhbiBVdGFyYSBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIHRlcmNlcGF0IHVudHVrIG1hc2luZyBtYXNpbmcgYmFyYW5nLCB5YWl0dSBiYXJhbmcgZWxla3Ryb25payBkaSB3aWxheWFoIHRlbmdhaCBkYW4gcGVyYWxhdGFuIGRpIHdpbGF5YWggdXRhcmEuDQoNCkJpYXlhIFBlciBVbml0IFJlbmRhaDogV2lsYXlhaCBUZW5nYWggbWVtaWxpa2kgYmlheWEgcGVuZ2lyaW1hbiB5YW5nIGN1a3VwIHJlbmRhaCB5YWl0dSBwYWthaWFuDQoNCktlc2ltcHVsYW5ueWEgV2lsYXlhaCB0ZW5nYWggbWVtaWlsa2kgV2FrdHUgcGVuZ2lyaW1hbiBjZXBhdCBkYWxhbSB3YWt0dSA0IGphbSB1bnR1ayBtZW5naXJpbSBiYXJhbmcgZWxla3Ryb25payBsYWx1IHdpbGF5YWggdGVuZ2FoIGp1Z2EgbWVtcHVueWFpIGJpYXlhIHlhbmcgc2FuZ2F0IHJlbmRhaCBkaSBiYW5kaW5nIGJpYXlhIHBlciB1bml0IGRpIHdpbGF5YWggbGFpbiB5YWl0dSA3LjgwMCB1bnR1ayBiYXJhbmcgcGFrYWlhbi4NCg0KIyBSZWZlcmVuc2kgDQoNCioqaHR0cHM6Ly9ib29rZG93bi5vcmcvZHNjaWVuY2VsYWJzL3N0YXRpc3Rpa2FfZGFzYXIvX2Jvb2svVWt1cmFuX1BlbnllYmFyYW5fRGF0YS5odG1sKioNCg0KYWdhciB0aWRhayBzYWxhaCBwYWhhbSByZWZlcmVuc2kgeWFuZyBzYXlhIGd1bmFrYW4gaXR1IG1lbmdndW5ha2FuIGRhdGEgZGFyaSB0dWdhcyB5YW5nIGFkYSBkaSBkYWxhbSBidWt1IHRlcnNlYnV0LCBzYXlhIHRpZGFrIG1lbmdhbWJpbCBkYXRhIGRhcmkgbHVhciBrYXJlbmEgZGF0YSBueWEgc3VkYWggbGVuZ2thcCBkaSBidWt1IGl0dSB0ZXJpbWFrYXNpaC4=