|
 |
 |
Cg(±×·¡ÇÈ¿ë C)´Â ¿©·¯ Ç÷§Æû »ó¿¡¼ Ư¼ö È¿°úµé°ú ½Ç½Ã°£ ¿µÈ ǰÁúÀÇ ¿µ»óÀ» ºü¸£°Ô Á¦ÀÛÇϱâ À§ÇÑ ¿Ïº®ÇÑ ÇÁ·Î±×·¡¹Ö ȯ°æÀÌ´Ù.
»õ·Î¿î ¼öÁØÀÇ Ãß»óȸ¦ Á¦°øÇÔÀ¸·Î½á, Cg´Â °³¹ßÀÚµéÀÌ ±×·¡ÇÈ Çϵå¿þ¾îÀÇ ¾î¼Àºí¸® ¾ð¾î·Î ÇÁ·Î±×·¥ÇÒ ÇÊ¿ä ¾øÀÌ OpenGL, DirectX, Windows, Linux, Mac OS X ±×¸®°í Xbox °°Àº ÄÜ¼Ö Ç÷§ÆûµéÀ» Á»´õ Á÷Á¢ÀûÀÎ ¸ñÇ¥·Î »ïÀ» ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. Cg´Â ¿£ºñµð¾Æ¿Í ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ °øÁ¶·Î °³¹ßµÇ¾úÀ¸¸ç, ƯÈ÷ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â Cg¸¦ HLSLÀ̶ó´Â À̸§À¸·Î DirectX 9¿¡ Æ÷ÇÔ½ÃÄ×´Ù. ¶ÇÇÑ Cg´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ DirectX 9 HLSLÀº ¹°·Ð OpenGL API¿Íµµ ȣȯµÈ´Ù. 'Cg·Î ¹è¿ì´Â ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹Ö'Àº ÇöÀç ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ GPU ¾ÆÅ°ÅØÃ³¿¡¼ ±âº»°ú °í±Þ ±â¹ý µÑ ¸ðµÎ¸¦ ¾î¶»°Ô ±¸ÇöÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇÑ´Ù.
ÀÌ Ã¥ÀÌ ´Ù·ç´Â ÁÖ¿äÇÑ ÁÖÁ¦µé 3D º¯È¯ Á¤Á¡ ´ç ±×¸®°í Çȼ¿ ´ç Á¶¸í ½ºÅ°´× ±×¸®°í Ű-ÇÁ·¹ÀÓ º¸°£ ȯ°æ ¸ÅÇÎ ¹üÇÁ ¸ÅÇÎ ¾È°³ ¼º´É ÃÖÀûÈ Åõ¿µ ÅØ½ºÃ³¸µ Ä«Å÷ ¼ÎÀ̵ù ÇÕ¼º
"Cg´Â ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Çϵå¿þ¾îÀÇ »õ·Î¿î ¼¼´ëÀÇ ´É·ÂÀ» Ç® ¼ö ÀÖ´Â ¿¼èÀÌ´Ù. ÀÌ Ã¥Àº CgÀÇ ¿Ïº®ÇÑ ¼Ò°³¼ÀÌ°í °íǰÁúÀÇ ½Ç½Ã°£ ±×·¡ÇÈ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ¸ðµç »ç¶÷¿¡°Ô Çʵ¶¼°¡ µÉ °ÍÀÌ´Ù. 'ÃֽмÎÀÌ´õ ÇÁ·Î±×·¡¹Ö: DirectX 9 HLSL & CG Æ©Å丮¾ó'Àº ½Ç½Ã°£ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ Àü¿¡´Â ºÒ°¡´ÉÇÏ¿´´ø È¿°úµéÀ» Cg¸¦ »ç¿ëÇØ¼ Á¦ÀÛÇÒ ¼ö ÀÖµµ·Ï ¾Ë·ÁÁØ´Ù." - Larry Gritz, 「Advanced Renderman」(Morgan Kaufmann, 2000)ÀÇ ÀúÀÚ
"Áß¿äÇÏ°í ½Ã±â ÀûÀýÇÑ Ã¥ : Çȼ¿ ¼öÁØÀÇ ÀýÂ÷ÀûÀÎ ÅØ½ºÃ³µé(¾Ö´Ï¸ÞÀ̼ǵǴ ±¸¸§, ºÒ, ¹°, ÀýÂ÷ÀûÀÎ ¹æ¹ýÀÇ ¸ðµç °Í)ÀÌ ¸¶Ä§³» ¿µÈ ȸ鿡¼ µ¥½ºÅ©ÅéÀ¸·Î ¿Å°Ü¿Ô´Ù. C¿Í À¯»çÇÑ ¾ð¾î¸¦ ÅëÇØ¼ ÀÌ·¯ÇÑ °·ÂÇÑ °è»ê ´É·ÂÀ» Á¦¾îÇÏ´Â °ÍÀº ±×·¡ÇÈ ºÐ¾ß¸¦ Èï¹Ì·Î¿î »õ·Î¿î ½Ã´ë·Î ¾È³»ÇÏ´Â °ÍÀÌ´Ù." - Ken Perlin, ´º¿å ´ëÇÐ ±³¼ö
[ÀúÀÚ ¼Ò°³] Randima(Randy) Fernando´Â ¿£ºñµð¾Æ »çÀÇ °³¹ßÀÚ ±³À° Ã¥ÀÓÀÚÀ̰í, Mark J. Kilgard´Â ¿£ºñµð¾Æ »çÀÇ Ã¥ÀÓ ¼ÒÇÁÆ®¿þ¾î ±â¼úÀÚÀ̸ç 「OpenGL Programming for the X Window System」(Addison-Wesley, 1996)ÀÇ ÀúÀÚÀ̱⵵ ÇÏ´Ù. |
| |
 |
 |
