PEMROGRAMAN SAINS DATA

Exersize week~2

library(htmltools)

HTML('
<div class="profile-card">
  <div>
    <img src="Almetcokkk.JPG">
  </div>
  
  <div class="profile-name">Veronica Maria Lucia F Xavier</div>
  
  <div class="divider"></div>
  
  <div class="profile-nim">NIM: 52250021</div>
</div>
')
Veronica Maria Lucia F Xavier
NIM: 52250021

1 Apa tujuan utama dari penelitian ilmu Data dan Pemrograman?

1.1 Tujuan Utama Pemrograman dalam Data Science

Dalam disiplin ilmu Sains Data, pemrograman berfungsi sebagai fondasi teknis yang memungkinkan transformasi data mentah menjadi wawasan strategis yang terukur.

1.2 Berikut adalah tiga pilar utama pemperograman dalam bidang ini:

1). Pemrosesan dan Pembersihan Data (Data Wrangling): Sebagian besar data di dunia nyata bersifat tidak terstruktur dan inkonsisten. Pemrograman memungkinkan praktisi untuk menyusun skrip otomatis guna melakukan pembersihan data, menangani nilai yang hilang, serta memperbaiki anomali format sehingga data siap untuk dianalisis lebih lanjut secara akurat.

2). Analisis Statistik dan Penemuan Pola (Exploratory Data Analysis): Pemrograman memfasilitasi komputasi statistik kompleks pada kumpulan data berskala besar yang tidak mungkin dilakukan secara manual. Hal ini mencakup pengujian hipotesis, identifikasi korelasi, dan penemuan tren tersembunyi guna mendukung pengambilan keputusan berbasis data.

3). Pembelajaran Mesin dan Otomatisasi (Machine Learning): Melalui algoritma pemrograman, kita dapat membangun model prediktif yang mampu belajar dari pola data masa lalu. Teknologi ini memungkinkan otomatisasi dalam memprediksi fenomena masa depan, seperti prakiraan fluktuasi pasar atau deteksi dini dalam diagnosa medis.

2 Mengapa Kita Mempelajari Jurusan Data Science?

Belajar coding di Data Science itu ibarat menyiapkan “alat tempur” untuk mengubah tumpukan data berantakan jadi informasi yang berguna.

2.1 Ada 3(tiga) alasan, yaitu ;

1). Bisa Menangani Big Data: Aplikasi biasa seperti Excel punya batas maksimal; kalau kita buka file dengan 10jt baris, aplikasinya akan error atau crash. Dengan coding, kita bisa mengolah data sebesar apa pun dengan cepat karena kita langsung memerintah memori komputer untuk bekerja.

2). Otomatisasi Alur Kerja dan Efisiensi Operasional: Dalam praktik profesional di masa depan, seorang praktisi data akan secara rutin menghadapi proses pembersihan dan pengolahan data yang bersifat repetitif setiap kali terdapat pemutakhiran basis data. Dibandingkan dengan melakukan tahapan tersebut secara manual yang memakan waktu signifikannya (misalnya hingga lima jam kerja), pemrograman memungkinkan penyusunan skrip algoritma yang komprehensif. Melalui implementasi skrip ini, seluruh rangkaian prosedur yang kompleks dapat diselesaikan secara otomatis dalam hitungan detik, sehingga meningkatkan produktivitas dan meminimalisasi risiko kesalahan manusia (human error).

3). Transparansi dan Hasil yang Bisa Diuji Ulang : Sesuai namanya, Sains Data itu bidang ilmiah, jadi hasilnya harus bisa dibuktikan kebenarannya. Kalau kita cuma klik-klik tombol di software, orang lain bakal bingung urutan kerjanya seperti apa. Tapi kalau pakai coding, semuanya jadi transparan. Teman satu tim bisa baca skrip kita, paham logikanya, dan menjalankan ulang kodenya untuk memastikan hasilnya memang akurat dan konsisten.

3 Tools apa aja yang harus dipelajari?

3.1 Tools yang Wajib Dikuasai di Data Science

Untuk jadi ahli di bidang Data Science, kita butuh kombinasi berbagai alat untuk mengolah data mentah sampai jadi kecerdasan buatan (AI).

3.2 Berikut adalah daftar tools yang harus kita pelajari:

1). Bahasa Pemrograman Dasar:

  • Python: Ini adalah “bahasa ibu” bagi Data Scientist. Populer karena kodenya mudah dibaca dan punya jutaan perpustakaan (libraries) pendukung.

  • SQL (Structured Query Language): Wajib dikuasai untuk mengambil (query) data dari database perusahaan. Tanpa SQL, kamu tidak bisa mengakses data yang ingin diolah.

  • R: Sering digunakan oleh akademisi atau statistikawan untuk analisis data yang sangat mendalam dan visualisasi yang estructured.

