Code
Ukuran Pemutusan Data
Menghitung Mean, Median, Modus Data
Berkelompok
Ukuran Pemusatan dalam
Studi Kasus
Bisnis:
Menghitung Rata-rata Penjualan
Studi Kasus:
Sebuah perusahaan retail ingin mengetahui rata-rata penjualan produk
mereka dalam satu minggu untuk menilai performa bisnis dan merencanakan
strategi penjualan. Data penjualan unit produk selama 7 hari terakhir
adalah sebagai berikut:
Hari 1: 150 unit
Hari 2: 180 unit
Hari 3: 160 unit
Hari 4: 170 unit
Hari 5: 160 unit
Hari 6: 175 unit
Hari 7: 165 unit
Tujuan: Menghitung rata-rata (mean) penjualan per
hari.
Langkah-Langkah
Menghitung Rata-rata (Mean):
Untuk menghitung rata-rata penjualan, kita jumlahkan seluruh jumlah
unit penjualan dan kemudian bagi dengan jumlah hari yang diamati (dalam
hal ini, 7 hari).
Jumlahkan seluruh nilai penjualan:
150 + 180 + 160 + 170 + 160 + 175 + 165 = 1.160 unit
Bagi jumlah total dengan jumlah hari (7
hari):
Rata-rata = 1.160 / 7 = 165,71 unit
Hasil: Rata-rata penjualan per hari adalah sekitar
165,71 unit . Ini memberikan gambaran umum mengenai
kinerja penjualan selama seminggu.
Kesehatan:
Menghitung Rata-rata Tekanan Darah
Studi Kasus:
Seorang dokter ingin menganalisis rata-rata tekanan darah dari
beberapa pasien yang datang untuk pemeriksaan kesehatan. Data tekanan
darah yang diukur pada 5 pasien adalah sebagai berikut (dalam mmHg):
Pasien 1: 120/80 mmHg
Pasien 2: 125/85 mmHg
Pasien 3: 130/90 mmHg
Pasien 4: 118/78 mmHg
Pasien 5: 122/82 mmHg
Tujuan: Menghitung rata-rata tekanan darah sistolik
dan diastolik.
Langkah-Langkah
Menghitung Rata-rata (Mean) Tekanan Darah:
Tekanan darah sistolik (angka pertama)
120 + 125 + 130 + 118 + 122 = 615 mmHg
Jumlahkan angka sistolik pada kelima pasien dan bagi dengan jumlah
pasien (5):
Rata-rata sistolik = 615 / 5 = 123 mmHg
Tekanan darah diastolik (angka kedua)
80 + 85 + 90 + 78 + 82 = 415 mmHg
Jumlahkan angka diastolik pada kelima pasien dan bagi dengan jumlah
pasien (5):
Rata-rata diastolik = 415 / 5 = 83 mmHg
Hasil:
Pendidikan:
Menghitung Rata-rata Nilai Ujian Siswa
Studi Kasus:
Seorang guru ingin mengetahui rata-rata nilai ujian matematika dari 6
siswa di kelasnya untuk mengevaluasi hasil belajar mereka. Berikut
adalah nilai ujian matematika para siswa:
Siswa 1: 85
Siswa 2: 90
Siswa 3: 75
Siswa 4: 88
Siswa 5: 92
Siswa 6: 80
Tujuan: Menghitung rata-rata nilai ujian
matematika.
Langkah-Langkah
Menghitung Rata-rata (Mean) Nilai:
Jumlahkan seluruh nilai ujian:
85 + 90 + 75 + 88 + 92 + 80 = 510
Bagi jumlah total dengan jumlah siswa (6
siswa):
Rata-rata nilai = 510 / 6 = 85
Hasil: Rata-rata nilai ujian matematika para siswa
adalah 85 .
LS0tDQp0aXRsZTogIlVrdXJhbiBQZW11dHVzYW4gRGF0YSINCnN1YnRpdGxlOiAiTWVuZ2hpdHVuZyBNZWFuLCBNZWRpYW4sIE1vZHVzIERhdGEgQmVya2Vsb21wb2siDQphdXRob3I6IA0KICAtICJOb3ZhIFNpdG9ydXMgNTIyNDAwMjMiDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIHNyYz0iTnMucG5nIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iIj4NCg0KDQojIE1lbmdoaXR1bmcgTWVhbiwgTWVkaWFuLCBNb2R1cyBEYXRhIEJlcmtlbG9tcG9rDQojIyBNZWFuIERhdGEgS2Vsb21wb2sNCiMjIyBEZWZpbmlzaSBNZWFuIERhdGEgS2Vsb21wb2sNCk1lYW4gZGF0YSBrZWxvbXBvayBhZGFsYWggcGVuZ3VrdXJhbiByYXRhLXJhdGEgeWFuZyBkaWhpdHVuZyBkYXJpIGt1bXB1bGFuIGRhdGEgeWFuZyB0ZWxhaCBkaWJhZ2kgZGFsYW0gYmViZXJhcGEga2Vsb21wb2sgYXRhdSBrZWxhcyBpbnRlcnZhbC4gVW50dWsgZGF0YSBrZWxvbXBvaywgbWVhbiBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQpcWw0KXHRleHR7TWVhbn0gPSBcZnJhY3tcc3VtIChmIFxjZG90IHjMhCl9e1xzdW0gZn0NClxdDQoNClBlbmplbGFzYW4gUnVtdXM6DQoNCi0gXChmXCk6IEZyZWt1ZW5zaSBzZXRpYXAga2VsYXMuDQoNCi0gXCh4zIRcKTogVGl0aWsgdGVuZ2FoIHNldGlhcCBrZWxhcy4NCg0KLSBcKGYgXGNkb3QgeMyEXCk6IEhhc2lsIHBlcmthbGlhbiBmcmVrdWVuc2kgZGVuZ2FuIHRpdGlrIHRlbmdhaC4NCg0KLSBcKFxzdW0gZlwpOiBKdW1sYWggdG90YWwgZnJla3VlbnNpLg0KDQotIFwoXHN1bSAoZiBcY2RvdCB4zIQpXCk6IFRvdGFsIGhhc2lsIHBlcmthbGlhbiBhbnRhcmEgXChmXCkgZGFuIFwoeMyEXCkuDQoNCg0KIyMjIENvbnRvaCBNZWFuIERhdGEgQmVya2Vsb21wb2sNCnwgKipLZWxhcyBJbnRlcnZhbCoqIHwgKipGcmVrdWVuc2kgKGYpKip8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxMCAtIDIwICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgIHwgDQp8IDIwIC0gMzAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgfA0KfCAzMCAtIDQwICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgIHwgDQp8IDQwIC0gNTAgICAgICAgICAgIHwgMTAgICAgICAgICAgICAgICAgfCANCnwgNTAgLSA2MCAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICB8DQoNCg0KUGVueWVsZXNhaWFuOg0KDQp8ICoqS2VsYXMgSW50ZXJ2YWwqKiB8ICoqRnJla3VlbnNpIChmKSoqIHwgKipUaXRpayBUZW5nYWggKHjMhCkqKiB8ICoqZiDii4UgeMyEKiogfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfA0KfCAxMCAtIDIwICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgICAgIHwgNzUgICAgICAgICB8DQp8IDIwIC0gMzAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgfCAyNSAgICAgICAgICAgICAgICAgICAgfCAyMDAgICAgICAgIHwNCnwgMzAgLSA0MCAgICAgICAgICAgfCAxNSAgICAgICAgICAgICAgICB8IDM1ICAgICAgICAgICAgICAgICAgICB8IDUyNSAgICAgICAgfA0KfCA0MCAtIDUwICAgICAgICAgICB8IDEwICAgICAgICAgICAgICAgIHwgNDUgICAgICAgICAgICAgICAgICAgIHwgNDUwICAgICAgICB8DQp8IDUwIC0gNjAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgfCA1NSAgICAgICAgICAgICAgICAgICAgfCAxMTAgICAgICAgIHwNCg0KDQpMYW5na2FoLWxhbmdrYWggUGVyaGl0dW5nYW4NCg0KMS4gTWVuZ2hpdHVuZyBcKCBmIFxjZG90IFxiYXJ7eH0gXCkNCg0KLSBLZWxhcyAxMCAtIDIwOiBcKCA1IFx0aW1lcyAxNSA9IDc1IFwpDQotIEtlbGFzIDIwIC0gMzA6IFwoIDggXHRpbWVzIDI1ID0gMjAwIFwpDQotIEtlbGFzIDMwIC0gNDA6IFwoIDE1IFx0aW1lcyAzNSA9IDUyNSBcKQ0KLSBLZWxhcyA0MCAtIDUwOiBcKCAxMCBcdGltZXMgNDUgPSA0NTAgXCkNCi0gS2VsYXMgNTAgLSA2MDogXCggMiBcdGltZXMgNTUgPSAxMTAgXCkNCg0KMi4gTWVuanVtbGFoa2FuIGhhc2lsIHBlcmthbGlhbiBcKCBmIFxjZG90IFxiYXJ7eH0gXCkNCg0KXFsNCjc1ICsgMjAwICsgNTI1ICsgNDUwICsgMTEwID0gMTM2MA0KXF0NCg0KMy4gTWVuanVtbGFoa2FuIGZyZWt1ZW5zaSBcKCBmIFwpDQoNClxbDQo1ICsgOCArIDE1ICsgMTAgKyAyID0gNDANClxdDQoNCjQuIE1lbmdoaXR1bmcgTWVhbg0KDQoNClxbDQpcdGV4dHtNZWFufSA9IFxmcmFjezEzNjB9ezQwfSA9IDM0DQpcXQ0KDQoNCiMjIyBNZWFuIERhdGEgS2Vsb21wb2sgZGFsYW0gQm94cGxvdA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGE6IGR1YSBza2VuYXJpbywgc2F0dSBkZW5nYW4gb3V0bGllcnMsIHNhdHUgdGFucGEgb3V0bGllcnMNCmRhdGFfZGVuZ2FuX291dGxpZXJzIDwtIGMoMTUsIDI1LCAzNSwgNDUsIDU1LCAxNTApICAjIERhdGEgZGVuZ2FuIG91dGxpZXIgKDE1MCkNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gYygxNSwgMjUsIDM1LCA0NSwgNTUpICAjIERhdGEgdGFucGEgb3V0bGllcnMNCg0KIyBNZW5naGl0dW5nIHJhdGEtcmF0YSB1bnR1ayBrZWR1YSBkYXRhc2V0DQptZWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVhbl90YW5wYV9vdXRsaWVycyA8LSBtZWFuKGRhdGFfdGFucGFfb3V0bGllcnMpDQoNCiMgTWVuZ2dhYnVuZ2thbiBkYXRhIGtlIGRhbGFtIHNhdHUgZGF0YSBmcmFtZSB1bnR1ayB2aXN1YWxpc2FzaQ0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBOaWxhaSA9IGMoZGF0YV9kZW5nYW5fb3V0bGllcnMsIGRhdGFfdGFucGFfb3V0bGllcnMpLA0KICBLZWxvbXBvayA9IHJlcChjKCJEZW5nYW4gT3V0bGllcnMiLCAiVGFucGEgT3V0bGllcnMiKSwgDQogICAgICAgICAgICAgICAgIHRpbWVzID0gYyhsZW5ndGgoZGF0YV9kZW5nYW5fb3V0bGllcnMpLCBsZW5ndGgoZGF0YV90YW5wYV9vdXRsaWVycykpKQ0KKQ0KDQojIE1lbWJ1YXQgYm94cGxvdCBtZW5nZ3VuYWthbiBQbG90bHkgZGVuZ2FuIG91dGxpZXJzIGRpdGFtcGlsa2FuIGRhbiB3YXJuYSBrdW5pbmcgZGFuIG1lcmFoDQpwbG90IDwtIHBsb3RfbHkoDQogIGRhdGEsIA0KICB5ID0gfk5pbGFpLCANCiAgY29sb3IgPSB+S2Vsb21wb2ssIA0KICBjb2xvcnMgPSBjKCJyZWQiLCAieWVsbG93IiksICAjIFdhcm5hIG1lcmFoIHVudHVrIFRhbnBhIE91dGxpZXJzLCBrdW5pbmcgdW50dWsgRGVuZ2FuIE91dGxpZXJzDQogIHR5cGUgPSAiYm94IiwgDQogIGJveHBvaW50cyA9ICJvdXRsaWVycyIgICMgTWVuYW1waWxrYW4gdGl0aWsgb3V0bGllcnMNCikgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBNZWFuIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiRnJla3VlbnNpIiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIktlbGFzIEludGVydmFsIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9ICJEZW5nYW4gT3V0bGllcnMiLA0KICAgICAgICB5ID0gbWVhbl9kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTWVhbjoiLCByb3VuZChtZWFuX2Rlbmdhbl9vdXRsaWVycywgMikpLA0KICAgICAgICBzaG93YXJyb3cgPSBUUlVFLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApLA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWFuX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lYW46Iiwgcm91bmQobWVhbl90YW5wYV9vdXRsaWVycywgMikpLA0KICAgICAgICBzaG93YXJyb3cgPSBUUlVFLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApDQogICAgKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gcGxvdA0KcGxvdA0KDQpgYGANCg0KIyMjIE1lYW4gRGF0YSBLZWxvbXBvayBEYWxhbSBIaXN0b2dyYW0NCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YTogZHVhIHNrZW5hcmlvLCBzYXR1IGRlbmdhbiBvdXRsaWVycywgc2F0dSB0YW5wYSBvdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYygxNSwgMjUsIDM1LCA0NSwgNTUsIDE1MCkgICMgRGF0YSBkZW5nYW4gb3V0bGllciAoMTUwKQ0KZGF0YV90YW5wYV9vdXRsaWVycyA8LSBjKDE1LCAyNSwgMzUsIDQ1LCA1NSkgICMgRGF0YSB0YW5wYSBvdXRsaWVycw0KDQojIE1lbWJ1YXQgZGVuc2l0eSBwbG90IHVudHVrIG1hc2luZy1tYXNpbmcgZGF0YXNldA0KZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMgPC0gZGVuc2l0eShkYXRhX2Rlbmdhbl9vdXRsaWVycykNCmRlbnNpdHlfdGFucGFfb3V0bGllcnMgPC0gZGVuc2l0eShkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIFBhc3Rpa2FuIHRpZGFrIGFkYSBuaWxhaSBuZWdhdGlmIGRpIHggZGFuIHkNCmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHggPC0gcG1heCgwLCBkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR4KQ0KZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4IDwtIHBtYXgoMCwgZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4KQ0KDQojIE1lbmdoaXR1bmcgcmF0YS1yYXRhDQptZWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVhbl90YW5wYV9vdXRsaWVycyA8LSBtZWFuKGRhdGFfdGFucGFfb3V0bGllcnMpDQoNCiMgTWVtYnVhdCBwbG90IG1lbmdndW5ha2FuIFBsb3RseQ0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogICMgTWVuYW1iYWhrYW4gZGVuc2l0eSBwbG90IHVudHVrIGRhdGFzZXQgZGVuZ2FuIG91dGxpZXJzDQogIGFkZF90cmFjZSgNCiAgICB4ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5LA0KICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgbW9kZSA9ICdsaW5lcycsDQogICAgbmFtZSA9ICJEZW5nYW4gT3V0bGllcnMiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjIyLCA0NSwgMzgsIDAuOCknLCB3aWR0aCA9IDIpDQogICkgJT4lDQogICMgTWVuYW1iYWhrYW4gZGVuc2l0eSBwbG90IHVudHVrIGRhdGFzZXQgdGFucGEgb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4LA0KICAgIHkgPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5LA0KICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgbW9kZSA9ICdsaW5lcycsDQogICAgbmFtZSA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgzOCwgMTY2LCA5MSwgMC44KScsIHdpZHRoID0gMikNCiAgKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBnYXJpcyByYXRhLXJhdGEgdW50dWsgZGF0YXNldCBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSBjKG1lYW5fZGVuZ2FuX291dGxpZXJzLCBtZWFuX2Rlbmdhbl9vdXRsaWVycyksDQogICAgeSA9IGMoMCwgbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpKSwNCiAgICB0eXBlID0gInNjYXR0ZXIiLA0KICAgIG1vZGUgPSAibGluZXMiLA0KICAgIG5hbWUgPSAiUmF0YS1yYXRhIChEZW5nYW4gT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDIyMiwgNDUsIDM4LCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBnYXJpcyByYXRhLXJhdGEgdW50dWsgZGF0YXNldCB0YW5wYSBvdXRsaWVycw0KICBhZGRfdHJhY2UoDQogICAgeCA9IGMobWVhbl90YW5wYV9vdXRsaWVycywgbWVhbl90YW5wYV9vdXRsaWVycyksDQogICAgeSA9IGMoMCwgbWF4KGRlbnNpdHlfdGFucGFfb3V0bGllcnMkeSkpLA0KICAgIHR5cGUgPSAic2NhdHRlciIsDQogICAgbW9kZSA9ICJsaW5lcyIsDQogICAgbmFtZSA9ICJSYXRhLXJhdGEgKFRhbnBhIE91dGxpZXJzKSIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgzOCwgMTY2LCA5MSwgMC42KScsIGRhc2ggPSAnZGFzaCcpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBNZWFuIHBhZGEgRGVuc2l0eSBQbG90IiwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiRnJla3VlbnNpIiksDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIktlbGFzIEludGVydmFsIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgIyBBbm90YXNpIHVudHVrIHJhdGEtcmF0YSBkYXRhc2V0IGRlbmdhbiBvdXRsaWVycw0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1lYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB5ID0gbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpICogMC45LA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lYW46Iiwgcm91bmQobWVhbl9kZW5nYW5fb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMiwNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC0zMCwgICMgUG9zaXNpIHRla3Mgc2VkaWtpdCBsZWJpaCB0aW5nZ2kgZGFyaSBnYXJpcw0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDIyMiwgNDUsIDM4LCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKSwNCiAgICAgICMgQW5vdGFzaSB1bnR1ayByYXRhLXJhdGEgZGF0YXNldCB0YW5wYSBvdXRsaWVycw0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1lYW5fdGFucGFfb3V0bGllcnMsDQogICAgICAgIHkgPSBtYXgoZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5KSAqIDAuOSwNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWFuOiIsIHJvdW5kKG1lYW5fdGFucGFfb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMiwNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC00NSwgICMgUG9zaXNpIHRla3Mgc2VkaWtpdCBsZWJpaCB0aW5nZ2kgZGFyaSBnYXJpcw0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDM4LCAxNjYsIDkxLCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCmBgYA0KDQojIyBNZWRpYW4gRGF0YSBLZWxvbXBvaw0KIyMjIERlZmluaSBNZWRpYW4gRGF0YSBLZWxvbXBvaw0KTWVkaWFuIGRhdGEga2Vsb21wb2sgbWVydXBha2FuIGplbmlzIGRhdGEgbWVkaWFuIHlhbmcgYmlhc2FueWEgZGlzYWppa2FuIGRhbGFtIGJlbnR1ayB0YWJlbCBmcmVrdWVuc2kgZGFuIHRlbGFoIGRpa2Vsb21wb2trYW4gZGFsYW0ga2VsYXMgaW50ZXJ2YWwgc2VjYXJhIG1hdGVtYXRpcy4gVW50dWsgZGF0YSBrZWxvbXBvaywgbWVhbiBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQpcWw0KXHRleHR7TWVkaWFufSA9IEwgKyBcbGVmdCggXGZyYWN7XGZyYWN7Tn17Mn0gLSBGfXtmX219IFxyaWdodCkgXGNkb3QgYw0KXF0NCg0KUGVuamVsYXNhbiBSdW11czoNCg0KLSBcKExcKTogQmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuLg0KDQotIFwoTlwpOiBKdW1sYWggdG90YWwgZnJla3VlbnNpIChcKFxzdW0gZlwpKS4NCg0KLSBcKEZcKTogRnJla3VlbnNpIGt1bXVsYXRpZiBzZWJlbHVtIGtlbGFzIG1lZGlhbi4NCg0KLSBcKGZfbVwpOiBGcmVrdWVuc2kga2VsYXMgbWVkaWFuLg0KDQotIFwoY1wpOiBMZWJhciBrZWxhcy4NCg0KTGFuZ2thaC1sYW5na2FoOg0KDQoxLiBIaXR1bmcganVtbGFoIHRvdGFsIGZyZWt1ZW5zaSAoXChOID0gXHN1bSBmXCkpLg0KDQoyLiBDYXJpIHBvc2lzaSBtZWRpYW4gZGVuZ2FuIFwoTiAvIDJcKS4NCg0KMy4gSWRlbnRpZmlrYXNpICoqa2VsYXMgbWVkaWFuKiogKGtlbGFzIGRpIG1hbmEga3VtdWxhdGlmIGZyZWt1ZW5zaSBtZW5jYWt1cCBcKE4gLyAyXCkpLg0KDQo0LiBTdWJzdGl0dXNpIG5pbGFpIFwoTFwpLCBcKEZcKSwgXChmX21cKSwgZGFuIFwoY1wpIGtlIGRhbGFtIHJ1bXVzLg0KDQoNCiMjIyBDb250b2ggTWVhbiBEYXRhIEJlcmtlbG9tcG9rDQp8ICoqS2VsYXMgSW50ZXJ2YWwqKiB8ICoqRnJla3VlbnNpIChmKSoqfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgMTAgLSAyMCAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICB8IA0KfCAyMCAtIDMwICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgIHwNCnwgMzAgLSA0MCAgICAgICAgICAgfCAxNSAgICAgICAgICAgICAgICB8IA0KfCA0MCAtIDUwICAgICAgICAgICB8IDEwICAgICAgICAgICAgICAgIHwgDQp8IDUwIC0gNjAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgfA0KDQpQZW55ZWxlc2FpYW46DQoNCnwgKipLZWxhcyBJbnRlcnZhbCoqIHwgKipGcmVrdWVuc2kgKGYpKiogfCAqKkZyZWt1ZW5zaSBLdW11bGF0aWYqKiB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxMCAtIDIwICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAyMCAtIDMwICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgIHwgMTMgICAgICAgICAgICAgICAgICAgICAgfA0KfCAzMCAtIDQwICAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgIHwgMjggICAgICAgICAgICAgICAgICAgICAgfA0KfCA0MCAtIDUwICAgICAgICAgICB8IDEwICAgICAgICAgICAgICAgIHwgMzggICAgICAgICAgICAgICAgICAgICAgfA0KfCA1MCAtIDYwICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwgNDAgICAgICAgICAgICAgICAgICAgICAgfA0KDQotIFwoTiA9IDQwXCksIG1ha2EgXChOIC8gMiA9IDIwXCkuDQoNCi0gS2VsYXMgbWVkaWFuIGFkYWxhaCAqKjMwIC0gNDAqKiBrYXJlbmEga3VtdWxhdGlmIGZyZWt1ZW5zaSBzZWJlbHVtIDIwIGFkYWxhaCAxMywgZGFuIDI4IG1lbmNha3VwIDIwLg0KDQpQYXJhbWV0ZXI6DQoNCi0gXChMID0gMzBcKSAoYmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuKSwNCg0KLSBcKEYgPSAxM1wpIChmcmVrdWVuc2kga3VtdWxhdGlmIHNlYmVsdW0ga2VsYXMgbWVkaWFuKSwNCg0KLSBcKGZfbSA9IDE1XCkgKGZyZWt1ZW5zaSBrZWxhcyBtZWRpYW4pLA0KDQotIFwoYyA9IDEwXCkgKGxlYmFyIGtlbGFzKS4NCg0KU3Vic3RpdHVzaToNClxbDQpcdGV4dHtNZWRpYW59ID0gMzAgKyBcbGVmdCggXGZyYWN7MjAgLSAxM317MTV9IFxyaWdodCkgXGNkb3QgMTANClxdDQoNClxbDQpcdGV4dHtNZWRpYW59ID0gMzAgKyBcbGVmdCggXGZyYWN7N317MTV9IFxyaWdodCkgXGNkb3QgMTAgPSAzMCArIDQuNjcgPSAzNC42Nw0KXF0NCg0KKipIYXNpbDoqKiAqKk1lZGlhbiA9IDM0LjY3KioNCg0KIyMjIE1lZGlhbiBEYXRhIEtlbG9tcG9rIERhbGFtIEJveHBsb3QNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YTogRHVhIHNrZW5hcmlvLCBzYXR1IGRlbmdhbiBvdXRsaWVycywgc2F0dSB0YW5wYSBvdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYygxNSwgMjUsIDM1LCA0NSwgNTUsIDE1MCkgICMgRGF0YSBkZW5nYW4gb3V0bGllciAoMTUwKQ0KZGF0YV90YW5wYV9vdXRsaWVycyA8LSBjKDE1LCAyNSwgMzUsIDQ1LCA1NSkgICMgRGF0YSB0YW5wYSBvdXRsaWVycw0KDQojIE1lbmdoaXR1bmcgbWVkaWFuIHVudHVrIGtlZHVhIGRhdGFzZXQNCm1lZGlhbl9kZW5nYW5fb3V0bGllcnMgPC0gbWVkaWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVkaWFuX3RhbnBhX291dGxpZXJzIDwtIG1lZGlhbihkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIE1lbmdnYWJ1bmdrYW4gZGF0YSBrZSBkYWxhbSBzYXR1IGRhdGEgZnJhbWUgdW50dWsgdmlzdWFsaXNhc2kNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgTmlsYWkgPSBjKGRhdGFfZGVuZ2FuX291dGxpZXJzLCBkYXRhX3RhbnBhX291dGxpZXJzKSwNCiAgS2Vsb21wb2sgPSByZXAoYygiRGVuZ2FuIE91dGxpZXJzIiwgIlRhbnBhIE91dGxpZXJzIiksIA0KICAgICAgICAgICAgICAgICB0aW1lcyA9IGMobGVuZ3RoKGRhdGFfZGVuZ2FuX291dGxpZXJzKSwgbGVuZ3RoKGRhdGFfdGFucGFfb3V0bGllcnMpKSkNCikNCg0KIyBNZW1idWF0IGJveHBsb3QgbWVuZ2d1bmFrYW4gUGxvdGx5DQpwbG90IDwtIHBsb3RfbHkoDQogIGRhdGEsIA0KICB5ID0gfk5pbGFpLCANCiAgY29sb3IgPSB+S2Vsb21wb2ssIA0KICBjb2xvcnMgPSBjKCJ5ZWxsb3ciLCAicmVkIiksICAjIFdhcm5hIHRldGFwIHNlc3VhaToga3VuaW5nIGRhbiBtZXJhaA0KICB0eXBlID0gImJveCIsIA0KICBib3hwb2ludHMgPSAib3V0bGllcnMiICAjIE1lbmFtcGlsa2FuIHRpdGlrIG91dGxpZXJzDQopICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiUGVuZ2FydWggT3V0bGllcnMgdGVyaGFkYXAgTWVkaWFuIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWRpYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCByb3VuZChtZWRpYW5fZGVuZ2FuX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIlRhbnBhIE91dGxpZXJzIiwNCiAgICAgICAgeSA9IG1lZGlhbl90YW5wYV9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWRpYW46Iiwgcm91bmQobWVkaWFuX3RhbnBhX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90DQoNCg0KYGBgDQoNCiMjIyBNZWRpYW4gRGF0YSBLZWxvbXBvayBEYWxhbSBIaXN0b2dyYW0NCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YTogRHVhIHNrZW5hcmlvLCBzYXR1IGRlbmdhbiBvdXRsaWVycywgc2F0dSB0YW5wYSBvdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYygxNSwgMjUsIDM1LCA0NSwgNTUsIDE1MCkgICMgRGF0YSBkZW5nYW4gb3V0bGllciAoMTUwKQ0KZGF0YV90YW5wYV9vdXRsaWVycyA8LSBjKDE1LCAyNSwgMzUsIDQ1LCA1NSkgICMgRGF0YSB0YW5wYSBvdXRsaWVycw0KDQojIE1lbmdoaXR1bmcgbWVkaWFuIHVudHVrIGtlZHVhIGRhdGFzZXQNCm1lZGlhbl9kZW5nYW5fb3V0bGllcnMgPC0gbWVkaWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVkaWFuX3RhbnBhX291dGxpZXJzIDwtIG1lZGlhbihkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIE1lbWJ1YXQgZGVuc2l0eSBwbG90DQpkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyA8LSBkZW5zaXR5KGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KZGVuc2l0eV90YW5wYV9vdXRsaWVycyA8LSBkZW5zaXR5KGRhdGFfdGFucGFfb3V0bGllcnMpDQoNCiMgTWVtYnVhdCBwbG90IG1lbmdndW5ha2FuIFBsb3RseQ0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogICMgTWVuYW1iYWhrYW4gZGVuc2l0eSBwbG90IHVudHVrIGRhdGFzZXQgZGVuZ2FuIG91dGxpZXJzDQogIGFkZF90cmFjZSgNCiAgICB4ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5LA0KICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgbW9kZSA9ICdsaW5lcycsDQogICAgbmFtZSA9ICJEZW5nYW4gT3V0bGllcnMiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjIyLCA0NSwgMzgsIDAuOCknLCB3aWR0aCA9IDIpDQogICkgJT4lDQogICMgTWVuYW1iYWhrYW4gZGVuc2l0eSBwbG90IHVudHVrIGRhdGFzZXQgdGFucGEgb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4LA0KICAgIHkgPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5LA0KICAgIHR5cGUgPSAnc2NhdHRlcicsDQogICAgbW9kZSA9ICdsaW5lcycsDQogICAgbmFtZSA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgzOCwgMTY2LCA5MSwgMC44KScsIHdpZHRoID0gMikNCiAgKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBnYXJpcyBtZWRpYW4gdW50dWsgZGF0YXNldCBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSBjKG1lZGlhbl9kZW5nYW5fb3V0bGllcnMsIG1lZGlhbl9kZW5nYW5fb3V0bGllcnMpLA0KICAgIHkgPSBjKDAsIG1heChkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5KSksDQogICAgdHlwZSA9ICJzY2F0dGVyIiwNCiAgICBtb2RlID0gImxpbmVzIiwNCiAgICBuYW1lID0gIk1lZGlhbiAoRGVuZ2FuIE91dGxpZXJzKSIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgyMjIsIDQ1LCAzOCwgMC42KScsIGRhc2ggPSAnZGFzaCcpDQogICkgJT4lDQogICMgTWVuYW1iYWhrYW4gZ2FyaXMgbWVkaWFuIHVudHVrIGRhdGFzZXQgdGFucGEgb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSBjKG1lZGlhbl90YW5wYV9vdXRsaWVycywgbWVkaWFuX3RhbnBhX291dGxpZXJzKSwNCiAgICB5ID0gYygwLCBtYXgoZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5KSksDQogICAgdHlwZSA9ICJzY2F0dGVyIiwNCiAgICBtb2RlID0gImxpbmVzIiwNCiAgICBuYW1lID0gIk1lZGlhbiAoVGFucGEgT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDM4LCAxNjYsIDkxLCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgIyBNZW55ZXN1YWlrYW4gdGF0YSBsZXRhaw0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiUGVuZ2FydWggT3V0bGllcnMgdGVyaGFkYXAgTWVkaWFuIHBhZGEgRGVuc2l0eSBQbG90IiwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkgRGF0YSIpLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJEZW5zaXR5IiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgIyBBbm90YXNpIHVudHVrIG1lZGlhbiBkYXRhc2V0IGRlbmdhbiBvdXRsaWVycw0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1lZGlhbl9kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHkgPSBtYXgoZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMkeSkgKiAwLjksDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTWVkaWFuOiIsIHJvdW5kKG1lZGlhbl9kZW5nYW5fb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMiwNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC0zMCwNCiAgICAgICAgZm9udCA9IGxpc3QoY29sb3IgPSAncmdiYSgyMjIsIDQ1LCAzOCwgMC44KScsIHNpemUgPSAxMikNCiAgICAgICksDQogICAgICAjIEFub3Rhc2kgdW50dWsgbWVkaWFuIGRhdGFzZXQgdGFucGEgb3V0bGllcnMNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSBtZWRpYW5fdGFucGFfb3V0bGllcnMsDQogICAgICAgIHkgPSBtYXgoZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5KSAqIDAuOSwNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWRpYW46Iiwgcm91bmQobWVkaWFuX3RhbnBhX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDIsDQogICAgICAgIGF4ID0gMCwNCiAgICAgICAgYXkgPSAtMzAsDQogICAgICAgIGZvbnQgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMzgsIDE2NiwgOTEsIDAuOCknLCBzaXplID0gMTIpDQogICAgICApDQogICAgKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gcGxvdA0KcGxvdA0KDQpgYGANCiMjIE1vZHVzIERhdGEgS2Vsb21wb2sNCiMjIyBEZWZpbmlzaSBNb2R1cyBEYXRhIEtlbG9tcG9rDQpNb2R1cyBkYXRhIGtlbG9tcG9rIGFkYWxhaCBuaWxhaSB5YW5nIG11bmN1bCBiZXJ1bGFuZyBrYWxpIGRhbGFtIHNlYnVhaCBoaW1wdW5hbiB0ZXJ0ZW50dS4gVW50dWsgZGF0YSBrZWxvbXBvaywgbWVhbiBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNClxbDQpcdGV4dHtNb2R1c30gPSBMICsgXGxlZnQoIFxmcmFje2ZfbSAtIGZfe20tMX19eyhmX20gLSBmX3ttLTF9KSArIChmX20gLSBmX3ttKzF9KX0gXHJpZ2h0KSBcY2RvdCBjDQpcXQ0KDQpQZW5qZWxhc2FuIFJ1bXVzOg0KDQotIFwoTFwpOiBCYXRhcyBiYXdhaCBrZWxhcyBtb2R1cy4NCg0KLSBcKGZfbVwpOiBGcmVrdWVuc2kga2VsYXMgbW9kdXMgKGZyZWt1ZW5zaSB0ZXJiZXNhcikuDQoNCi0gXChmX3ttLTF9XCk6IEZyZWt1ZW5zaSBrZWxhcyBzZWJlbHVtIGtlbGFzIG1vZHVzLg0KDQotIFwoZl97bSsxfVwpOiBGcmVrdWVuc2kga2VsYXMgc2V0ZWxhaCBrZWxhcyBtb2R1cy4NCg0KLSBcKGNcKTogTGViYXIga2VsYXMuDQoNCkxhbmdrYWgtbGFuZ2thaDoNCg0KMS4gVGVudHVrYW4gKiprZWxhcyBtb2R1cyoqIChrZWxhcyBkZW5nYW4gZnJla3VlbnNpIHRlcmJlc2FyKS4NCg0KMi4gU3Vic3RpdHVzaSBwYXJhbWV0ZXIgXChMXCksIFwoZl9tXCksIFwoZl97bS0xfVwpLCBcKGZfe20rMX1cKSwgZGFuIFwoY1wpIGtlIGRhbGFtIHJ1bXVzLg0KDQojIyMgQ29udG9oIE1lYW4gRGF0YSBCZXJrZWxvbXBvaw0KfCAqKktlbGFzIEludGVydmFsKiogfCAqKkZyZWt1ZW5zaSAoZikqKnwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18DQp8IDEwIC0gMjAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgfCANCnwgMjAgLSAzMCAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICB8DQp8IDMwIC0gNDAgICAgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgfCANCnwgNDAgLSA1MCAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICB8IA0KfCA1MCAtIDYwICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgIHwNCg0KDQpLZWxhcyBtb2R1cyBhZGFsYWggKiozMCAtIDQwKiogKFwoZl9tID0gMTVcKSkuDQoNClBhcmFtZXRlcjoNCg0KLSBcKEwgPSAzMFwpLA0KDQotIFwoZl9tID0gMTVcKSwNCg0KLSBcKGZfe20tMX0gPSA4XCksDQoNCi0gXChmX3ttKzF9ID0gMTBcKSwNCg0KLSBcKGMgPSAxMFwpLg0KDQpTdWJzdGl0dXNpOg0KXFsNClx0ZXh0e01vZHVzfSA9IDMwICsgXGxlZnQoIFxmcmFjezE1IC0gOH17KDE1IC0gOCkgKyAoMTUgLSAxMCl9IFxyaWdodCkgXGNkb3QgMTANClxdDQpcWw0KXHRleHR7TW9kdXN9ID0gMzAgKyBcbGVmdCggXGZyYWN7N317NyArIDV9IFxyaWdodCkgXGNkb3QgMTAgPSAzMCArIFxsZWZ0KCBcZnJhY3s3fXsxMn0gXHJpZ2h0KSBcY2RvdCAxMA0KXF0NClxbDQpcdGV4dHtNb2R1c30gPSAzMCArIDUuODMgPSAzNS44Mw0KXF0NCg0KKipIYXNpbDoqKiAqKk1vZHVzID0gMzUuODMqKg0KDQoNCiMjI01vZHVzIERhdGEgS2Vsb21wb2sgRGFsYW0gQm94cGxvdA0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhOiBEdWEgc2tlbmFyaW8sIHNhdHUgZGVuZ2FuIG91dGxpZXJzLCBzYXR1IHRhbnBhIG91dGxpZXJzDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKDE1LCAyNSwgMzUsIDQ1LCA1NSwgMTUwKSAgIyBEYXRhIGRlbmdhbiBvdXRsaWVyICgxNTApDQpkYXRhX3RhbnBhX291dGxpZXJzIDwtIGMoMTUsIDI1LCAzNSwgNDUsIDU1KSAgIyBEYXRhIHRhbnBhIG91dGxpZXJzDQoNCg0KIyBVbnR1ayBkYXRhIGJlcmtlbG9tcG9rIGtpdGEgbWVuZ2d1bmFrYW4gcnVtdXMgbW9kdXMgc2ViYWdhaSBiZXJpa3V0DQojIERhdGEgdW50dWsgZGVuZ2FuIG91dGxpZXJzICgxNTApDQpMIDwtIDMwICAgICAgIyBCYXRhcyBiYXdhaCBrZWxhcyBtb2R1cw0KZm0gPC0gMTUgICAgICMgRnJla3VlbnNpIGtlbGFzIG1vZHVzDQpmbV9taW51c18xIDwtIDggICAjIEZyZWt1ZW5zaSBrZWxhcyBzZWJlbHVtIG1vZHVzDQpmbV9wbHVzXzEgPC0gMTAgICAjIEZyZWt1ZW5zaSBrZWxhcyBzZXRlbGFoIG1vZHVzDQpjIDwtIDEwICAgICAgIyBQYW5qYW5nIGtlbGFzIGludGVydmFsDQoNCiMgTWVuZ2hpdHVuZyBNb2R1cyBtZW5nZ3VuYWthbiBydW11cw0KbW9kdXNfZGVuZ2FuX291dGxpZXJzIDwtIEwgKyAoKGZtIC0gZm1fbWludXNfMSkgLyAoKGZtIC0gZm1fbWludXNfMSkgKyAoZm0gLSBmbV9wbHVzXzEpKSkgKiBjDQoNCiMgVW50dWsgZGF0YSB0YW5wYSBvdXRsaWVycw0KbW9kdXNfdGFucGFfb3V0bGllcnMgPC0gbW9kdXNfZGVuZ2FuX291dGxpZXJzICAjIERhbGFtIGhhbCBpbmksIGtpdGEgYW5nZ2FwIG1vZHVzIHRldGFwIHNhbWENCg0KIyBNZW5nZ2FidW5na2FuIGRhdGEga2UgZGFsYW0gc2F0dSBkYXRhIGZyYW1lIHVudHVrIHZpc3VhbGlzYXNpDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIE5pbGFpID0gYyhkYXRhX2Rlbmdhbl9vdXRsaWVycywgZGF0YV90YW5wYV9vdXRsaWVycyksDQogIEtlbG9tcG9rID0gcmVwKGMoIkRlbmdhbiBPdXRsaWVycyIsICJUYW5wYSBPdXRsaWVycyIpLCANCiAgICAgICAgICAgICAgICAgdGltZXMgPSBjKGxlbmd0aChkYXRhX2Rlbmdhbl9vdXRsaWVycyksIGxlbmd0aChkYXRhX3RhbnBhX291dGxpZXJzKSkpDQopDQoNCiMgTWVtYnVhdCBib3hwbG90IG1lbmdndW5ha2FuIFBsb3RseSBkZW5nYW4gb3V0bGllcnMgZGl0YW1waWxrYW4gZGFuIHdhcm5hIGt1bmluZyBkYW4gbWVyYWgNCnBsb3QgPC0gcGxvdF9seSgNCiAgZGF0YSwgDQogIHkgPSB+TmlsYWksIA0KICBjb2xvciA9IH5LZWxvbXBvaywgDQogIGNvbG9ycyA9IGMoInJlZCIsICJ5ZWxsb3ciKSwgICMgV2FybmEgbWVyYWggdW50dWsgVGFucGEgT3V0bGllcnMsIGt1bmluZyB1bnR1ayBEZW5nYW4gT3V0bGllcnMNCiAgdHlwZSA9ICJib3giLCANCiAgYm94cG9pbnRzID0gIm91dGxpZXJzIiAgIyBNZW5hbXBpbGthbiB0aXRpayBvdXRsaWVycw0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlBlbmdhcnVoIE91dGxpZXJzIHRlcmhhZGFwIE1vZHVzIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtb2R1c19kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTW9kdXM6Iiwgcm91bmQobW9kdXNfZGVuZ2FuX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIlRhbnBhIE91dGxpZXJzIiwNCiAgICAgICAgeSA9IG1vZHVzX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1vZHVzOiIsIHJvdW5kKG1vZHVzX3RhbnBhX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90DQoNCg0KYGBgDQoNCiMjIyBNb2R1cyBEYXRhIEtlbG9tcG9rIERhbGFtIEhpc3RvZ3JhbQ0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhOiBEdWEgc2tlbmFyaW8sIHNhdHUgZGVuZ2FuIG91dGxpZXJzLCBzYXR1IHRhbnBhIG91dGxpZXJzDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKDE1LCAyNSwgMzUsIDQ1LCA1NSwgMTUwKSAgIyBEYXRhIGRlbmdhbiBvdXRsaWVyICgxNTApDQpkYXRhX3RhbnBhX291dGxpZXJzIDwtIGMoMTUsIDI1LCAzNSwgNDUsIDU1KSAgIyBEYXRhIHRhbnBhIG91dGxpZXJzDQoNCiMgUGVyaGl0dW5nYW4gTW9kdXMgdW50dWsgZGF0YSBkZW5nYW4gZGFuIHRhbnBhIG91dGxpZXJzDQojIERhdGEgdW50dWsgZGVuZ2FuIG91dGxpZXJzICgxNTApDQpMIDwtIDMwICAgICAgIyBCYXRhcyBiYXdhaCBrZWxhcyBtb2R1cw0KZm0gPC0gMTUgICAgICMgRnJla3VlbnNpIGtlbGFzIG1vZHVzDQpmbV9taW51c18xIDwtIDggICAjIEZyZWt1ZW5zaSBrZWxhcyBzZWJlbHVtIG1vZHVzDQpmbV9wbHVzXzEgPC0gMTAgICAjIEZyZWt1ZW5zaSBrZWxhcyBzZXRlbGFoIG1vZHVzDQpjIDwtIDEwICAgICAgIyBQYW5qYW5nIGtlbGFzIGludGVydmFsDQoNCiMgTWVuZ2hpdHVuZyBNb2R1cyBtZW5nZ3VuYWthbiBydW11cw0KbW9kdXNfZGVuZ2FuX291dGxpZXJzIDwtIEwgKyAoKGZtIC0gZm1fbWludXNfMSkgLyAoKGZtIC0gZm1fbWludXNfMSkgKyAoZm0gLSBmbV9wbHVzXzEpKSkgKiBjDQoNCiMgVW50dWsgZGF0YSB0YW5wYSBvdXRsaWVycw0KbW9kdXNfdGFucGFfb3V0bGllcnMgPC0gbW9kdXNfZGVuZ2FuX291dGxpZXJzICAjIERhbGFtIGhhbCBpbmksIGtpdGEgYW5nZ2FwIG1vZHVzIHRldGFwIHNhbWENCg0KIyBNZW1idWF0IHBsb3QgbWVuZ2d1bmFrYW4gUGxvdGx5DQpwbG90IDwtIHBsb3RfbHkoKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBkZW5zaXR5IHBsb3QgdW50dWsgZGF0YXNldCBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX3RyYWNlKA0KICAgIHggPSB+ZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMkeCwNCiAgICB5ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHksDQogICAgdHlwZSA9ICdzY2F0dGVyJywNCiAgICBtb2RlID0gJ2xpbmVzJywNCiAgICBuYW1lID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgyMjIsIDQ1LCAzOCwgMC44KScsIHdpZHRoID0gMikNCiAgKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBkZW5zaXR5IHBsb3QgdW50dWsgZGF0YXNldCB0YW5wYSBvdXRsaWVycw0KICBhZGRfdHJhY2UoDQogICAgeCA9IH5kZW5zaXR5X3RhbnBhX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X3RhbnBhX291dGxpZXJzJHksDQogICAgdHlwZSA9ICdzY2F0dGVyJywNCiAgICBtb2RlID0gJ2xpbmVzJywNCiAgICBuYW1lID0gIlRhbnBhIE91dGxpZXJzIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDM4LCAxNjYsIDkxLCAwLjgpJywgd2lkdGggPSAyKQ0KICApICU+JQ0KICAjIE1lbmFtYmFoa2FuIGdhcmlzIG1lZGlhbiB1bnR1ayBkYXRhc2V0IGRlbmdhbiBvdXRsaWVycw0KICBhZGRfdHJhY2UoDQogICAgeCA9IGMobWVkaWFuX2Rlbmdhbl9vdXRsaWVycywgbWVkaWFuX2Rlbmdhbl9vdXRsaWVycyksDQogICAgeSA9IGMoMCwgbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpKSwNCiAgICB0eXBlID0gInNjYXR0ZXIiLA0KICAgIG1vZGUgPSAibGluZXMiLA0KICAgIG5hbWUgPSAiTWVkaWFuIChEZW5nYW4gT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDIyMiwgNDUsIDM4LCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgIyBNZW5hbWJhaGthbiBnYXJpcyBtZWRpYW4gdW50dWsgZGF0YXNldCB0YW5wYSBvdXRsaWVycw0KICBhZGRfdHJhY2UoDQogICAgeCA9IGMobWVkaWFuX3RhbnBhX291dGxpZXJzLCBtZWRpYW5fdGFucGFfb3V0bGllcnMpLA0KICAgIHkgPSBjKDAsIG1heChkZW5zaXR5X3RhbnBhX291dGxpZXJzJHkpKSwNCiAgICB0eXBlID0gInNjYXR0ZXIiLA0KICAgIG1vZGUgPSAibGluZXMiLA0KICAgIG5hbWUgPSAiTWVkaWFuIChUYW5wYSBPdXRsaWVycykiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMzgsIDE2NiwgOTEsIDAuNiknLCBkYXNoID0gJ2Rhc2gnKQ0KICApICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiUGVuZ2FydWggT3V0bGllcnMgdGVyaGFkYXAgTWVkaWFuIHBhZGEgRGVuc2l0eSBQbG90IiwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiRnJla3VlbnNpIiksDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIktlbGFzIEludGVydmFsIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgIyBBbm90YXNpIHVudHVrIG1vZnVkIGRhdGFzZXQgZGVuZ2FuIG91dGxpZXJzDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gbWVkaWFuX2Rlbmdhbl9vdXRsaWVycywNCiAgICAgICAgeSA9IG1heChkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5KSAqIDAuOSwNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNb2R1czoiLCByb3VuZChtb2R1c19kZW5nYW5fb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMiwNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC0zMCwgICMgUG9zaXNpIHRla3Mgc2VkaWtpdCBsZWJpaCB0aW5nZ2kgZGFyaSBnYXJpcw0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDIyMiwgNDUsIDM4LCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKSwNCiAgICAgICMgQW5vdGFzaSB1bnR1ayBtb2R1cyBkYXRhc2V0IHRhbnBhIG91dGxpZXJzDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gbWVkaWFuX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB5ID0gbWF4KGRlbnNpdHlfdGFucGFfb3V0bGllcnMkeSkgKiAwLjksDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTWVkdXM6Iiwgcm91bmQobW9kdXNfdGFucGFfb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMiwNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC00NSwgICMgUG9zaXNpIHRla3Mgc2VkaWtpdCBsZWJpaCB0aW5nZ2kgZGFyaSBnYXJpcw0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDM4LCAxNjYsIDkxLCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCg0KYGBgDQoNCg0KIyBVa3VyYW4gUGVtdXNhdGFuIGRhbGFtIFN0dWRpIEthc3VzDQojIyAqKkJpc25pczogTWVuZ2hpdHVuZyBSYXRhLXJhdGEgUGVuanVhbGFuKioNCg0KIyMjIFN0dWRpIEthc3VzOg0KDQpTZWJ1YWggcGVydXNhaGFhbiByZXRhaWwgaW5naW4gbWVuZ2V0YWh1aSByYXRhLXJhdGEgcGVuanVhbGFuIHByb2R1ayBtZXJla2EgZGFsYW0gc2F0dSBtaW5nZ3UgdW50dWsgbWVuaWxhaSBwZXJmb3JtYSBiaXNuaXMgZGFuIG1lcmVuY2FuYWthbiBzdHJhdGVnaSBwZW5qdWFsYW4uIERhdGEgcGVuanVhbGFuIHVuaXQgcHJvZHVrIHNlbGFtYSA3IGhhcmkgdGVyYWtoaXIgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KKiAgIEhhcmkgMTogMTUwIHVuaXQNCiogICBIYXJpIDI6IDE4MCB1bml0DQoqICAgSGFyaSAzOiAxNjAgdW5pdA0KKiAgIEhhcmkgNDogMTcwIHVuaXQNCiogICBIYXJpIDU6IDE2MCB1bml0DQoqICAgSGFyaSA2OiAxNzUgdW5pdA0KKiAgIEhhcmkgNzogMTY1IHVuaXQNCg0KKipUdWp1YW46KiogTWVuZ2hpdHVuZyByYXRhLXJhdGEgKG1lYW4pIHBlbmp1YWxhbiBwZXIgaGFyaS4NCg0KIyMjIExhbmdrYWgtTGFuZ2thaCBNZW5naGl0dW5nIFJhdGEtcmF0YSAoTWVhbik6DQoNClVudHVrIG1lbmdoaXR1bmcgcmF0YS1yYXRhIHBlbmp1YWxhbiwga2l0YSBqdW1sYWhrYW4gc2VsdXJ1aCBqdW1sYWggdW5pdCBwZW5qdWFsYW4gZGFuIGtlbXVkaWFuIGJhZ2kgZGVuZ2FuIGp1bWxhaCBoYXJpIHlhbmcgZGlhbWF0aSAoZGFsYW0gaGFsIGluaSwgNyBoYXJpKS4NCg0KMS4gKipKdW1sYWhrYW4gc2VsdXJ1aCBuaWxhaSBwZW5qdWFsYW46KioNCg0KICAgMTUwICsgMTgwICsgMTYwICsgMTcwICsgMTYwICsgMTc1ICsgMTY1ID0gMS4xNjAgdW5pdA0KDQoyLiAqKkJhZ2kganVtbGFoIHRvdGFsIGRlbmdhbiBqdW1sYWggaGFyaSAoNyBoYXJpKToqKg0KDQogICBSYXRhLXJhdGEgPSAxLjE2MCAvIDcgPSAxNjUsNzEgdW5pdA0KDQoqKkhhc2lsOioqIFJhdGEtcmF0YSBwZW5qdWFsYW4gcGVyIGhhcmkgYWRhbGFoIHNla2l0YXIgKioxNjUsNzEgdW5pdCoqLiBJbmkgbWVtYmVyaWthbiBnYW1iYXJhbiB1bXVtIG1lbmdlbmFpIGtpbmVyamEgcGVuanVhbGFuIHNlbGFtYSBzZW1pbmdndS4NCg0KDQoNCiMjICoqS2VzZWhhdGFuOiBNZW5naGl0dW5nIFJhdGEtcmF0YSBUZWthbmFuIERhcmFoKioNCg0KIyMjIFN0dWRpIEthc3VzOg0KDQpTZW9yYW5nIGRva3RlciBpbmdpbiBtZW5nYW5hbGlzaXMgcmF0YS1yYXRhIHRla2FuYW4gZGFyYWggZGFyaSBiZWJlcmFwYSBwYXNpZW4geWFuZyBkYXRhbmcgdW50dWsgcGVtZXJpa3NhYW4ga2VzZWhhdGFuLiBEYXRhIHRla2FuYW4gZGFyYWggeWFuZyBkaXVrdXIgcGFkYSA1IHBhc2llbiBhZGFsYWggc2ViYWdhaSBiZXJpa3V0IChkYWxhbSBtbUhnKToNCg0KKiAgIFBhc2llbiAxOiAxMjAvODAgbW1IZw0KKiAgIFBhc2llbiAyOiAxMjUvODUgbW1IZw0KKiAgIFBhc2llbiAzOiAxMzAvOTAgbW1IZw0KKiAgIFBhc2llbiA0OiAxMTgvNzggbW1IZw0KKiAgIFBhc2llbiA1OiAxMjIvODIgbW1IZw0KDQoqKlR1anVhbjoqKiBNZW5naGl0dW5nIHJhdGEtcmF0YSB0ZWthbmFuIGRhcmFoIHNpc3RvbGlrIGRhbiBkaWFzdG9saWsuDQoNCiMjIyBMYW5na2FoLUxhbmdrYWggTWVuZ2hpdHVuZyBSYXRhLXJhdGEgKE1lYW4pIFRla2FuYW4gRGFyYWg6DQoNCiogICAqKlRla2FuYW4gZGFyYWggc2lzdG9saWsgKGFuZ2thIHBlcnRhbWEpKioNCg0KICAgIDEyMCArIDEyNSArIDEzMCArIDExOCArIDEyMiA9IDYxNSBtbUhnDQoNCiAgICBKdW1sYWhrYW4gYW5na2Egc2lzdG9saWsgcGFkYSBrZWxpbWEgcGFzaWVuIGRhbiBiYWdpIGRlbmdhbiBqdW1sYWggcGFzaWVuICg1KToNCg0KICAgIFJhdGEtcmF0YSBzaXN0b2xpayA9IDYxNSAvIDUgPSAxMjMgbW1IZw0KDQoqICAgKipUZWthbmFuIGRhcmFoIGRpYXN0b2xpayAoYW5na2Ega2VkdWEpKioNCg0KICAgIDgwICsgODUgKyA5MCArIDc4ICsgODIgPSA0MTUgbW1IZw0KDQogICAgSnVtbGFoa2FuIGFuZ2thIGRpYXN0b2xpayBwYWRhIGtlbGltYSBwYXNpZW4gZGFuIGJhZ2kgZGVuZ2FuIGp1bWxhaCBwYXNpZW4gKDUpOg0KDQogICAgUmF0YS1yYXRhIGRpYXN0b2xpayA9IDQxNSAvIDUgPSA4MyBtbUhnDQoNCioqSGFzaWw6KioNCg0KKiAgIFJhdGEtcmF0YSB0ZWthbmFuIGRhcmFoIHNpc3RvbGlrIGFkYWxhaCAqKjEyMyBtbUhnKiouDQoNCiogICBSYXRhLXJhdGEgdGVrYW5hbiBkYXJhaCBkaWFzdG9saWsgYWRhbGFoICoqODMgbW1IZyoqLg0KDQoNCg0KIyMgKipQZW5kaWRpa2FuOiBNZW5naGl0dW5nIFJhdGEtcmF0YSBOaWxhaSBVamlhbiBTaXN3YSoqDQoNCiMjIyBTdHVkaSBLYXN1czoNCg0KU2VvcmFuZyBndXJ1IGluZ2luIG1lbmdldGFodWkgcmF0YS1yYXRhIG5pbGFpIHVqaWFuIG1hdGVtYXRpa2EgZGFyaSA2IHNpc3dhIGRpIGtlbGFzbnlhIHVudHVrIG1lbmdldmFsdWFzaSBoYXNpbCBiZWxhamFyIG1lcmVrYS4gQmVyaWt1dCBhZGFsYWggbmlsYWkgdWppYW4gbWF0ZW1hdGlrYSBwYXJhIHNpc3dhOg0KDQoqICAgU2lzd2EgMTogODUNCg0KKiAgIFNpc3dhIDI6IDkwDQoNCiogICBTaXN3YSAzOiA3NQ0KDQoqICAgU2lzd2EgNDogODgNCg0KKiAgIFNpc3dhIDU6IDkyDQoNCiogICBTaXN3YSA2OiA4MA0KDQoqKlR1anVhbjoqKiBNZW5naGl0dW5nIHJhdGEtcmF0YSBuaWxhaSB1amlhbiBtYXRlbWF0aWthLg0KDQojIyMgTGFuZ2thaC1MYW5na2FoIE1lbmdoaXR1bmcgUmF0YS1yYXRhIChNZWFuKSBOaWxhaToNCg0KMS4gKipKdW1sYWhrYW4gc2VsdXJ1aCBuaWxhaSB1amlhbjoqKg0KDQogICA4NSArIDkwICsgNzUgKyA4OCArIDkyICsgODAgPSA1MTANCg0KMi4gKipCYWdpIGp1bWxhaCB0b3RhbCBkZW5nYW4ganVtbGFoIHNpc3dhICg2IHNpc3dhKToqKg0KDQogICBSYXRhLXJhdGEgbmlsYWkgPSA1MTAgLyA2ID0gODUNCg0KKipIYXNpbDoqKiBSYXRhLXJhdGEgbmlsYWkgdWppYW4gbWF0ZW1hdGlrYSBwYXJhIHNpc3dhIGFkYWxhaCAqKjg1KiouDQo=