Email             :
RPubs            : https://rpubs.com/kentzend03/
Jurusan          : Fisika Medis
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


1 Soal 1

Carilah Definisi Algoritma dan Struktur Data dalam berbagai bidang ilmu (Contoh: Sains Data, Fisika, Teknik Informatika, dan Sistem Informasi)!

Jawaban:

1.1 Fisika

Algoritma adalah urutan atau langkah-langkah untuk penghitungan atau untuk menyelesaikan suatu masalah yang ditulis secara berurutan.

1.2 Ilmu Komputer

Algoritma adalah sebuah prosedur langkah demi langkah untuk proses penghitungan. Sedangkan struktur data adalah cara penyimpanan , pengorganisasian , dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.

1.3 Sistem Informasi

Algoritma adalah suatu langkah-langkah logis tertentu yang digunakan untuk menyelesaikan suatu masalah. Dalam hal ini, masalah yang dimaksud adalah masalah dalam membangun sebuah sistem ataupun program yang berjalan di dalam sebuah komputer.

1.4 Teknik Pemograman

Struktur data adalah tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) ataupunkolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.

2 Soal 2

Sebagai mahasiswa buatlah algoritma dan flowchart yang anda lakukan untuk mencapai kelulusan sarjana dengan IPK minimal 3.5 dari Universitas Matana?

Jawaban:

Mencapai kelulusan dengan IPK yang tinggi adalah impian dari setiap mahasiswa/i di suatu universitas. Dan untuk mencapai itu, setiap mahasiswa/i harus mengikuti setiap prosedur yang ditetapkan oleh universitas yang ia tempati. Universitas Matana sendiri memiliki prosedur kelulusan dengan IPK 3,5 sebagai berikut:

 Mahasiswa/i mendaftar di Universitas Matana.

 Mahasiswa/i mendaftar ulang di Universitas Matana.

 Mahasiswa menjalani kuliah di semester 1.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 1 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 2.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 1.

 Mahasiswa menjalani kuliah di semester 2.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 2 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 3.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 2.

 Mahasiswa menjalani kuliah di semester 3.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 3 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 4.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 3.

 Mahasiswa menjalani kuliah di semester 4.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 4 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 5.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 4.

 Mahasiswa menjalani kuliah di semester 5.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 5 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 6.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 5.

 Mahasiswa menjalani kuliah di semester 6.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 6 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 7.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 6.

 Mahasiswa menjalani kuliah di semester 7.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 7 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i melanjut ke semester 8.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 7.

 Mahasiswa menjalani kuliah di semester 8.

 Memastikan apakah mahasiswa/i mendapatkan IPS di semester 8 lebih atau sama dengan 3,5.

 Jika ya, mahasiswa/i lulus sarjana dengan IPK 3,5 dari Universitas Matana.

 Jika tidak, mahasiswa/I harus mengulang satu semester lagi di semester 8.

3 Soal 3

Mengapa anda harus belajar Algoritma dan Struktur Data?

Jawaban:

Dalam kehidupan sehari-hari, Algoritma dan Struktur Data sangat diperlukan. Sebagai contoh saat kita berada di dalam sebuah perpustakaan, ada berjuta-juta buku di dalam sana. Dengan menggunakan prinsip Algoritma dan Struktur Data (menyortir/menggolongkan buku berdasarkan abjad, tema, dan lain sebagainya), akan memperbesar kemungkinan kita menemukan buku yang sedang kita cari. Contoh lainnya adalah saat kita ke bank. Kita akan menunggu sampai antrian kita dipanggil barulah kita akan menuju ke teller. Dan masih banyak lagi contoh pemanfaatan Algoritma dan Struktur Data dalam kehidupan sehari-hari.

4 Soal 4

Sebutkan 3 bahasa pemrograman yang yang paling banyak digunakan dalam Sains Data, Berikan penjelasan kelebihan, kekurangan, dan hubungan bahasa pemrogaman yang satu dengan yang lainnya!

Jawaban:

4.1 Bahasa C

Kelebihan:

  1. Bahasa C tersedia hampir di semua jenis komputer
  2. Kode bahasa C sifatnya adalah portable dan fleksible untuk semua jenis komputer.
  3. Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata kunci.
  4. Proses executable program bahasa C lebih cepat.
  5. Dukungan pustaka yang banyak.
  6. C adalah bahasa yang terstruktur.
  7. Bahasa C termasuk bahasa tingkat menengah.

Kekurangan:

  1. Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai.
  2. Bagi pemula pada umumnya akan kesulitan menggunakan pointer.

Hubungan dengan Bahasa Pemrograman Lainnya:

Bahasa C adalah “ibu” dari bahasa pemrograman lainnya seperti Java, dan lain sebagainya.

4.2 Bahasa Java