2). Alat Olah dan Analisis Data: Ada Pandas yang fungsinya mirip Excel tapi versi coding, gunanya untuk bersih-bersih dan mengatur tabel data. Lalu ada NumPy, alat khusus untuk menghitung matematika yang rumit dan berat dengan sangat cepat.

3). Membangun (Machine Learning & AI): Untuk membuat model prediksi yang simpel, kita pakai Scikit-Learn. Tapi kalau ingin membuat teknologi canggih seperti pengenal wajah atau ChatGPT, kita biasanya menggunakan TensorFlow atau PyTorch.

4). Tempat Kerja Digital (IDE): Kita butuh Jupyter Notebooks atau VS Code sebagai tempat menulis kode. Di sini, kita bisa langsung melihat hasil grafik atau tabel tepat di bawah kode yang kita tulis, jadi proses eksperimennya terasa lebih nyata.

4 Berikan Pengatahuan khusus Anda tentang Data Science?

Data Science merupakan bidang ilmu yang menggabungkan statistik, matematika, dan teknologi informasi untuk mengolah serta menganalisis data dalam jumlah besar guna menghasilkan informasi yang bernilai dan mendukung proses pengambilan keputusan. Dan Saya memiliki minat pada bidang Data Science, khususnya pada konsentrasi Big Data Engineering.

4.1 Big Data Engineering :

Adalah salah satu bagian dalam Data Science yang berfokus pada pengelolaan data berskala besar (big data), baik data terstruktur maupun tidak terstruktur. Bidang ini menitikberatkan pada pembangunan dan pengelolaan infrastruktur data.

4.2 Ruang Lingkup Big Data Engineering

Ruang lingkup Big Data Engineering meliputi:

  • Perancangan dan pembangunan sistem penyimpanan data (database dan data warehouse).

  • Pengembangan data pipeline untuk proses pengumpulan dan pengolahan data.

  • Pengelolaan sistem komputasi terdistribusi dan cloud computing.

  • Optimalisasi kinerja sistem agar mampu menangani volume data yang besar secara efisien.

4.3 Keterampilan yang Dibutuhkan

Seorang Big Data Engineer perlu memiliki kemampuan dalam:

  • Pemrograman (seperti Python dan SQL).

  • Manajemen basis data.

  • Pemahaman tentang sistem terdistribusi.

  • Penggunaan teknologi pengolahan big data

5 KESIMPULAN

Secara keseluruhan, Data Science bukan hanya tentang kemampuan menulis kode, melainkan sebuah disiplin ilmu strategis yang menggabungkan kemahiran teknis dengan logika berpikir yang kuat. Pemrograman berperan sebagai mesin utama yang memungkinkan kita mengolah data raksasa, mengotomatisasi pekerjaan repetitif, dan menjaga transparansi hasil analisis agar dapat dipertanggungjawabkan secara ilmiah.

Dengan menguasai berbagai perangkat seperti Python, SQL, hingga teknologi Machine Learning, seorang praktisi data memiliki kemampuan untuk mengubah tumpukan data mentah yang berantakan menjadi kompas bagi pengambilan keputusan yang akurat.

Khusus dalam bidang Big Data Engineering, fokus utamanya bergeser pada pembangunan infrastruktur bagi data tersebut. Tanpa sistem penyimpanan dan saluran data (data pipeline) yang kokoh, analisis data berskala besar tidak akan mungkin terjadi. Oleh karena itu, sinergi antara kemampuan analisis dan ketangguhan infrastruktur adalah kunci utama untuk menjawab tantangan data di masa depan.