Å丶½º ÄïÀÌ ÆÐ·¯´ÙÀÓÀ̶ó´Â ¿ë¾î¸¦ »ç¿ëÇÑ ÀÌÈÄ¿¡ ¿ì¸®´Â ÀÌ ¿ë¾î¸¦ »ó´çÈ÷ ¸¹ÀÌ »ç¿ëÇÏ´Â °Í °°´Ù. ±×·¡¼ ÆÐ·¯´ÙÀÓÀ̶ó´Â ¿ë¾î°¡ ¹«½¼ ¶æÀΰ¡¸¦ ÀÎÅͳݿ¡¼ »ìÆìº¸´Ù°¡ ¡®¾î¶² ÇÑ ½Ã´ë »ç¶÷µéÀÇ °ßÇØ³ª »ç°í¸¦ Áö¹èÇϰí ÀÖ´Â ÀÌ·ÐÀû ƲÀ̳ª °³³äÀÇ ÁýÇÕü¡¯¶ó´Â Á¤ÀǸ¦ º¸°Ô µÇ¾ú´Ù. ±×·¯¸é ½Ç½Ã°£ 3D ±×·¡ÇÈ ÇÁ·Î±×·¡¸ÓµéÀÇ ÆÐ·¯´ÙÀÓÀº ¹«¾ùÀΰ¡? ¾Æ¸¶µµ ÇöÀç±îÁö °¡Àå Å« ÆÐ·¯´ÙÀÓÀº ´Ù°¢Çü(Polygon)ÀÏ °ÍÀÌ´Ù. 3D ±×·¡ÇÈ °¡¼Ó±â¸¦ ÀÌ¿ëÇØ¼ ¿ì¸®´Â ´Ù°¢ÇüÀ» ±×¸°´Ù. 3D °ÔÀÓ¿¡ ³ª¿À´Â ¸ðµç °ÍÀÌ ´Ù°¢ÇüÀÌ´Ù. ¿ì¸®°¡ »ç¿ëÇÏ´Â ¸î¸î ¾Ë°í¸®ÁòµéÀº ´Ù°¢Çü¿¡¼¸¸ ÀÛµ¿Çϱ⵵ ÇÑ´Ù(±×¸²ÀÚ ÀÔü°¡ ´ëÇ¥ÀûÀÎ ¿¹´Ù). ±×·±µ¥ °³ÀÎÀûÀ¸·Î´Â ´Ù°¢Çüº¸´Ù ´õ 3D ±×·¡ÇÈ ÇÁ·Î±×·¡¸ÓµéÀÇ »ç°í¸¦ Á¦ÇÑÇϰí ÀÖ´ø °ÍÀº 3D ±×·¡ÇÈ °¡¼Ó±â ±× ÀÚü¿´´Ù°í º¸´Â °ÍÀÌ ¸Â´Â °Í °°´Ù. 3D ±×·¡ÇÈ °¡¼Ó±âÀÇ Á¦ÇÑ »çÇ×(ÀÌ¹Ì È¸·Î·Î ±¸¿öÁø ¾Ë°í¸®Áòµé)ÀÌ ½Ç½Ã°£ 3D ±×·¡ÇÈ ÇÁ·Î±×·¥ÀÇ Á¦ÇÑ »çÇ×À̾ú´Ù°í ÇØµµ °ú¾ðÀÌ ¾Æ´Ï¾ú´Ù.
¹«¾îÀÇ ¹ýÄ¢¿¡ µû¶ó¼ ±×·¡ÇÈ °¡¼Ó±âµµ ±× ¼º´ÉÀÌ Áõ´ëµÇ¾úÁö¸¸, ÇÁ·Î±×·¡¸ÓµéÀÇ ÆÐ·¯´ÙÀÓÀ» ¹Ù²ÙÁö´Â ¸øÇß´Ù. Çåµ¥ 2001³âµµ¿¡ ¿£ºñµð¾Æ »ç¿¡¼ Ãâ½ÃÇÑ ÇÑ ±×·¡ÇÈ °¡¼Ó±âÀÇ µîÀåÀ¸·Î ÇÁ·Î±×·¡¸ÓµéÀÇ ÆÐ·¯´ÙÀÓÀÌ ¹Ù²î±â ½ÃÀÛÇß´Ù. ±×°ÍÀº ¹Ù·Î ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ GPU¿´´Ù. ±× Àü±îÁö ¿ì¸®ÀÇ ¾Ë°í¸®ÁòÀº ±×·¡ÇÈ °¡¼Ó±âÀÇ È¸·Î À§ÀÇ ¾Ë°í¸®Áò¸¸À» µû¶ó°¥ ¼ö¹Û¿¡ ¾ø´Â 2DÀûÀΠƲ ¼Ó¿¡ ÀÖ¾ú°í ÇÁ·Î±×·¡¸ÓµéÀº ¾ÆÁÖ Á¦ÇÑÀûÀÎ ¹æ¹ýÀ¸·Î¸¸ »õ·Î¿î ¾Ë°í¸®ÁòµéÀ» Ç¥ÇöÇØº¼ ¼ö ÀÖ¾ú´Ù. ±×·±µ¥ ÀÌÁ¦ ±×·¡ÇÈ ÆÄÀÌÇÁ¶óÀο¡¼ ƯÁ¤ µÎ ºÎºÐµé¿¡ ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Ã³¸® ÀåÄ¡µéÀÇ µµÀÔÀ¸·Î ³¯°³¸¦ ¾ò¾î ÀÌÁ¦ °¡¼Ó±âÀÇ ÇѰ躸´Ù ÇÁ·Î±×·¡¸ÓµéÀÇ »ó»ó·Â¿¡ ÇѰ踦 ´õ¿í ´õ ½Å°æ ½á¾ß µÇ´Â ½ÃÁ¡ÀÌ µÇ°í¾ß ¸»¾Ò´Ù.
ÀÌ »õ·Î¿î ÆÐ·¯´ÙÀÓÀº °³¹ßÀÚÀÇ ´É·ÂÀÇ °ÝÂ÷¸¦ È®¿¬È÷ µå·¯³ª°Ô ÇÑ´Ù. Á¦ÇÑµÈ »çÇ׿¡¼´Â ¾Æ¹«¸® ¶Ù¾î³ »ç¶÷µµ ±× ´É·Â¿¡ Á¦ÇÑÀ» ¹Þ±â ¶§¹®¿¡ ±×¸©ÀÇ Å©±â¸¦ ¾Ë ¼ö ¾øÁö¸¸, ÀÌÁ¦´Â ¾Ë ¼ö ÀÖ´Â ½Ã´ë°¡ ¿Â °ÍÀÌ´Ù. °á±¹ ÀÌ »õ·Î¿î ÆÐ·¯´ÙÀÓ¿¡ »¡¸® ÀûÀÀÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù´Â °ÍÀÌ´Ù. óÀ½ ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹ÖÀÌ ¾î¼Àºí¸®¿´±â ¶§¹®¿¡ ÇнÀÀ» ÇÏ´Â µ¥ ¾î·Á¿òÀÌ ¸¹¾ÒÁö¸¸ ÀÌÁ¦ HLSL, Cg ±×¸®°í slangó·³ °í±Þ ¼ÎÀÌ´õ ¾ð¾îµéÀÌ µîÀåÇÏ¸é¼ ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹ÖÀÇ º¸±ÞÀÌ ´õ¿í °¡¼Óȵǰí ÀÖ´Ù. ½Ç½Ã°£ 3D ±×·¡ÇÈ ÇÁ·Î±×·¡¸Ó·Î ÀÏÇÏ´Â »ç¶÷À̳ª ±× ÀÏÀ» ÇÏ°í ½ÍÀº Áö¸Á»ýÀ̳ª ¼ÎÀÌ´õ ¾ð¾î¸¦ ÀÍÈ÷´Â °ÍÀÌ ÀÌÁ¦´Â ÇʼöÀûÀÎ »çÇ×ÀÎ °ÍÀ¸·Î »ý°¢µÈ´Ù.
Áö±Ý±îÁö ¿Ö Cg °°Àº ¼ÎÀÌ´õ ÇÁ·Î±×·¥À» ¹è¿ö¾ß Çϴ°¡¿¡ ´ëÇÑ ´çÀ§¼º Ãø¸é¿¡¼ °³ÀÎÀûÀÎ »ý°¢À» ÇÇ·ÂÇØº¸¾Ò´Ù. ÀÌÁ¦ ÀÌ Ã¥¿¡ ´ëÇØ¼ Àá½Ã À̾߱⸦ ÇÏÀÚ¸é, 1ÀåÀÇ Cg °³¹ß ¿ª»ç¿¡¼µµ ¾ð±ÞÀ» ÇϰÚÁö¸¸ Cg´Â ¿£ºñµð¾Æ¿Í ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ °øµ¿ ÀÛ¾÷ÀÇ »êÃâ¹°·Î ¿£ºñµð¾Æ´Â ±× »êÃâ¹°À» Cg¶ó°í À̸§À» Áö¾ú°í ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â HLSLÀ̶ó´Â À̸§À¸·Î DX9¿¡ Æ÷ÇÔ½ÃÄ×´Ù. ÀÌ Ã¥¿¡¼ 1Àå À̿ܿ¡ ³ª¿À´Â ¸ðµç Cg¶ó´Â ´Ü¾î¸¦ HLSL·Î ¹Ù²Ù¾îµµ ÀüÇô ¹®Á¦°¡ ¾øÀ¸¸ç Â÷ÀÌÁ¡ÀÌ ÀÖÀ» ¶§´Â ±× Â÷ÀÌÁ¡¿¡ ´ëÇØ¼ ¾ð±ÞÀ» ÇÏ¿´´Ù. ±×·±µ¥ Ã¥ÀÇ È帧À» ±úÁö ¾Êµµ·Ï Çϱâ À§Çؼ µÇµµ·Ï ¿ªÁÖ¸¦ ´Ù´Â ´ë½Å¿¡ º»¹®¿¡ ±× ³»¿ëµéÀ» »ðÀÔÇßÀ¸¸ç Cg ¾ð¾î°¡ Áö¿øÇÏÁö ¾Ê´Â Çȼ¿ ¼ÎÀÌ´õ 1.4¿¡ ´ëÇÑ ³»¿ëµµ Ãß°¡ÇÏ¿´°í Cg¿Í HLSLÀÇ Ç¥ÁØ ÇÔ¼ö¿¡ ¾à°£ÀÇ Â÷À̰¡ Àִµ¥ ±× ºÎºÐµµ Á¤È®ÇÏ°Ô ¸í½Ã¸¦ ÇØ³õ¾Ò´Ù.
±×¸®°í ¹ø¿ª¼°¡ ³ª¿À±â Àü±îÁö ¾Ë·ÁÁø ¿ø¼ÀÇ ¿À·ù¿¡ ´ëÇØ¼µµ ¸ðµÎ ¼öÁ¤Çؼ ¹ø¿ªÇÏ¿´´Ù. ÀÌ Ã¥Àº Àü¹ÝÀûÀ¸·Î ¿¹Á¦ Áß½ÉÀ¸·Î ¾ð¾î¿Í ±×·¡ÇÈ ¾Ë°í¸®ÁòÀ» µ¿½Ã¿¡ ¼³¸íÇϰí Àֱ⠶§¹®¿¡ ÇнÀ ½Ã Àϼ®ÀÌÁ¶ÀÇ È¿°ú°¡ ÀÖÀ¸¸ç, ¾Ë°í¸®Áò¿¡ ´ëÇÑ ¼³¸íÀÌ »ó´çÈ÷ Àß ¼³¸íµÇ¾ú°í(¹°·Ð ¸ðÀÚ¶õ ºÎºÐµé¿¡ ´ëÇØ¼´Â ¸¶Áö¸·¿¡ ¼Ò°³µÈ Âü°í ¹®ÇåµéÀ» Âü°íÇÏ¸é µÉ °ÍÀÌ´Ù) ¾ð¾î¿¡ ´ëÇÑ ¼³¸íµµ ±º´õ´õ±â°¡ ¾ø¾î¼, ¼ÎÀÌ´õ ¾ð¾î¸¦ ÀüÇô ¸ð¸£´Â »ç¶÷ÀÌ º¸±â¿¡µµ ÁÁ°í ÇÁ·Î±×·¡¸Ó°¡ ¾Æ´Ñ Cg¸¦ »ç¿ëÇØ¼ DCC¿¡¼ ÀڽŸ¸ÀÇ ¼ÎÀÌ´õ¸¦ ¸¸µé¾îº¸°í ½ÍÀº ±×·¡ÇÈ µðÀÚÀ̳ʿ¡°Ôµµ À¯¿ëÇÑ Ã¥ÀÌ µÉ °Í °°´Ù. |
| |
 |
 |