Kelebihan:

  1. Sederhana dan ampuh, java menyediakan sarana untuk membuat program (applet) yang berjalan pada web browser. Programmer dapat menggunakan applet kecil yang aman, dinamik, lintas platform, aktif dan siap dijalankan di jaringan.
  2. Aman, java dirancang dengan konsep keamanan internet.
  3. Berorientasi objek, java tidak diturunkan bahasa pemrogaman manapun. Java memiliki keseimbangan yang menyediakan mekanisme peng-class-an sederhana dengan model antarmuka dinamik yang intuitif hanya jika diperlukan.
  4. Kokoh, java membatasi programmer dengan memberi kunci supaya progamer dapat menemukan kesalahan lebih cepat saat mengembangkan program.
  5. Interaktif, java dirancang untuk menciptakan program jaringan yang interaktif.
  6. Netral terhadap berbagai arsitektur, java mampu berjalan dalam platform apapun seperti PC, UNIX, Macintosh, dll.
  7. Terinterpretasi dan berkinerja tinggi, java melengkapi keajaiban lintas platform yang luar biasa dengan kompilasi ke dalam representasi langsung yang disebut java code byte yang dapat diterjemahkan oleh system apapun yang memiliki java interpreter dan java virtual machine.
  8. Mudah dipelajari karena bersifat sederhana.
  9. Mendukung koneksi ke database.

Kekurangan:

  1. Java memiliki kecepatan yang kurang dari bahasa C ++.
  2. Implementasi J2ME tidak global. Misalnya, J2ME untuk Motorola dengan J2ME untuk Sony Ericson tidak sama. Berbeda lagi J2ME untuk Nokia. Setiap produk selalu mempunyai modul tersendiri yang dinilai aneh penerapannya dan harus di-compile dengan modul yang berbeda-beda.
  3. Java memakan banyak memori computer.
  4. Java merupakan bahasa yang kompleks dan susah dipelajari.
  5. Program yang dibuat oleh bahasa ini lebih lambat disbanding program yang dibuat dengan bahasa lain seperti C atau C++.

Hubungan dengan Bahasa Pemrograman Lainnya:

Java mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal.

4.3 Bahasa Ruby

Kelebihan:

  1. Sintaks sederhana.
  2. Memiliki Exception Handling yang baik.
  3. OOP.
  4. Single inheritance.
  5. Didukung oleh OS Linux, Windows, MacOS X, OS/2, BeOs, dan Unix.
  6. Merupakan bahasa pemrograman scripting yang berorientasi objek.
  7. Memiliki garbage collector yang secara otomatis akan menghapus informasi tak terpakai dari memori.

Kekurangan

  1. Multithreading. Implementasi thread di ruby masih berupa green thread, bukan native thread. Hal ini membuat aplikasi GUI (desktop) dengan background thread tidak mungkin diimplementasikan di ruby.
  2. Virtual Memory, ruby masih fully interpreted sehingga program ruby cenderung lebih lambat.
  3. Spek. saat ini spesifikasi ruby (syntax, behaviour, dll) adalah implementasi ruby yang asli dari matz.
  4. IDE. Saat ini kualitas IDE untuk ruby masih jauh daripada .net dan java. Tapi dengan bermunculnya IDE ruby yang dibuat dengan java.net, kondisinya agak berubah. Tapi karena ruby bahasa yang sangat dinamis, sulit untuk bisa mendapatkan informasi secara lengkap mengenai struktur sebuah program ruby secara statis.

Hubungan dengan Bahasa Pemrograman Lainnya:

Banyak sintaks Ruby yang sudah biasa digunakan oleh pengguna Python, Java dan bahasa pemrograman lainnya

