Soal UTS Ganjil TA 23/24

Aljabar Linear

Soal 1 (CPL03, 50%)

Sebuah perusahaan pakan ternak ingin memproduksi pakan dengan kandungan nutrisi tertentu yang optimal untuk ternak mereka. Mereka memiliki tiga bahan baku utama:

  • Bahan A \((X_1)\),
  • Bahan B \((X_2)\), dan
  • Bahan C \((X_3)\).

Setiap bahan baku memiliki kandungan protein, serat, dan energi yang berbeda, dan perusahaan ingin menentukan proporsi bahan baku yang tepat agar memenuhi target nutrisi yang diinginkan.

Diberikan target nutrisi pakan yang harus dipenuhi sebagai berikut:

  • Total Protein: 240 unit
  • Total Serat: 180 unit
  • Total Energi: 300 unit

Kandungan nutrisi dari masing-masing bahan baku per satuan adalah sebagai berikut:

Nutrisi Bahan A \((X_1)\) Bahan B \((X_2)\) Bahan C \((X_3)\)
Protein 3 unit 2 unit 4 unit
Serat 1 unit 2 unit 1 unit
Energi 4 unit 3 unit 2 unit

Tugas Anda

  1. Tentukan berapa banyak masing-masing bahan baku \((X_1, X_2, X3)\) yang dibutuhkan untuk memenuhi target nutrisi.

  2. Susun sistem persamaan linear berdasarkan target nutrisi, yaitu:

    • Protein: \(3X_1 + 2X_2 + 4X_3 = 240\)
    • Serat: \(X_1 + 2X_2 + X_3 = 180\)
    • Energi: \(4X_1 + 3X_2 + 2X_3 = 300\)
  3. Selesaikan sistem persamaan ini menggunakan metode invers matriks untuk menemukan nilai \(X_1, X_2\), dan \(X_3\).

  4. Jelaskan hasil yang diperoleh secara visual, khususnya mengenai berapa banyak setiap bahan baku yang harus digunakan agar kandungan nutrisi sesuai dengan target yang ditentukan.

Petunjuk

  • Gunakan metode invers matriks untuk menyelesaikan sistem persamaan linear dengan bantuan Python. Jika matriks koefisien memiliki invers, maka solusi dapat ditentukan dengan rumus \(X = A^{-1}B\), di mana \(A\) adalah matriks koefisien, \(X\) adalah vektor variabel yang akan dicari, dan \(B\) adalah vektor target nutrisi.

  • Visualisasikan daerah solusi sistem persamaan diatas dengan menggunakan Python dan gunakan library plotly.

Soal 2 (CPL03, 50%)

Sebuah perusahaan teknologi Augmented Reality (AR) sedang membuat simulasi pemetaan objek dalam ruang tiga dimensi. Untuk menampilkan objek dengan orientasi dan posisi yang diinginkan dalam ruang AR, diperlukan beberapa transformasi linear 3D, termasuk rotasi, penskalaan, dan translasi.

Setiap titik dalam objek 3D direpresentasikan sebagai vektor posisi \((x, y, z)\), dan transformasi dilakukan melalui matriks transformasi linear \(3 \times 3\) untuk rotasi dan penskalaan, serta ditambah vektor translasi untuk menggeser posisi objek.

Transformasi yang Diterapkan

  1. Rotasi: Setiap titik dalam objek diputar pada tiga sumbu (x, y, dan z) dengan sudut tertentu. Matriks rotasi adalah sebagai berikut:

    • Rotasi sekitar sumbu x sebesar sudut \(\alpha\): \[ R_x(\alpha) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\alpha) & -\sin(\alpha) \\ 0 & \sin(\alpha) & \cos(\alpha) \end{bmatrix} \]
    • Rotasi sekitar sumbu y sebesar sudut \(\beta\): \[ R_y(\beta) = \begin{bmatrix} \cos(\beta) & 0 & \sin(\beta) \\ 0 & 1 & 0 \\ -\sin(\beta) & 0 & \cos(\beta) \end{bmatrix} \]
    • Rotasi sekitar sumbu z sebesar sudut \(\gamma\): \[ R_z(\gamma) = \begin{bmatrix} \cos(\gamma) & -\sin(\gamma) & 0 \\ \sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{bmatrix} \]
  2. Penskalaan: Untuk memperbesar objek, digunakan matriks skala dengan faktor skala \(s\): \[ S(s) = \begin{bmatrix} s & 0 & 0 \\ 0 & s & 0 \\ 0 & 0 & s \end{bmatrix} \]

  3. Translasi: Setelah rotasi dan skala, posisi objek digeser sejauh \(t_x\), \(t_y\), dan \(t_z\) untuk mengatur posisi objek dalam ruang AR.