LS0tDQp0aXRsZTogIlBFTVJPR1JBTUFOIFNBSU5TIERBVEEiICAgICAgICMgTWFpbiB0aXRsZSBvZiB0aGUgZG9jdW1lbnQNCnN1YnRpdGxlOiAiRXhlcnNpemUgd2Vla34yIiAgIyBTdWJ0aXRsZSBvciB0b3BpYyBmb3Igd2VlayA0DQphdXRob3I6IA0KLSAiVmVyb25pY2EgTSBMIEYgWGF2aWVyIiAgICAgICAjIFJlcGxhY2Ugd2l0aCB5b3VyIGZ1bGwgbmFtZQ0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCIgIyBBdXRvIGRpc3BsYXlzIHRoZSBjdXJyZW50IGRhdGUNCm91dHB1dDogICAgICAgICAgICAgICAgICAgICAgICAgIyBPdXRwdXQgc2VjdGlvbiBkZWZpbmVzIHRoZSBmb3JtYXQgYW5kIGxheW91dCANCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUgICAgICAgICMgRW1iZWRzIGFsbCByZXNvdXJjZXMgKENTUywgSlMsIGltYWdlcykgDQogICAgdGh1bWJuYWlsczogdHJ1ZSAgICAgICAgICAgICMgRGlzcGxheXMgaW1hZ2UgdGh1bWJuYWlscyBpbiB0aGUgZG9jDQogICAgbGlnaHRib3g6IHRydWUgICAgICAgICAgICAgICMgRW5hYmxlcyBjbGljayB0byBlbmxhcmdlIGltYWdlcw0KICAgIGdhbGxlcnk6IHRydWUgICAgICAgICAgICAgICAjIEdyb3VwcyBpbWFnZXMgaW50byBhbiBpbnRlcmFjdGl2ZSBnYWxsZXJ5DQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlICAgICAgICMgQXV0b21hdGljYWxseSBudW1iZXJzIGFsbCBzZWN0aW9ucw0KICAgIGxpYl9kaXI6IGxpYnMgICAgICAgICAgICAgICAjIERpcmVjdG9yeSB3aGVyZSBKYXZhU2NyaXB0L0NTUyBsaWJyYXJpZXMNCiAgICBkZl9wcmludDogInBhZ2VkIiAgICAgICAgICAgIyBEaXNwbGF5cyBkYXRhIGZyYW1lcyBhcyBpbnRlcmFjdGl2ZSBwYWdlZCANCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93IiAgICAgICAgIyBBbGxvd3MgZm9sZGluZy91bmZvbGRpbmcgUiBjb2RlIGJsb2NrcyANCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMgICAgICAgICAgIyBBZGRzIGEgYnV0dG9uIHRvIGRvd25sb2FkIGFsbCBSIGNvZGUNCiAgICBjc3M6OlN0eWxlLmNzczoNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQo8Ym9keT4NCjxzdHlsZT4NCg0KLnByb2ZpbGUtY2FyZCB7DQogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsNCiAgICBib3JkZXItcmFkaXVzOiAxNXB4Ow0KICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsNCiAgICBwYWRkaW5nOiAzMHB4Ow0KICAgIG1heC13aWR0aDogNTAwcHg7DQogICAgbWFyZ2luOiA0MHB4IGF1dG87DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMGYwZjA7DQp9DQoNCi5wcm9maWxlLWNhcmQgaW1nIHsNCiAgd2lkdGg6IDE4MHB4Ow0KICBib3JkZXItcmFkaXVzOiA1MCU7DQogIGJvcmRlcjogNHB4IHNvbGlkIHdoaXRlOw0KICBib3gtc2hhZG93OiAwIDAgMTJweCByZ2JhKDAsMCwwLDAuMjUpOw0KfQ0KDQoucHJvZmlsZS1pbWc6aG92ZXIgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IC8qIEVmZWsgem9vbSBzYWF0IGt1cnNvciBkaSBhdGFzIGZvdG8gKi8NCn0NCg0KLyogTmFtYSBkYW4gTklNICovDQoucHJvZmlsZS1uYW1lIHsNCiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDI0cHg7DQogICAgZm9udC13ZWlnaHQ6IDcwMDsNCiAgICBjb2xvcjogIzJjM2U1MDsNCiAgICBtYXJnaW46IDEwcHggMCA1cHggMDsNCn0NCg0KLnByb2ZpbGUtbmltIHsNCiAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOw0KICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICBjb2xvcjogIzdmOGM4ZDsNCiAgICBsZXR0ZXItc3BhY2luZzogMXB4Ow0KfQ0KDQovKiBHYXJpcyBQZW1iYXRhcyBFbGVnYW4gKi8NCi5kaXZpZGVyIHsNCiAgICBoZWlnaHQ6IDJweDsNCiAgICB3aWR0aDogNTBweDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OGRiOw0KICAgIG1hcmdpbjogMTVweCBhdXRvOw0KfQ0KDQo8L3N0eWxlPg0KDQpgYGB7cn0NCmxpYnJhcnkoaHRtbHRvb2xzKQ0KDQpIVE1MKCcNCjxkaXYgY2xhc3M9InByb2ZpbGUtY2FyZCI+DQogIDxkaXY+DQogICAgPGltZyBzcmM9IkFsbWV0Y29ra2suSlBHIj4NCiAgPC9kaXY+DQogIA0KICA8ZGl2IGNsYXNzPSJwcm9maWxlLW5hbWUiPlZlcm9uaWNhIE1hcmlhIEx1Y2lhIEYgWGF2aWVyPC9kaXY+DQogIA0KICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4NCiAgDQogIDxkaXYgY2xhc3M9InByb2ZpbGUtbmltIj5OSU06IDUyMjUwMDIxPC9kaXY+DQo8L2Rpdj4NCicpDQpgYGANCg0KIyMgQXBhIHR1anVhbiB1dGFtYSBkYXJpIHBlbmVsaXRpYW4gaWxtdSBEYXRhIGRhbiBQZW1yb2dyYW1hbj8NCg0KIyMjIFR1anVhbiBVdGFtYSBQZW1yb2dyYW1hbiBkYWxhbSBEYXRhIFNjaWVuY2UNCg0KRGFsYW0gZGlzaXBsaW4gaWxtdSBTYWlucyBEYXRhLCBwZW1yb2dyYW1hbiBiZXJmdW5nc2kgc2ViYWdhaSBmb25kYXNpIHRla25pcyB5YW5nDQptZW11bmdraW5rYW4gdHJhbnNmb3JtYXNpIGRhdGEgbWVudGFoIG1lbmphZGkgd2F3YXNhbiBzdHJhdGVnaXMgeWFuZyB0ZXJ1a3VyLg0KDQojIyMgQmVyaWt1dCBhZGFsYWggdGlnYSBwaWxhciB1dGFtYSBwZW1wZXJvZ3JhbWFuIGRhbGFtIGJpZGFuZyBpbmk6DQoNCioqMSkuIFBlbXJvc2VzYW4gZGFuIFBlbWJlcnNpaGFuIERhdGEgKERhdGEgV3JhbmdsaW5nKToqKg0KU2ViYWdpYW4gYmVzYXIgZGF0YSBkaSBkdW5pYSBueWF0YSBiZXJzaWZhdCB0aWRhayB0ZXJzdHJ1a3R1ciBkYW4gaW5rb25zaXN0ZW4uDQpQZW1yb2dyYW1hbiBtZW11bmdraW5rYW4gcHJha3Rpc2kgdW50dWsgbWVueXVzdW4gc2tyaXAgb3RvbWF0aXMgZ3VuYSBtZWxha3VrYW4gDQpwZW1iZXJzaWhhbiBkYXRhLCBtZW5hbmdhbmkgbmlsYWkgeWFuZyBoaWxhbmcsIHNlcnRhIG1lbXBlcmJhaWtpIGFub21hbGkgZm9ybWF0IA0Kc2VoaW5nZ2EgZGF0YSBzaWFwIHVudHVrIGRpYW5hbGlzaXMgbGViaWggbGFuanV0IHNlY2FyYSBha3VyYXQuDQoNCioqMikuIEFuYWxpc2lzIFN0YXRpc3RpayBkYW4gUGVuZW11YW4gUG9sYSAoRXhwbG9yYXRvcnkgRGF0YSBBbmFseXNpcyk6KioNClBlbXJvZ3JhbWFuIG1lbWZhc2lsaXRhc2kga29tcHV0YXNpIHN0YXRpc3RpayBrb21wbGVrcyBwYWRhIGt1bXB1bGFuIGRhdGEgYmVyc2thbGENCmJlc2FyIHlhbmcgdGlkYWsgbXVuZ2tpbiBkaWxha3VrYW4gc2VjYXJhIG1hbnVhbC4gSGFsIGluaSBtZW5jYWt1cCBwZW5ndWppYW4gDQpoaXBvdGVzaXMsIGlkZW50aWZpa2FzaSBrb3JlbGFzaSwgZGFuIHBlbmVtdWFuIHRyZW4gdGVyc2VtYnVueWkgZ3VuYSBtZW5kdWt1bmcgDQpwZW5nYW1iaWxhbiBrZXB1dHVzYW4gYmVyYmFzaXMgZGF0YS4NCg0KKiozKS4gUGVtYmVsYWphcmFuIE1lc2luIGRhbiBPdG9tYXRpc2FzaSAoTWFjaGluZSBMZWFybmluZyk6KioNCk1lbGFsdWkgYWxnb3JpdG1hIHBlbXJvZ3JhbWFuLCBraXRhIGRhcGF0IG1lbWJhbmd1biBtb2RlbCBwcmVkaWt0aWYgeWFuZyBtYW1wdQ0KYmVsYWphciBkYXJpIHBvbGEgZGF0YSBtYXNhIGxhbHUuIFRla25vbG9naSBpbmkgbWVtdW5na2lua2FuIG90b21hdGlzYXNpDQpkYWxhbSBtZW1wcmVkaWtzaSBmZW5vbWVuYSBtYXNhIGRlcGFuLCBzZXBlcnRpIHByYWtpcmFhbiBmbHVrdHVhc2kgcGFzYXIgYXRhdSANCmRldGVrc2kgZGluaSBkYWxhbSBkaWFnbm9zYSBtZWRpcy4NCg0KDQojIyBNZW5nYXBhIEtpdGEgTWVtcGVsYWphcmkgSnVydXNhbiBEYXRhIFNjaWVuY2U/DQoNCkJlbGFqYXIgY29kaW5nIGRpIERhdGEgU2NpZW5jZSBpdHUgaWJhcmF0IG1lbnlpYXBrYW4gImFsYXQgdGVtcHVyIiB1bnR1ayBtZW5ndWJhaCANCnR1bXB1a2FuIGRhdGEgYmVyYW50YWthbiBqYWRpIGluZm9ybWFzaSB5YW5nIGJlcmd1bmEuIA0KIA0KIyMjIEFkYSAzKHRpZ2EpIGFsYXNhbiwgeWFpdHUgOw0KDQoqKjEpLiBCaXNhIE1lbmFuZ2FuaSBCaWcgRGF0YToqKg0KQXBsaWthc2kgYmlhc2Egc2VwZXJ0aSBFeGNlbCBwdW55YSBiYXRhcyBtYWtzaW1hbDsga2FsYXUga2l0YSBidWthIGZpbGUNCmRlbmdhbiAxMGp0IGJhcmlzLCBhcGxpa2FzaW55YSBha2FuIGVycm9yIGF0YXUgY3Jhc2guIERlbmdhbiBjb2RpbmcsIGtpdGEgYmlzYQ0KbWVuZ29sYWggZGF0YSBzZWJlc2FyIGFwYSBwdW4gZGVuZ2FuIGNlcGF0IGthcmVuYSBraXRhIGxhbmdzdW5nIG1lbWVyaW50YWggbWVtb3JpIA0Ka29tcHV0ZXIgdW50dWsgYmVrZXJqYS4NCg0KKioyKS4gT3RvbWF0aXNhc2kgQWx1ciBLZXJqYSBkYW4gRWZpc2llbnNpIE9wZXJhc2lvbmFsOioqDQpEYWxhbSBwcmFrdGlrIHByb2Zlc2lvbmFsIGRpIG1hc2EgZGVwYW4sIHNlb3JhbmcgcHJha3Rpc2kgZGF0YSBha2FuIHNlY2FyYSBydXRpbg0KbWVuZ2hhZGFwaSBwcm9zZXMgcGVtYmVyc2loYW4gZGFuIHBlbmdvbGFoYW4gZGF0YSB5YW5nIGJlcnNpZmF0IHJlcGV0aXRpZiBzZXRpYXAga2FsaSANCnRlcmRhcGF0IHBlbXV0YWtoaXJhbiBiYXNpcyBkYXRhLiBEaWJhbmRpbmdrYW4gZGVuZ2FuIG1lbGFrdWthbiB0YWhhcGFuIHRlcnNlYnV0IA0Kc2VjYXJhIG1hbnVhbCB5YW5nIG1lbWFrYW4gd2FrdHUgc2lnbmlmaWthbm55YSAobWlzYWxueWEgaGluZ2dhIGxpbWEgamFtIGtlcmphKSwNCnBlbXJvZ3JhbWFuIG1lbXVuZ2tpbmthbiBwZW55dXN1bmFuIHNrcmlwIGFsZ29yaXRtYSB5YW5nIGtvbXByZWhlbnNpZi4NCk1lbGFsdWkgaW1wbGVtZW50YXNpIHNrcmlwIGluaSwgc2VsdXJ1aCByYW5na2FpYW4gcHJvc2VkdXIgeWFuZyBrb21wbGVrcyBkYXBhdCANCmRpc2VsZXNhaWthbiBzZWNhcmEgb3RvbWF0aXMgZGFsYW0gaGl0dW5nYW4gZGV0aWssIHNlaGluZ2dhIG1lbmluZ2thdGthbg0KcHJvZHVrdGl2aXRhcyBkYW4gbWVtaW5pbWFsaXNhc2kgcmlzaWtvIGtlc2FsYWhhbiBtYW51c2lhIChodW1hbiBlcnJvcikuDQoNCioqMykuIFRyYW5zcGFyYW5zaSBkYW4gSGFzaWwgeWFuZyBCaXNhIERpdWppIFVsYW5nIDoqKg0KU2VzdWFpIG5hbWFueWEsICpTYWlucyBEYXRhKiBpdHUgYmlkYW5nIGlsbWlhaCwgamFkaSBoYXNpbG55YSBoYXJ1cyBiaXNhIGRpYnVrdGlrYW4gDQprZWJlbmFyYW5ueWEuIEthbGF1IGtpdGEgY3VtYSBrbGlrLWtsaWsgdG9tYm9sIGRpIHNvZnR3YXJlLCBvcmFuZyBsYWluIGJha2FsIA0KYmluZ3VuZyB1cnV0YW4ga2VyamFueWEgc2VwZXJ0aSBhcGEuIFRhcGkga2FsYXUgcGFrYWkgY29kaW5nLCBzZW11YW55YSBqYWRpIHRyYW5zcGFyYW4uIA0KVGVtYW4gc2F0dSB0aW0gYmlzYSBiYWNhIHNrcmlwIGtpdGEsIHBhaGFtIGxvZ2lrYW55YSwgZGFuIG1lbmphbGFua2FuIHVsYW5nIA0Ka29kZW55YSB1bnR1ayBtZW1hc3Rpa2FuIGhhc2lsbnlhIG1lbWFuZyBha3VyYXQgZGFuIGtvbnNpc3Rlbi4NCg0KIyMgVG9vbHMgYXBhIGFqYSB5YW5nIGhhcnVzIGRpcGVsYWphcmk/DQoNCiMjIyBUb29scyB5YW5nIFdhamliIERpa3Vhc2FpIGRpIERhdGEgU2NpZW5jZQ0KVW50dWsgamFkaSBhaGxpIGRpIGJpZGFuZyBEYXRhIFNjaWVuY2UsIGtpdGEgYnV0dWgga29tYmluYXNpIGJlcmJhZ2FpIGFsYXQgdW50dWsgbWVuZ29sYWggZGF0YSBtZW50YWggc2FtcGFpIGphZGkga2VjZXJkYXNhbiBidWF0YW4gKEFJKS4gDQoNCiMjIyBCZXJpa3V0IGFkYWxhaCBkYWZ0YXIgdG9vbHMgeWFuZyBoYXJ1cyBraXRhIHBlbGFqYXJpOg0KDQoqKjEpLiBCYWhhc2EgUGVtcm9ncmFtYW4gRGFzYXI6KioNCg0KLSAqUHl0aG9uOiogSW5pIGFkYWxhaCAiYmFoYXNhIGlidSIgYmFnaSBEYXRhIFNjaWVudGlzdC4gUG9wdWxlciBrYXJlbmEga29kZW55YQ0KbXVkYWggZGliYWNhIGRhbiBwdW55YSBqdXRhYW4gcGVycHVzdGFrYWFuIChsaWJyYXJpZXMpIHBlbmR1a3VuZy4NCg0KLSAqU1FMIChTdHJ1Y3R1cmVkIFF1ZXJ5IExhbmd1YWdlKToqIFdhamliIGRpa3Vhc2FpIHVudHVrIG1lbmdhbWJpbCAocXVlcnkpIGRhdGEgZGFyaSBkYXRhYmFzZSBwZXJ1c2FoYWFuLiBUYW5wYSBTUUwsIGthbXUgdGlkYWsgYmlzYSBtZW5nYWtzZXMgZGF0YSB5YW5nIGluZ2luIGRpb2xhaC4NCg0KLSAqUjoqIFNlcmluZyBkaWd1bmFrYW4gb2xlaCBha2FkZW1pc2kgYXRhdSBzdGF0aXN0aWthd2FuIHVudHVrIGFuYWxpc2lzIGRhdGEgeWFuZw0Kc2FuZ2F0IG1lbmRhbGFtIGRhbiB2aXN1YWxpc2FzaSB5YW5nIGVzdHJ1Y3R1cmVkLg0KDQoqKjIpLiBBbGF0IE9sYWggZGFuIEFuYWxpc2lzIERhdGE6KioNCkFkYSBQYW5kYXMgeWFuZyBmdW5nc2lueWEgbWlyaXAgRXhjZWwgdGFwaSB2ZXJzaSBjb2RpbmcsIGd1bmFueWEgdW50dWsgYmVyc2loLWJlcnNpaA0KZGFuIG1lbmdhdHVyIHRhYmVsIGRhdGEuIExhbHUgYWRhIE51bVB5LCBhbGF0IGtodXN1cyB1bnR1ayBtZW5naGl0dW5nIG1hdGVtYXRpa2EgDQp5YW5nIHJ1bWl0IGRhbiBiZXJhdCBkZW5nYW4gc2FuZ2F0IGNlcGF0Lg0KDQoqKjMpLiBNZW1iYW5ndW4gKE1hY2hpbmUgTGVhcm5pbmcgJiBBSSk6KioNClVudHVrIG1lbWJ1YXQgbW9kZWwgcHJlZGlrc2kgeWFuZyBzaW1wZWwsIGtpdGEgcGFrYWkgU2Npa2l0LUxlYXJuLiBUYXBpIGthbGF1DQppbmdpbiBtZW1idWF0IHRla25vbG9naSBjYW5nZ2loIHNlcGVydGkgcGVuZ2VuYWwgd2FqYWggYXRhdSBDaGF0R1BULCBraXRhIGJpYXNhbnlhIG1lbmdndW5ha2FuICpUZW5zb3JGbG93IGF0YXUgUHlUb3JjaC4qDQoNCioqNCkuIFRlbXBhdCBLZXJqYSBEaWdpdGFsIChJREUpOioqDQpLaXRhIGJ1dHVoIEp1cHl0ZXIgTm90ZWJvb2tzIGF0YXUgVlMgQ29kZSBzZWJhZ2FpIHRlbXBhdCBtZW51bGlzIGtvZGUuIA0KRGkgc2luaSwga2l0YSBiaXNhIGxhbmdzdW5nIG1lbGloYXQgaGFzaWwgZ3JhZmlrIGF0YXUgdGFiZWwgdGVwYXQgZGkgYmF3YWgga29kZQ0KeWFuZyBraXRhIHR1bGlzLCBqYWRpIHByb3NlcyBla3NwZXJpbWVubnlhIHRlcmFzYSBsZWJpaCBueWF0YS4NCg0KIyMgQmVyaWthbiBQZW5nYXRhaHVhbiBraHVzdXMgQW5kYSB0ZW50YW5nIERhdGEgU2NpZW5jZT8NCg0KRGF0YSBTY2llbmNlIG1lcnVwYWthbiBiaWRhbmcgaWxtdSB5YW5nIG1lbmdnYWJ1bmdrYW4gDQpzdGF0aXN0aWssIG1hdGVtYXRpa2EsIGRhbiB0ZWtub2xvZ2kgaW5mb3JtYXNpIHVudHVrIG1lbmdvbGFoIHNlcnRhIA0KbWVuZ2FuYWxpc2lzIGRhdGEgZGFsYW0ganVtbGFoIGJlc2FyIGd1bmEgbWVuZ2hhc2lsa2FuIGluZm9ybWFzaSB5YW5nIGJlcm5pbGFpDQpkYW4gbWVuZHVrdW5nIHByb3NlcyBwZW5nYW1iaWxhbiBrZXB1dHVzYW4uDQpEYW4gU2F5YSBtZW1pbGlraSBtaW5hdCBwYWRhIGJpZGFuZyBEYXRhIFNjaWVuY2UsIGtodXN1c255YSBwYWRhIGtvbnNlbnRyYXNpIA0KQmlnIERhdGEgRW5naW5lZXJpbmcuDQoNCiMjIyBCaWcgRGF0YSBFbmdpbmVlcmluZyA6DQpBZGFsYWggc2FsYWggc2F0dSBiYWdpYW4gZGFsYW0gRGF0YSBTY2llbmNlIHlhbmcgYmVyZm9rdXMgcGFkYSANCnBlbmdlbG9sYWFuIGRhdGEgYmVyc2thbGEgYmVzYXIgKGJpZyBkYXRhKSwgYmFpayBkYXRhIHRlcnN0cnVrdHVyIG1hdXB1biB0aWRhayB0ZXJzdHJ1a3R1ci4gDQpCaWRhbmcgaW5pIG1lbml0aWtiZXJhdGthbiBwYWRhIHBlbWJhbmd1bmFuIGRhbiBwZW5nZWxvbGFhbiBpbmZyYXN0cnVrdHVyIGRhdGEuDQoNCiMjIyBSdWFuZyBMaW5na3VwIEJpZyBEYXRhIEVuZ2luZWVyaW5nDQpSdWFuZyBsaW5na3VwIEJpZyBEYXRhIEVuZ2luZWVyaW5nIG1lbGlwdXRpOg0KDQotICoqUGVyYW5jYW5nYW4gZGFuIHBlbWJhbmd1bmFuIHNpc3RlbSBwZW55aW1wYW5hbiBkYXRhIChkYXRhYmFzZSBkYW4gZGF0YSB3YXJlaG91c2UpLioqDQoNCg0KLSAqKlBlbmdlbWJhbmdhbiBkYXRhIHBpcGVsaW5lIHVudHVrIHByb3NlcyBwZW5ndW1wdWxhbiBkYW4gcGVuZ29sYWhhbiBkYXRhLioqDQoNCg0KLSAqKlBlbmdlbG9sYWFuIHNpc3RlbSBrb21wdXRhc2kgdGVyZGlzdHJpYnVzaSBkYW4gY2xvdWQgY29tcHV0aW5nLioqDQoNCg0KLSAqKk9wdGltYWxpc2FzaSBraW5lcmphIHNpc3RlbSBhZ2FyIG1hbXB1IG1lbmFuZ2FuaSB2b2x1bWUgZGF0YSB5YW5nIGJlc2FyIHNlY2FyYSBlZmlzaWVuLioqDQoNCg0KIyMjIEtldGVyYW1waWxhbiB5YW5nIERpYnV0dWhrYW4NClNlb3JhbmcgQmlnIERhdGEgRW5naW5lZXIgcGVybHUgbWVtaWxpa2kga2VtYW1wdWFuIGRhbGFtOg0KDQotICoqUGVtcm9ncmFtYW4gKHNlcGVydGkgUHl0aG9uIGRhbiBTUUwpLioqDQoNCi0gKipNYW5hamVtZW4gYmFzaXMgZGF0YS4qKg0KDQotICoqUGVtYWhhbWFuIHRlbnRhbmcgc2lzdGVtIHRlcmRpc3RyaWJ1c2kuKioNCg0KLSAqKlBlbmdndW5hYW4gdGVrbm9sb2dpIHBlbmdvbGFoYW4gYmlnIGRhdGEqKg0KDQojIyBLRVNJTVBVTEFODQpTZWNhcmEga2VzZWx1cnVoYW4sIERhdGEgU2NpZW5jZSBidWthbiBoYW55YSB0ZW50YW5nIGtlbWFtcHVhbiBtZW51bGlzIGtvZGUsIG1lbGFpbmthbiBzZWJ1YWggZGlzaXBsaW4gaWxtdSBzdHJhdGVnaXMgeWFuZyBtZW5nZ2FidW5na2FuIGtlbWFoaXJhbiB0ZWtuaXMgZGVuZ2FuIGxvZ2lrYSBiZXJwaWtpciB5YW5nIGt1YXQuIFBlbXJvZ3JhbWFuIGJlcnBlcmFuIHNlYmFnYWkgbWVzaW4gdXRhbWEgeWFuZyBtZW11bmdraW5rYW4ga2l0YSBtZW5nb2xhaCBkYXRhIHJha3Nhc2EsIG1lbmdvdG9tYXRpc2FzaSBwZWtlcmphYW4gcmVwZXRpdGlmLCBkYW4gbWVuamFnYSB0cmFuc3BhcmFuc2kgaGFzaWwgYW5hbGlzaXMgYWdhciBkYXBhdCBkaXBlcnRhbmdndW5namF3YWJrYW4gc2VjYXJhIGlsbWlhaC4NCg0KRGVuZ2FuIG1lbmd1YXNhaSBiZXJiYWdhaSBwZXJhbmdrYXQgc2VwZXJ0aSAqUHl0aG9uKiwgKlNRTCosIGhpbmdnYSB0ZWtub2xvZ2kNCipNYWNoaW5lIExlYXJuaW5nKiwgc2VvcmFuZyBwcmFrdGlzaSBkYXRhIG1lbWlsaWtpIGtlbWFtcHVhbiB1bnR1ayBtZW5ndWJhaCB0dW1wdWthbg0KZGF0YSBtZW50YWggeWFuZyBiZXJhbnRha2FuIG1lbmphZGkgKmtvbXBhcyogYmFnaSBwZW5nYW1iaWxhbiBrZXB1dHVzYW4geWFuZyBha3VyYXQuDQoNCktodXN1cyBkYWxhbSBiaWRhbmcgKkJpZyBEYXRhIEVuZ2luZWVyaW5nKiwgZm9rdXMgdXRhbWFueWEgYmVyZ2VzZXIgcGFkYSANCnBlbWJhbmd1bmFuIGluZnJhc3RydWt0dXIgYmFnaSBkYXRhIHRlcnNlYnV0LiBUYW5wYSBzaXN0ZW0gcGVueWltcGFuYW4gDQpkYW4gc2FsdXJhbiBkYXRhIChkYXRhIHBpcGVsaW5lKSB5YW5nIGtva29oLCBhbmFsaXNpcyBkYXRhIGJlcnNrYWxhIGJlc2FyIA0KdGlkYWsgYWthbiBtdW5na2luIHRlcmphZGkuIE9sZWgga2FyZW5hIGl0dSwgc2luZXJnaSBhbnRhcmEga2VtYW1wdWFuIGFuYWxpc2lzDQpkYW4ga2V0YW5nZ3VoYW4gaW5mcmFzdHJ1a3R1ciBhZGFsYWgga3VuY2kgdXRhbWEgdW50dWsgbWVuamF3YWIgdGFudGFuZ2FuIGRhdGEgDQpkaSBtYXNhIGRlcGFuLg0KDQo=