ÀÌ Ã¥¿¡ ÀÖ´Â »ùÇà ÇÁ·Î±×·¥µéÀ» ±¸µ¿Çϱâ À§ÇØ ÇÊ¿ä·Î ÇÏ´Â ÅøµéÀÌ ¼ö·Ï
|
| |
 |
 |
| "Á¤º¸¹®È»ç-°ÔÀÓ ÇÁ·Î±×·¡¹Ö" °ü·Ãµµ¼´Â ÃÑ 38±Ç ÀÔ´Ï´Ù. |
|
- Game Programming Gems 5
|
|
- OpenGL Super Bible Á¦3ÆÇ
|
|
- AI Game Programming Wisdom 2
|
|
- Game Programming Gems 4
|
|
- OpenGL ÇÁ·Î±×·¡¹Ö °¡À̵å : OpenGL 1.4 °ø½Ä ÇнÀ °¡À̵å Á¦4ÆÇ
|
|
- OpenGL Extensions Guide
|
|
- ShaderX©÷ : DirectX 9 ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹Ö ÆÁ & Æ®¸¯
|
|
- °ÔÀÓ ÇÁ·Î±×·¡¹ÖÀÇ ÇÙ½É ¹ýÄ¢
|
|
- ShaderX©÷ : DirectX 9 ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹Ö
|
|
- DirectX 9¸¦ ÀÌ¿ëÇÑ Àü·« °ÔÀÓ ÇÁ·Î±×·¡¹Ö
|
|
- 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö & ÄÄÇ»ÅÍ ±×·¡ÇÈÀ» À§ÇÑ ¼öÇÐ Á¦2ÆÇ
|
|
- C++¿Í DirectX 9¸¦ ÀÌ¿ëÇÑ ½Ç½Ã°£ 3D ÁöÇü ¿£Áø
|
|
- ½±°Ô Ç®¾î ¾´ ÀΰøÁö´É(AI) °ÔÀÓ ÇÁ·Î±×·¡¹Ö
|
|
- Cg·Î ¹è¿ì´Â ¼ÎÀÌ´õ ÇÁ·Î±×·¡¹Ö
|
|
- DirectX 9¸¦ ÀÌ¿ëÇÑ 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö ÀÔ¹®
|
|
- °ÔÀÓ ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ C++
|
|
- ÃÖ°íÀÇ Àü¹®°¡µé¿¡°Ô ¹è¿ì´Â ¿Â¶óÀÎ °ÔÀÓ °³¹ß Å×Å©´Ð
|
|
- Game Coding Complete
|
|
- °ÔÀÓ ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ ÀڷᱸÁ¶¿Í ¾Ë°í¸®Áò
|
|
- Real-Time Rendering 2ÆÇ
|
|
- ¿Â¶óÀÎ °ÔÀÓ ±âȹ & ÀÎÅÍ·¢Æ¼ºñƼ
|
|
- °ÔÀÓ ¼Ó ¹«ÇÑ ¿ìÁÖ : ·¹º§ µðÀÚÀÎ, ÁöÇü ±×¸®°í »ç¿îµå
|
|
- Direct3D ShaderX Á¤Á¡ & Çȼ¿ ¼ÎÀÌ´õ ÆÁ°ú Æ®¸¯
|
|
- °ÔÀÓ °³¹ß ÇÁ·ÎÁ§Æ®¸¦ ¼º°øÀ¸·Î À̲ô´Â °ÔÀÓ ±âȹ & µðÀÚÀÎ
|
|
- Ãʺ¸ÀÚ¸¦ À§ÇÑ °ÔÀÓ ÇÁ·Î±×·¡¹Ö
|
|
- DirectX ºñÁÖ¾ó º£ÀÌÁ÷ °ÔÀÓ ÇÁ·Î±×·¡¹Ö
|
|
- Game Programming Gems 3
|
|
- AI Game Programming Wisdom
|
|
- DirectX ½Ç½Ã°£ ·»´õ¸µ ½ÇÀü Å×Å©´Ð
|
|
- 3D ij¸¯ÅÍ ¾Ö´Ï¸ÞÀÌ¼Ç ÇÁ·Î±×·¡¹Ö
|
|
- °ÔÀÓ ÇÁ·Î±×·¡¸Ó¿¡°Ô ¹è¿ì´Â °ÔÀÓ °³¹ß Å×Å©´Ð
|
|
- 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö & ÄÄÇ»ÅÍ ±×·¡ÇÈÀ» À§ÇÑ ¼öÇÐ
|
|
- DIRECTX 8.x¸¦ ÀÌ¿ëÇÑ 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö
|
|
- ·Î¿ì Æú¸®°ï Å×Å©´ÐÀ» Ȱ¿ëÇÑ °ÔÀÓ ¸ðµ¨¸µ
|
|
- °ÔÀÓ °³¹ß ¼öÇÐÀû Å×Å©´Ð
|
|
- Game Programming Gems 2
|
|
- OpenGL Game Programming
|
|
- °ÔÀÓ µðÀÚÀÎ À̷аú ½ÇÁ¦
|
| |
|
|
 |