Tugas Anda

  1. Susun Matriks Transformasi Komposit: Susun matriks transformasi komposit yang mencakup rotasi, skala, dan translasi dengan urutan berikut:

    • Rotasi sebesar \(30^\circ\) terhadap sumbu x, \(45^\circ\) terhadap sumbu y, dan \(60^\circ\) terhadap sumbu z.
    • Penskalaan objek dengan faktor 2.
    • Geser hasilnya sejauh \(t_x = 10\), \(t_y = 5\), dan \(t_z = -3\).

    Matriks transformasi komposit ini diperoleh dengan mengalikan matriks rotasi \(R_x(30^\circ)\), \(R_y(45^\circ)\), dan \(R_z(60^\circ)\), kemudian mengalikannya dengan matriks skala \(S(2)\), dan menambahkan vektor translasi.

  2. Penerapan Transformasi pada Titik 3D: Diberikan tiga titik awal dalam objek 3D dengan koordinat sebagai berikut:

    • Titik A: \((x, y, z) = (2, 3, 4)\)
    • Titik B: \((x, y, z) = (-1, 5, 2)\)
    • Titik C: \((x, y, z) = (4, -2, 3)\)

    Terapkan matriks transformasi komposit pada masing-masing titik untuk menentukan posisi baru dari setiap titik setelah transformasi.

  3. Interpretasi Hasil: Diskusikan hasil transformasi untuk setiap titik. Apa yang terjadi pada posisi titik-titik tersebut setelah rotasi, penskalaan, dan translasi? Bagaimana transformasi ini dapat membantu dalam memproyeksikan objek dalam ruang 3D untuk keperluan simulasi AR?

Petunjuk

  • Untuk rotasi \(30^\circ\), \(45^\circ\), dan \(60^\circ\), konversi sudut tersebut ke radian.
  • Kombinasikan matriks rotasi dan skala terlebih dahulu. Setelah mendapatkan koordinat baru hasil transformasi rotasi dan skala, tambahkan vektor translasi untuk mendapatkan posisi akhir setiap titik.