LS0tDQp0aXRsZTogIkFsZ29yaXRtYSAmIFN0cnVrdHVyIERhdGEiDQpzdWJ0aXRsZTogIlR1Z2FzIDEiDQphdXRob3I6ICJLZW50IEp1YW4gTmF0YW5pZWwgWWFvaXNva2hpIFplbmRyYXRvICgyMDIxNDUyMDAwNCkiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICBodG1sX2RvY3VtZW50OiBudWxsDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHNhbmRzdG9uZQ0KICAgIGNzczogc3R5bGUxLmNzcw0KICAgIGhpZ2hsaWdodDogbW9ub2Nocm9tZQ0KLS0tDQoNCg0KPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IDBweCAxMDBweCAwcHggMHB4OyB3aWR0aDoyNSUiIHNyYz0iRm90by5wbmciLz4gDQoNCmBgYHtyIGxvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMzAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJsb2dvLnBuZyIpDQpgYGANCg0KRW1haWwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7OiAga2VudC56ZW5kcmF0b0BzdHVkZW50Lm1hdGFuYXVuaXZlcnNpdHkuYWMuaWQgPGJyPg0KUlB1YnMgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogaHR0cHM6Ly9ycHVicy5jb20va2VudHplbmQwMy8gPGJyPg0KSnVydXNhbiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBbRmlzaWthIE1lZGlzXShodHRwczovL21hdGFuYXVuaXZlcnNpdHkuYWMuaWQvP2x5PWFjYWRlbWljJmM9c2IpIDxicj4NCkFkZHJlc3MgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IEFSQSBDZW50ZXIsIE1hdGFuYSBVbml2ZXJzaXR5IFRvd2VyIDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7IEpsLiBDQkQgQmFyYXQgS2F2LCBSVC4xLCBDdXJ1ZyBTYW5nZXJlbmcsIEtlbGFwYSBEdWEsIFRhbmdlcmFuZywgQmFudGVuIDE1ODEwLg0KDQoqKioqDQoNCiMgU29hbCAxDQoNCkNhcmlsYWggRGVmaW5pc2kgQWxnb3JpdG1hIGRhbiBTdHJ1a3R1ciBEYXRhIGRhbGFtIGJlcmJhZ2FpIGJpZGFuZyBpbG11IChDb250b2g6IFNhaW5zIERhdGEsIEZpc2lrYSwgVGVrbmlrIEluZm9ybWF0aWthLCBkYW4gU2lzdGVtIEluZm9ybWFzaSkhDQoNCioqSmF3YWJhbjoqKg0KDQojIyBGaXNpa2ENCg0KQWxnb3JpdG1hIGFkYWxhaCB1cnV0YW4gYXRhdSBsYW5na2FoLWxhbmdrYWggdW50dWsgcGVuZ2hpdHVuZ2FuIGF0YXUgdW50dWsgbWVueWVsZXNhaWthbiBzdWF0dSBtYXNhbGFoIHlhbmcgZGl0dWxpcyBzZWNhcmEgYmVydXJ1dGFuLg0KDQojIyBJbG11IEtvbXB1dGVyIA0KDQpBbGdvcml0bWEgYWRhbGFoIHNlYnVhaCBwcm9zZWR1ciBsYW5na2FoIGRlbWkgbGFuZ2thaCB1bnR1ayBwcm9zZXMgcGVuZ2hpdHVuZ2FuLiBTZWRhbmdrYW4gc3RydWt0dXIgZGF0YSBhZGFsYWggY2FyYSBwZW55aW1wYW5hbiAsIHBlbmdvcmdhbmlzYXNpYW4gLCBkYW4NCnBlbmdhdHVyYW4gZGF0YSBkaSBkYWxhbSBtZWRpYSBwZW55aW1wYW5hbiBrb21wdXRlciBzZWhpbmdnYSBkYXRhIHRlcnNlYnV0IGRhcGF0IGRpZ3VuYWthbiBzZWNhcmEgZWZpc2llbi4NCg0KIyMgU2lzdGVtIEluZm9ybWFzaQ0KDQpBbGdvcml0bWEgYWRhbGFoIHN1YXR1IGxhbmdrYWgtbGFuZ2thaCBsb2dpcyB0ZXJ0ZW50dSB5YW5nIGRpZ3VuYWthbiB1bnR1ayBtZW55ZWxlc2Fpa2FuIHN1YXR1IG1hc2FsYWguIERhbGFtIGhhbCBpbmksIG1hc2FsYWggeWFuZyBkaW1ha3N1ZCBhZGFsYWggbWFzYWxhaCBkYWxhbSBtZW1iYW5ndW4gc2VidWFoIHNpc3RlbSBhdGF1cHVuIHByb2dyYW0geWFuZyBiZXJqYWxhbiBkaSBkYWxhbSBzZWJ1YWgga29tcHV0ZXIuDQoNCiMjIFRla25payBQZW1vZ3JhbWFuDQoNClN0cnVrdHVyIGRhdGEgYWRhbGFoIHRhdGEgbGV0YWsgZGF0YSB5YW5nIGJlcmlzaSBrb2xvbS1rb2xvbSBkYXRhLCBiYWlrIGl0dSBrb2xvbSB5YW5nIHRhbXBhayBvbGVoIHBlbmdndW5hICh1c2VyKSBhdGF1cHVua29sb20geWFuZyBoYW55YSBkaWd1bmFrYW4gdW50dWsga2VwZXJsdWFuIHBlbXJvZ3JhbWFuIHlhbmcgdGlkYWsgdGFtcGFrIG9sZWggcGVuZ2d1bmEuDQoNCiMgU29hbCAyDQoNClNlYmFnYWkgbWFoYXNpc3dhIGJ1YXRsYWggYWxnb3JpdG1hIGRhbiBmbG93Y2hhcnQgeWFuZyBhbmRhIGxha3VrYW4gdW50dWsgbWVuY2FwYWkga2VsdWx1c2FuIHNhcmphbmEgZGVuZ2FuIElQSyBtaW5pbWFsIDMuNSBkYXJpIFVuaXZlcnNpdGFzIE1hdGFuYT8NCg0KKipKYXdhYmFuOioqDQoNCk1lbmNhcGFpIGtlbHVsdXNhbiBkZW5nYW4gSVBLIHlhbmcgdGluZ2dpIGFkYWxhaCBpbXBpYW4gZGFyaSBzZXRpYXAgbWFoYXNpc3dhL2kgZGkgc3VhdHUgdW5pdmVyc2l0YXMuIERhbiB1bnR1ayBtZW5jYXBhaSBpdHUsIHNldGlhcCBtYWhhc2lzd2EvaSBoYXJ1cyBtZW5naWt1dGkgc2V0aWFwIHByb3NlZHVyIHlhbmcgZGl0ZXRhcGthbiBvbGVoIHVuaXZlcnNpdGFzIHlhbmcgaWEgdGVtcGF0aS4gVW5pdmVyc2l0YXMgTWF0YW5hIHNlbmRpcmkgbWVtaWxpa2kgcHJvc2VkdXIga2VsdWx1c2FuIGRlbmdhbiBJUEsgMyw1IHNlYmFnYWkgYmVyaWt1dDoNCg0K74OYCU1haGFzaXN3YS9pIG1lbmRhZnRhciBkaSBVbml2ZXJzaXRhcyBNYXRhbmEuDQoNCu+DmAlNYWhhc2lzd2EvaSBtZW5kYWZ0YXIgdWxhbmcgZGkgVW5pdmVyc2l0YXMgTWF0YW5hLg0KDQrvg5gJTWFoYXNpc3dhIG1lbmphbGFuaSBrdWxpYWggZGkgc2VtZXN0ZXIgMS4NCg0K74OYCU1lbWFzdGlrYW4gYXBha2FoIG1haGFzaXN3YS9pIG1lbmRhcGF0a2FuIElQUyBkaSBzZW1lc3RlciAxIGxlYmloIGF0YXUgc2FtYSBkZW5nYW4gMyw1Lg0KDQrvg5gJSmlrYSB5YSwgbWFoYXNpc3dhL2kgbWVsYW5qdXQga2Ugc2VtZXN0ZXIgMi4NCg0K74OYCUppa2EgdGlkYWssIG1haGFzaXN3YS9JIGhhcnVzIG1lbmd1bGFuZyBzYXR1IHNlbWVzdGVyIGxhZ2kgZGkgc2VtZXN0ZXIgMS4NCg0K74OYCU1haGFzaXN3YSBtZW5qYWxhbmkga3VsaWFoIGRpIHNlbWVzdGVyIDIuDQoNCu+DmAlNZW1hc3Rpa2FuIGFwYWthaCBtYWhhc2lzd2EvaSBtZW5kYXBhdGthbiBJUFMgZGkgc2VtZXN0ZXIgMiBsZWJpaCBhdGF1IHNhbWEgZGVuZ2FuIDMsNS4NCg0K74OYCUppa2EgeWEsIG1haGFzaXN3YS9pIG1lbGFuanV0IGtlIHNlbWVzdGVyIDMuDQoNCu+DmAlKaWthIHRpZGFrLCBtYWhhc2lzd2EvSSBoYXJ1cyBtZW5ndWxhbmcgc2F0dSBzZW1lc3RlciBsYWdpIGRpIHNlbWVzdGVyIDIuDQoNCu+DmAlNYWhhc2lzd2EgbWVuamFsYW5pIGt1bGlhaCBkaSBzZW1lc3RlciAzLg0KDQrvg5gJTWVtYXN0aWthbiBhcGFrYWggbWFoYXNpc3dhL2kgbWVuZGFwYXRrYW4gSVBTIGRpIHNlbWVzdGVyIDMgbGViaWggYXRhdSBzYW1hIGRlbmdhbiAzLDUuDQoNCu+DmAlKaWthIHlhLCBtYWhhc2lzd2EvaSBtZWxhbmp1dCBrZSBzZW1lc3RlciA0Lg0KDQrvg5gJSmlrYSB0aWRhaywgbWFoYXNpc3dhL0kgaGFydXMgbWVuZ3VsYW5nIHNhdHUgc2VtZXN0ZXIgbGFnaSBkaSBzZW1lc3RlciAzLg0KDQrvg5gJTWFoYXNpc3dhIG1lbmphbGFuaSBrdWxpYWggZGkgc2VtZXN0ZXIgNC4NCg0K74OYCU1lbWFzdGlrYW4gYXBha2FoIG1haGFzaXN3YS9pIG1lbmRhcGF0a2FuIElQUyBkaSBzZW1lc3RlciA0IGxlYmloIGF0YXUgc2FtYSBkZW5nYW4gMyw1Lg0KDQrvg5gJSmlrYSB5YSwgbWFoYXNpc3dhL2kgbWVsYW5qdXQga2Ugc2VtZXN0ZXIgNS4NCg0K74OYCUppa2EgdGlkYWssIG1haGFzaXN3YS9JIGhhcnVzIG1lbmd1bGFuZyBzYXR1IHNlbWVzdGVyIGxhZ2kgZGkgc2VtZXN0ZXIgNC4NCg0K74OYCU1haGFzaXN3YSBtZW5qYWxhbmkga3VsaWFoIGRpIHNlbWVzdGVyIDUuDQoNCu+DmAlNZW1hc3Rpa2FuIGFwYWthaCBtYWhhc2lzd2EvaSBtZW5kYXBhdGthbiBJUFMgZGkgc2VtZXN0ZXIgNSBsZWJpaCBhdGF1IHNhbWEgZGVuZ2FuIDMsNS4NCg0K74OYCUppa2EgeWEsIG1haGFzaXN3YS9pIG1lbGFuanV0IGtlIHNlbWVzdGVyIDYuDQoNCu+DmAlKaWthIHRpZGFrLCBtYWhhc2lzd2EvSSBoYXJ1cyBtZW5ndWxhbmcgc2F0dSBzZW1lc3RlciBsYWdpIGRpIHNlbWVzdGVyIDUuDQoNCu+DmAlNYWhhc2lzd2EgbWVuamFsYW5pIGt1bGlhaCBkaSBzZW1lc3RlciA2Lg0KDQrvg5gJTWVtYXN0aWthbiBhcGFrYWggbWFoYXNpc3dhL2kgbWVuZGFwYXRrYW4gSVBTIGRpIHNlbWVzdGVyIDYgbGViaWggYXRhdSBzYW1hIGRlbmdhbiAzLDUuDQoNCu+DmAlKaWthIHlhLCBtYWhhc2lzd2EvaSBtZWxhbmp1dCBrZSBzZW1lc3RlciA3Lg0KDQrvg5gJSmlrYSB0aWRhaywgbWFoYXNpc3dhL0kgaGFydXMgbWVuZ3VsYW5nIHNhdHUgc2VtZXN0ZXIgbGFnaSBkaSBzZW1lc3RlciA2Lg0KDQrvg5gJTWFoYXNpc3dhIG1lbmphbGFuaSBrdWxpYWggZGkgc2VtZXN0ZXIgNy4NCg0K74OYCU1lbWFzdGlrYW4gYXBha2FoIG1haGFzaXN3YS9pIG1lbmRhcGF0a2FuIElQUyBkaSBzZW1lc3RlciA3IGxlYmloIGF0YXUgc2FtYSBkZW5nYW4gMyw1Lg0KDQrvg5gJSmlrYSB5YSwgbWFoYXNpc3dhL2kgbWVsYW5qdXQga2Ugc2VtZXN0ZXIgOC4NCg0K74OYCUppa2EgdGlkYWssIG1haGFzaXN3YS9JIGhhcnVzIG1lbmd1bGFuZyBzYXR1IHNlbWVzdGVyIGxhZ2kgZGkgc2VtZXN0ZXIgNy4NCg0K74OYCU1haGFzaXN3YSBtZW5qYWxhbmkga3VsaWFoIGRpIHNlbWVzdGVyIDguDQoNCu+DmAlNZW1hc3Rpa2FuIGFwYWthaCBtYWhhc2lzd2EvaSBtZW5kYXBhdGthbiBJUFMgZGkgc2VtZXN0ZXIgOCBsZWJpaCBhdGF1IHNhbWEgZGVuZ2FuIDMsNS4NCg0K74OYCUppa2EgeWEsIG1haGFzaXN3YS9pIGx1bHVzIHNhcmphbmEgZGVuZ2FuIElQSyAzLDUgZGFyaSBVbml2ZXJzaXRhcyBNYXRhbmEuDQoNCu+DmAlKaWthIHRpZGFrLCBtYWhhc2lzd2EvSSBoYXJ1cyBtZW5ndWxhbmcgc2F0dSBzZW1lc3RlciBsYWdpIGRpIHNlbWVzdGVyIDguDQoNCmBgYHtyIGZsb3djaGFydCwgZWNobz1GQUxTRSxmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICc5MCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkZsb3djaGFydC5wbmciKQ0KYGBgDQoNCiMgU29hbCAzDQoNCk1lbmdhcGEgYW5kYSBoYXJ1cyBiZWxhamFyIEFsZ29yaXRtYSBkYW4gU3RydWt0dXIgRGF0YT8NCg0KKipKYXdhYmFuOioqDQoNCkRhbGFtIGtlaGlkdXBhbiBzZWhhcmktaGFyaSwgQWxnb3JpdG1hIGRhbiBTdHJ1a3R1ciBEYXRhIHNhbmdhdCBkaXBlcmx1a2FuLiBTZWJhZ2FpIGNvbnRvaCBzYWF0IGtpdGEgYmVyYWRhIGRpIGRhbGFtIHNlYnVhaCBwZXJwdXN0YWthYW4sIGFkYSBiZXJqdXRhLWp1dGEgYnVrdSBkaSBkYWxhbSBzYW5hLiBEZW5nYW4gbWVuZ2d1bmFrYW4gcHJpbnNpcCBBbGdvcml0bWEgZGFuIFN0cnVrdHVyIERhdGEgKG1lbnlvcnRpci9tZW5nZ29sb25na2FuIGJ1a3UgYmVyZGFzYXJrYW4gYWJqYWQsIHRlbWEsIGRhbiBsYWluIHNlYmFnYWlueWEpLCBha2FuIG1lbXBlcmJlc2FyIGtlbXVuZ2tpbmFuIGtpdGEgbWVuZW11a2FuIGJ1a3UgeWFuZyBzZWRhbmcga2l0YSBjYXJpLiBDb250b2ggbGFpbm55YSBhZGFsYWggc2FhdCBraXRhIGtlIGJhbmsuIEtpdGEgYWthbiBtZW51bmdndSBzYW1wYWkgYW50cmlhbiBraXRhIGRpcGFuZ2dpbCBiYXJ1bGFoIGtpdGEgYWthbiBtZW51anUga2UgdGVsbGVyLiBEYW4gbWFzaWggYmFueWFrIGxhZ2kgY29udG9oIHBlbWFuZmFhdGFuIEFsZ29yaXRtYSBkYW4gU3RydWt0dXIgRGF0YSBkYWxhbSBrZWhpZHVwYW4gc2VoYXJpLWhhcmkuDQoNCiMgU29hbCA0DQoNClNlYnV0a2FuIDMgYmFoYXNhIHBlbXJvZ3JhbWFuIHlhbmcgeWFuZyBwYWxpbmcgYmFueWFrIGRpZ3VuYWthbiBkYWxhbSBTYWlucyBEYXRhLCBCZXJpa2FuIHBlbmplbGFzYW4ga2VsZWJpaGFuLCBrZWt1cmFuZ2FuLCBkYW4gaHVidW5nYW4gYmFoYXNhIHBlbXJvZ2FtYW4geWFuZyBzYXR1IGRlbmdhbiB5YW5nIGxhaW5ueWEhDQoNCioqSmF3YWJhbjoqKg0KDQojIyBCYWhhc2EgQw0KDQoqKktlbGViaWhhbjoqKg0KDQoxLiBCYWhhc2EgQyB0ZXJzZWRpYSBoYW1waXIgZGkgc2VtdWEgamVuaXMga29tcHV0ZXINCjIuIEtvZGUgYmFoYXNhIEMgc2lmYXRueWEgYWRhbGFoIHBvcnRhYmxlIGRhbiBmbGVrc2libGUgdW50dWsgc2VtdWEgamVuaXMga29tcHV0ZXIuDQozLiBCYWhhc2EgQyBoYW55YSBtZW55ZWRpYWthbiBzZWRpa2l0IGthdGEta2F0YSBrdW5jaSwgaGFueWEgdGVyZGFwYXQgMzIga2F0YSBrdW5jaS4NCjQuIFByb3NlcyBleGVjdXRhYmxlIHByb2dyYW0gYmFoYXNhIEMgbGViaWggY2VwYXQuDQo1LiBEdWt1bmdhbiBwdXN0YWthIHlhbmcgYmFueWFrLg0KNi4gQyBhZGFsYWggYmFoYXNhIHlhbmcgdGVyc3RydWt0dXIuDQo3LiBCYWhhc2EgQyB0ZXJtYXN1ayBiYWhhc2EgdGluZ2thdCBtZW5lbmdhaC4NCg0KKipLZWt1cmFuZ2FuOioqDQoNCjEuIEJhbnlha255YSBvcGVyYXRvciBzZXJ0YSBmbGVrc2liaWxpdGFzIHBlbnVsaXNhbiBwcm9ncmFtIGthZGFuZy1rYWRhbmcgbWVtYmluZ3VuZ2thbiBwZW1ha2FpLg0KMi4gQmFnaSBwZW11bGEgcGFkYSB1bXVtbnlhIGFrYW4ga2VzdWxpdGFuIG1lbmdndW5ha2FuIHBvaW50ZXIuDQoNCioqSHVidW5nYW4gZGVuZ2FuIEJhaGFzYSBQZW1yb2dyYW1hbiBMYWlubnlhOioqDQoNCkJhaGFzYSBDIGFkYWxhaCAiaWJ1IiBkYXJpIGJhaGFzYSBwZW1yb2dyYW1hbiBsYWlubnlhIHNlcGVydGkgSmF2YSwgZGFuIGxhaW4gc2ViYWdhaW55YS4NCg0KIyMgQmFoYXNhIEphdmENCg0KKipLZWxlYmloYW46KioNCg0KMS4gU2VkZXJoYW5hIGRhbiBhbXB1aCwgamF2YSBtZW55ZWRpYWthbiBzYXJhbmEgdW50dWsgbWVtYnVhdCBwcm9ncmFtIChhcHBsZXQpIHlhbmcgYmVyamFsYW4gcGFkYSB3ZWIgYnJvd3Nlci4gUHJvZ3JhbW1lciBkYXBhdCBtZW5nZ3VuYWthbiBhcHBsZXQga2VjaWwgeWFuZyBhbWFuLCBkaW5hbWlrLCBsaW50YXMgcGxhdGZvcm0sIGFrdGlmIGRhbiBzaWFwIGRpamFsYW5rYW4gZGkgamFyaW5nYW4uDQoyLiBBbWFuLCBqYXZhIGRpcmFuY2FuZyBkZW5nYW4ga29uc2VwIGtlYW1hbmFuIGludGVybmV0Lg0KMy4gQmVyb3JpZW50YXNpIG9iamVrLCBqYXZhIHRpZGFrIGRpdHVydW5rYW4gYmFoYXNhIHBlbXJvZ2FtYW4gbWFuYXB1bi4gSmF2YSBtZW1pbGlraSBrZXNlaW1iYW5nYW4geWFuZyBtZW55ZWRpYWthbiBtZWthbmlzbWUgcGVuZy1jbGFzcy1hbiBzZWRlcmhhbmEgZGVuZ2FuIG1vZGVsIGFudGFybXVrYSBkaW5hbWlrIHlhbmcgaW50dWl0aWYgaGFueWEgamlrYSBkaXBlcmx1a2FuLg0KNC4gS29rb2gsIGphdmEgbWVtYmF0YXNpIHByb2dyYW1tZXIgZGVuZ2FuIG1lbWJlcmkga3VuY2kgc3VwYXlhIHByb2dhbWVyIGRhcGF0IG1lbmVtdWthbiBrZXNhbGFoYW4gbGViaWggY2VwYXQgc2FhdCBtZW5nZW1iYW5na2FuIHByb2dyYW0uDQo1LiBJbnRlcmFrdGlmLCBqYXZhIGRpcmFuY2FuZyB1bnR1ayBtZW5jaXB0YWthbiBwcm9ncmFtIGphcmluZ2FuIHlhbmcgaW50ZXJha3RpZi4NCjYuIE5ldHJhbCB0ZXJoYWRhcCBiZXJiYWdhaSBhcnNpdGVrdHVyLCBqYXZhIG1hbXB1IGJlcmphbGFuIGRhbGFtIHBsYXRmb3JtIGFwYXB1biBzZXBlcnRpIFBDLCBVTklYLCBNYWNpbnRvc2gsIGRsbC4NCjcuIFRlcmludGVycHJldGFzaSBkYW4gYmVya2luZXJqYSB0aW5nZ2ksIGphdmEgbWVsZW5na2FwaSBrZWFqYWliYW4gbGludGFzIHBsYXRmb3JtIHlhbmcgbHVhciBiaWFzYSBkZW5nYW4ga29tcGlsYXNpIGtlIGRhbGFtIHJlcHJlc2VudGFzaSBsYW5nc3VuZyB5YW5nIGRpc2VidXQgamF2YSBjb2RlIGJ5dGUgeWFuZyBkYXBhdCBkaXRlcmplbWFoa2FuIG9sZWggc3lzdGVtIGFwYXB1biB5YW5nIG1lbWlsaWtpIGphdmEgaW50ZXJwcmV0ZXIgZGFuIGphdmEgdmlydHVhbCBtYWNoaW5lLg0KOC4gTXVkYWggZGlwZWxhamFyaSBrYXJlbmEgYmVyc2lmYXQgc2VkZXJoYW5hLg0KOS4gTWVuZHVrdW5nIGtvbmVrc2kga2UgZGF0YWJhc2UuDQoNCioqS2VrdXJhbmdhbjoqKg0KDQoxLiBKYXZhIG1lbWlsaWtpIGtlY2VwYXRhbiB5YW5nIGt1cmFuZyBkYXJpIGJhaGFzYSBDICsrLg0KMi4gSW1wbGVtZW50YXNpIEoyTUUgdGlkYWsgZ2xvYmFsLiBNaXNhbG55YSwgSjJNRSB1bnR1ayBNb3Rvcm9sYSBkZW5nYW4gSjJNRSB1bnR1ayBTb255IEVyaWNzb24gdGlkYWsgc2FtYS4gQmVyYmVkYSBsYWdpIEoyTUUgdW50dWsgTm9raWEuIFNldGlhcCBwcm9kdWsgc2VsYWx1IG1lbXB1bnlhaSBtb2R1bCB0ZXJzZW5kaXJpIHlhbmcgZGluaWxhaSBhbmVoIHBlbmVyYXBhbm55YSBkYW4gaGFydXMgZGktY29tcGlsZSBkZW5nYW4gbW9kdWwgeWFuZyBiZXJiZWRhLWJlZGEuDQozLiBKYXZhIG1lbWFrYW4gYmFueWFrIG1lbW9yaSBjb21wdXRlci4NCjQuIEphdmEgbWVydXBha2FuIGJhaGFzYSB5YW5nIGtvbXBsZWtzIGRhbiBzdXNhaCBkaXBlbGFqYXJpLg0KNS4gUHJvZ3JhbSB5YW5nIGRpYnVhdCBvbGVoIGJhaGFzYSBpbmkgbGViaWggbGFtYmF0IGRpc2JhbmRpbmcgcHJvZ3JhbSB5YW5nIGRpYnVhdCBkZW5nYW4gYmFoYXNhIGxhaW4gc2VwZXJ0aSBDIGF0YXUgQysrLg0KDQoqKkh1YnVuZ2FuIGRlbmdhbiBCYWhhc2EgUGVtcm9ncmFtYW4gTGFpbm55YToqKg0KDQpKYXZhIG1lbmdhZG9wc2kgc2ludGFrc2lzIHlhbmcgdGVyZGFwYXQgcGFkYSBDIGRhbiBDKysgbmFtdW4gZGVuZ2FuIHNpbnRha3NpcyBtb2RlbCBvYmplayB5YW5nIGxlYmloIHNlZGVyaGFuYSBzZXJ0YSBkdWt1bmdhbiBydXRpbi1ydXRpbiBhcmFzIGJhd2FoIHlhbmcgbWluaW1hbC4NCg0KIyMgQmFoYXNhIFJ1YnkNCg0KKipLZWxlYmloYW46KioNCg0KMS4gU2ludGFrcyBzZWRlcmhhbmEuDQoyLiBNZW1pbGlraSBFeGNlcHRpb24gSGFuZGxpbmcgeWFuZyBiYWlrLg0KMy4gT09QLg0KNC4gU2luZ2xlIGluaGVyaXRhbmNlLg0KNS4gRGlkdWt1bmcgb2xlaCBPUyBMaW51eCwgV2luZG93cywgTWFjT1MgWCwgT1MvMiwgQmVPcywgZGFuIFVuaXguDQo2LiBNZXJ1cGFrYW4gYmFoYXNhIHBlbXJvZ3JhbWFuIHNjcmlwdGluZyB5YW5nIGJlcm9yaWVudGFzaSBvYmplay4NCjcuIE1lbWlsaWtpIGdhcmJhZ2UgY29sbGVjdG9yIHlhbmcgc2VjYXJhIG90b21hdGlzIGFrYW4gbWVuZ2hhcHVzIGluZm9ybWFzaSB0YWsgdGVycGFrYWkgZGFyaSBtZW1vcmkuDQoNCioqS2VrdXJhbmdhbioqDQoNCjEuIE11bHRpdGhyZWFkaW5nLiBJbXBsZW1lbnRhc2kgdGhyZWFkIGRpIHJ1YnkgbWFzaWggYmVydXBhIGdyZWVuIHRocmVhZCwgYnVrYW4gbmF0aXZlIHRocmVhZC4gSGFsIGluaSBtZW1idWF0IGFwbGlrYXNpIEdVSSAoZGVza3RvcCkgZGVuZ2FuIGJhY2tncm91bmQgdGhyZWFkIHRpZGFrIG11bmdraW4gZGlpbXBsZW1lbnRhc2lrYW4gZGkgcnVieS4NCjIuIFZpcnR1YWwgTWVtb3J5LCBydWJ5IG1hc2loIGZ1bGx5IGludGVycHJldGVkIHNlaGluZ2dhIHByb2dyYW0gcnVieSBjZW5kZXJ1bmcgbGViaWggbGFtYmF0Lg0KMy4gU3Blay4gc2FhdCBpbmkgc3Blc2lmaWthc2kgcnVieSAoc3ludGF4LCBiZWhhdmlvdXIsIGRsbCkgYWRhbGFoIGltcGxlbWVudGFzaSBydWJ5IHlhbmcgYXNsaSBkYXJpIG1hdHouDQo0LiBJREUuIFNhYXQgaW5pIGt1YWxpdGFzIElERSB1bnR1ayBydWJ5IG1hc2loIGphdWggZGFyaXBhZGEgLm5ldCBkYW4gamF2YS4gVGFwaSBkZW5nYW4gYmVybXVuY3VsbnlhIElERSBydWJ5IHlhbmcgZGlidWF0IGRlbmdhbiBqYXZhLm5ldCwga29uZGlzaW55YSBhZ2FrIGJlcnViYWguIFRhcGkga2FyZW5hIHJ1YnkgYmFoYXNhIHlhbmcgc2FuZ2F0IGRpbmFtaXMsIHN1bGl0IHVudHVrIGJpc2EgbWVuZGFwYXRrYW4gaW5mb3JtYXNpIHNlY2FyYSBsZW5na2FwIG1lbmdlbmFpIHN0cnVrdHVyIHNlYnVhaCBwcm9ncmFtIHJ1Ynkgc2VjYXJhIHN0YXRpcy4NCg0KKipIdWJ1bmdhbiBkZW5nYW4gQmFoYXNhIFBlbXJvZ3JhbWFuIExhaW5ueWE6KioNCg0KQmFueWFrIHNpbnRha3MgUnVieSB5YW5nIHN1ZGFoIGJpYXNhIGRpZ3VuYWthbiBvbGVoIHBlbmdndW5hIFB5dGhvbiwgSmF2YSBkYW4gYmFoYXNhIHBlbXJvZ3JhbWFuIGxhaW5ueWE=