LS0tDQp0aXRsZTogIlNvYWwgVVRTIEdhbmppbCBUQSAyMy8yNCINCnN1YnRpdGxlOiAiQWxqYWJhciBMaW5lYXIiDQphdXRob3I6ICJCYWt0aSBTaXJlZ2FyLCBTLlNpLiwgTS5TYyINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZHNjaWVuY2VsYWJzL2ltYWdlcy9ibG9iL21hc3Rlci9Db3Zlcl9MaW5BLnBuZz9yYXc9dHJ1ZSIgd2lkdGg9IjMwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IiI+DQoNCg0KIyBTb2FsIDEgKENQTDAzLCA1MCUpIA0KDQpTZWJ1YWggcGVydXNhaGFhbiBwYWthbiB0ZXJuYWsgaW5naW4gbWVtcHJvZHVrc2kgcGFrYW4gZGVuZ2FuIGthbmR1bmdhbiBudXRyaXNpIHRlcnRlbnR1IHlhbmcgb3B0aW1hbCB1bnR1ayB0ZXJuYWsgbWVyZWthLiBNZXJla2EgbWVtaWxpa2kgdGlnYSBiYWhhbiBiYWt1IHV0YW1hOiANCg0KLSAqKkJhaGFuIEEgJChYXzEpJCoqLCANCi0gKipCYWhhbiBCICQoWF8yKSQqKiwgZGFuIA0KLSAqKkJhaGFuIEMgJChYXzMpJCoqLiANCg0KU2V0aWFwIGJhaGFuIGJha3UgbWVtaWxpa2kga2FuZHVuZ2FuIHByb3RlaW4sIHNlcmF0LCBkYW4gZW5lcmdpIHlhbmcgYmVyYmVkYSwgZGFuIHBlcnVzYWhhYW4gaW5naW4gbWVuZW50dWthbiBwcm9wb3JzaSBiYWhhbiBiYWt1IHlhbmcgdGVwYXQgYWdhciBtZW1lbnVoaSB0YXJnZXQgbnV0cmlzaSB5YW5nIGRpaW5naW5rYW4uDQoNCkRpYmVyaWthbiB0YXJnZXQgbnV0cmlzaSBwYWthbiB5YW5nIGhhcnVzIGRpcGVudWhpIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSAqKlRvdGFsIFByb3RlaW4qKjogMjQwIHVuaXQNCi0gKipUb3RhbCBTZXJhdCoqOiAxODAgdW5pdA0KLSAqKlRvdGFsIEVuZXJnaSoqOiAzMDAgdW5pdA0KDQpLYW5kdW5nYW4gbnV0cmlzaSBkYXJpIG1hc2luZy1tYXNpbmcgYmFoYW4gYmFrdSBwZXIgc2F0dWFuIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNCnwgTnV0cmlzaSAgIHwgQmFoYW4gQSAkKFhfMSkkIHwgQmFoYW4gQiAkKFhfMikkIHwgQmFoYW4gQyAkKFhfMykkIHwNCnwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwNCnwgKipQcm90ZWluKiogfCAzIHVuaXQgICAgICAgfCAyIHVuaXQgICAgICAgfCA0IHVuaXQgICAgICAgfA0KfCAqKlNlcmF0KiogICB8IDEgdW5pdCAgICAgICB8IDIgdW5pdCAgICAgICB8IDEgdW5pdCAgICAgICB8DQp8ICoqRW5lcmdpKiogIHwgNCB1bml0ICAgICAgIHwgMyB1bml0ICAgICAgIHwgMiB1bml0ICAgICAgIHwNCg0KIyMgVHVnYXMgQW5kYQ0KDQoxLiBUZW50dWthbiBiZXJhcGEgYmFueWFrIG1hc2luZy1tYXNpbmcgYmFoYW4gYmFrdSAkKFhfMSwgWF8yLCBYMykkIHlhbmcgZGlidXR1aGthbiB1bnR1ayBtZW1lbnVoaSB0YXJnZXQgbnV0cmlzaS4NCg0KMi4gU3VzdW4gc2lzdGVtIHBlcnNhbWFhbiBsaW5lYXIgYmVyZGFzYXJrYW4gdGFyZ2V0IG51dHJpc2ksIHlhaXR1Og0KDQogICAtIFByb3RlaW46ICQzWF8xICsgMlhfMiArIDRYXzMgPSAyNDAkDQogICAtIFNlcmF0OiAgJFhfMSArIDJYXzIgKyBYXzMgPSAxODAkDQogICAtIEVuZXJnaTogJDRYXzEgKyAzWF8yICsgMlhfMyA9IDMwMCQNCg0KMy4gU2VsZXNhaWthbiBzaXN0ZW0gcGVyc2FtYWFuIGluaSBtZW5nZ3VuYWthbiBtZXRvZGUgaW52ZXJzIG1hdHJpa3MgdW50dWsgbWVuZW11a2FuIG5pbGFpICRYXzEsIFhfMiQsIGRhbiAkWF8zJC4NCg0KNC4gSmVsYXNrYW4gaGFzaWwgeWFuZyBkaXBlcm9sZWggc2VjYXJhIHZpc3VhbCwga2h1c3VzbnlhIG1lbmdlbmFpIGJlcmFwYSBiYW55YWsgc2V0aWFwIGJhaGFuIGJha3UgeWFuZyBoYXJ1cyBkaWd1bmFrYW4gYWdhciBrYW5kdW5nYW4gbnV0cmlzaSBzZXN1YWkgZGVuZ2FuIHRhcmdldCB5YW5nIGRpdGVudHVrYW4uDQoNCiMjIFBldHVuanVrDQoNCi0gR3VuYWthbiBtZXRvZGUgaW52ZXJzIG1hdHJpa3MgdW50dWsgbWVueWVsZXNhaWthbiBzaXN0ZW0gcGVyc2FtYWFuIGxpbmVhciBkZW5nYW4gYmFudHVhbiBQeXRob24uIEppa2EgbWF0cmlrcyBrb2VmaXNpZW4gbWVtaWxpa2kgaW52ZXJzLCBtYWthIHNvbHVzaSBkYXBhdCBkaXRlbnR1a2FuIGRlbmdhbiBydW11cyAkWCA9IEFeey0xfUIkLCBkaSBtYW5hICRBJCBhZGFsYWggbWF0cmlrcyBrb2VmaXNpZW4sICRYJCBhZGFsYWggdmVrdG9yIHZhcmlhYmVsIHlhbmcgYWthbiBkaWNhcmksIGRhbiAkQiQgYWRhbGFoIHZla3RvciB0YXJnZXQgbnV0cmlzaS4NCg0KLSBWaXN1YWxpc2FzaWthbiBkYWVyYWggc29sdXNpIHNpc3RlbSBwZXJzYW1hYW4gZGlhdGFzIGRlbmdhbiBtZW5nZ3VuYWthbiBQeXRob24gZGFuIGd1bmFrYW4gbGlicmFyeSBwbG90bHkuDQoNCiMgU29hbCAyIChDUEwwMywgNTAlKSANCg0KU2VidWFoIHBlcnVzYWhhYW4gdGVrbm9sb2dpIEF1Z21lbnRlZCBSZWFsaXR5IChBUikgc2VkYW5nIG1lbWJ1YXQgc2ltdWxhc2kgcGVtZXRhYW4gb2JqZWsgZGFsYW0gcnVhbmcgdGlnYSBkaW1lbnNpLiBVbnR1ayBtZW5hbXBpbGthbiBvYmplayBkZW5nYW4gb3JpZW50YXNpIGRhbiBwb3Npc2kgeWFuZyBkaWluZ2lua2FuIGRhbGFtIHJ1YW5nIEFSLCBkaXBlcmx1a2FuIGJlYmVyYXBhIHRyYW5zZm9ybWFzaSBsaW5lYXIgM0QsIHRlcm1hc3VrIHJvdGFzaSwgcGVuc2thbGFhbiwgZGFuIHRyYW5zbGFzaS4NCg0KU2V0aWFwIHRpdGlrIGRhbGFtIG9iamVrIDNEIGRpcmVwcmVzZW50YXNpa2FuIHNlYmFnYWkgdmVrdG9yIHBvc2lzaSAkKHgsIHksIHopJCwgZGFuIHRyYW5zZm9ybWFzaSBkaWxha3VrYW4gbWVsYWx1aSBtYXRyaWtzIHRyYW5zZm9ybWFzaSBsaW5lYXIgJDMgXHRpbWVzIDMkIHVudHVrIHJvdGFzaSBkYW4gcGVuc2thbGFhbiwgc2VydGEgZGl0YW1iYWggdmVrdG9yIHRyYW5zbGFzaSB1bnR1ayBtZW5nZ2VzZXIgcG9zaXNpIG9iamVrLg0KDQojIyBUcmFuc2Zvcm1hc2kgeWFuZyBEaXRlcmFwa2FuDQoNCjEuICoqUm90YXNpKio6IFNldGlhcCB0aXRpayBkYWxhbSBvYmplayBkaXB1dGFyIHBhZGEgdGlnYSBzdW1idSAoeCwgeSwgZGFuIHopIGRlbmdhbiBzdWR1dCB0ZXJ0ZW50dS4gTWF0cmlrcyByb3Rhc2kgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCiAgIC0gUm90YXNpIHNla2l0YXIgc3VtYnUgeCBzZWJlc2FyIHN1ZHV0ICRcYWxwaGEkOg0KICAgICAkJA0KICAgICBSX3goXGFscGhhKSA9IFxiZWdpbntibWF0cml4fSAxICYgMCAmIDAgXFwgMCAmIFxjb3MoXGFscGhhKSAmIC1cc2luKFxhbHBoYSkgXFwgMCAmIFxzaW4oXGFscGhhKSAmIFxjb3MoXGFscGhhKSBcZW5ke2JtYXRyaXh9DQogICAgICQkDQogICAtIFJvdGFzaSBzZWtpdGFyIHN1bWJ1IHkgc2ViZXNhciBzdWR1dCAkXGJldGEkOg0KICAgICAkJA0KICAgICBSX3koXGJldGEpID0gXGJlZ2lue2JtYXRyaXh9IFxjb3MoXGJldGEpICYgMCAmIFxzaW4oXGJldGEpIFxcIDAgJiAxICYgMCBcXCAtXHNpbihcYmV0YSkgJiAwICYgXGNvcyhcYmV0YSkgXGVuZHtibWF0cml4fQ0KICAgICAkJA0KICAgLSBSb3Rhc2kgc2VraXRhciBzdW1idSB6IHNlYmVzYXIgc3VkdXQgJFxnYW1tYSQ6DQogICAgICQkDQogICAgIFJfeihcZ2FtbWEpID0gXGJlZ2lue2JtYXRyaXh9IFxjb3MoXGdhbW1hKSAmIC1cc2luKFxnYW1tYSkgJiAwIFxcIFxzaW4oXGdhbW1hKSAmIFxjb3MoXGdhbW1hKSAmIDAgXFwgMCAmIDAgJiAxIFxlbmR7Ym1hdHJpeH0NCiAgICAgJCQNCg0KMi4gKipQZW5za2FsYWFuKio6IFVudHVrIG1lbXBlcmJlc2FyIG9iamVrLCBkaWd1bmFrYW4gbWF0cmlrcyBza2FsYSBkZW5nYW4gZmFrdG9yIHNrYWxhICRzJDoNCiAgICQkDQogICBTKHMpID0gXGJlZ2lue2JtYXRyaXh9IHMgJiAwICYgMCBcXCAwICYgcyAmIDAgXFwgMCAmIDAgJiBzIFxlbmR7Ym1hdHJpeH0NCiAgICQkDQoNCjMuICoqVHJhbnNsYXNpKio6IFNldGVsYWggcm90YXNpIGRhbiBza2FsYSwgcG9zaXNpIG9iamVrIGRpZ2VzZXIgc2VqYXVoICR0X3gkLCAkdF95JCwgZGFuICR0X3okIHVudHVrIG1lbmdhdHVyIHBvc2lzaSBvYmplayBkYWxhbSBydWFuZyBBUi4NCg0KIyMgVHVnYXMgQW5kYQ0KDQoxLiAqKlN1c3VuIE1hdHJpa3MgVHJhbnNmb3JtYXNpIEtvbXBvc2l0Kio6IFN1c3VuIG1hdHJpa3MgdHJhbnNmb3JtYXNpIGtvbXBvc2l0IHlhbmcgbWVuY2FrdXAgcm90YXNpLCBza2FsYSwgZGFuIHRyYW5zbGFzaSBkZW5nYW4gdXJ1dGFuIGJlcmlrdXQ6DQoNCiAgIC0gUm90YXNpIHNlYmVzYXIgJDMwXlxjaXJjJCB0ZXJoYWRhcCBzdW1idSB4LCAkNDVeXGNpcmMkIHRlcmhhZGFwIHN1bWJ1IHksIGRhbiAkNjBeXGNpcmMkIHRlcmhhZGFwIHN1bWJ1IHouDQogICAtIFBlbnNrYWxhYW4gb2JqZWsgZGVuZ2FuIGZha3RvciAyLg0KICAgLSBHZXNlciBoYXNpbG55YSBzZWphdWggJHRfeCA9IDEwJCwgJHRfeSA9IDUkLCBkYW4gJHRfeiA9IC0zJC4NCg0KICAgTWF0cmlrcyB0cmFuc2Zvcm1hc2kga29tcG9zaXQgaW5pIGRpcGVyb2xlaCBkZW5nYW4gbWVuZ2FsaWthbiBtYXRyaWtzIHJvdGFzaSAkUl94KDMwXlxjaXJjKSQsICRSX3koNDVeXGNpcmMpJCwgZGFuICRSX3ooNjBeXGNpcmMpJCwga2VtdWRpYW4gbWVuZ2FsaWthbm55YSBkZW5nYW4gbWF0cmlrcyBza2FsYSAkUygyKSQsIGRhbiBtZW5hbWJhaGthbiB2ZWt0b3IgdHJhbnNsYXNpLg0KDQoyLiAqKlBlbmVyYXBhbiBUcmFuc2Zvcm1hc2kgcGFkYSBUaXRpayAzRCoqOiBEaWJlcmlrYW4gdGlnYSB0aXRpayBhd2FsIGRhbGFtIG9iamVrIDNEIGRlbmdhbiBrb29yZGluYXQgc2ViYWdhaSBiZXJpa3V0Og0KDQogICAtIFRpdGlrIEE6ICQoeCwgeSwgeikgPSAoMiwgMywgNCkkDQogICAtIFRpdGlrIEI6ICQoeCwgeSwgeikgPSAoLTEsIDUsIDIpJA0KICAgLSBUaXRpayBDOiAkKHgsIHksIHopID0gKDQsIC0yLCAzKSQNCg0KICAgVGVyYXBrYW4gbWF0cmlrcyB0cmFuc2Zvcm1hc2kga29tcG9zaXQgcGFkYSBtYXNpbmctbWFzaW5nIHRpdGlrIHVudHVrIG1lbmVudHVrYW4gcG9zaXNpIGJhcnUgZGFyaSBzZXRpYXAgdGl0aWsgc2V0ZWxhaCB0cmFuc2Zvcm1hc2kuDQoNCjMuICoqSW50ZXJwcmV0YXNpIEhhc2lsKio6IERpc2t1c2lrYW4gaGFzaWwgdHJhbnNmb3JtYXNpIHVudHVrIHNldGlhcCB0aXRpay4gQXBhIHlhbmcgdGVyamFkaSBwYWRhIHBvc2lzaSB0aXRpay10aXRpayB0ZXJzZWJ1dCBzZXRlbGFoIHJvdGFzaSwgcGVuc2thbGFhbiwgZGFuIHRyYW5zbGFzaT8gQmFnYWltYW5hIHRyYW5zZm9ybWFzaSBpbmkgZGFwYXQgbWVtYmFudHUgZGFsYW0gbWVtcHJveWVrc2lrYW4gb2JqZWsgZGFsYW0gcnVhbmcgM0QgdW50dWsga2VwZXJsdWFuIHNpbXVsYXNpIEFSPw0KDQojIyBQZXR1bmp1aw0KDQotIFVudHVrIHJvdGFzaSAkMzBeXGNpcmMkLCAkNDVeXGNpcmMkLCBkYW4gJDYwXlxjaXJjJCwga29udmVyc2kgc3VkdXQgdGVyc2VidXQga2UgcmFkaWFuLg0KLSBLb21iaW5hc2lrYW4gbWF0cmlrcyByb3Rhc2kgZGFuIHNrYWxhIHRlcmxlYmloIGRhaHVsdS4gU2V0ZWxhaCBtZW5kYXBhdGthbiBrb29yZGluYXQgYmFydSBoYXNpbCB0cmFuc2Zvcm1hc2kgcm90YXNpIGRhbiBza2FsYSwgdGFtYmFoa2FuIHZla3RvciB0cmFuc2xhc2kgdW50dWsgbWVuZGFwYXRrYW4gcG9zaXNpIGFraGlyIHNldGlhcCB0aXRpay4NCg==