0"""333DDDUUUfffwwwˆˆˆ™™™ªªª»»»ÌÌÌÝÝÝîîîÿÿÿ 0ÿÿÿÿÿÿÿÿ2Tv˜ºÜþïÍ«‰gE#2Tv˜ºÜþ2Tv˜ºÜþ ÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÀ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌÀ¬ÀÀÀ¬ÀÀÀ¬ÀÀÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÌ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌ̬ÀÀÀ¬ÀÀÀ¬ÀÀ¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî >À?îîîîîîîž™™™™™™™™™™™™™™™IDÌÌÌÌÌÌÌÌÌÌÌÌÌiffffffff63333CDDDDDîîîîîîî™™™™™™™™™™™™™™™™IDÌÌÌÌÌÌÌÌÌÌÌ™™iffffffff6333333CDDDîîîîîîî™™™™™™™™™™™™™™™™II ÀÌÌÌÌÌÌÌ™™™™iffffffff633333333DDîîîîîîž™™™™™™™™™™™™™™™™™DÀÌÌÌÌÌÌ™™™™™iffffffff6333333333Cîîîîîî™™™™™™™™™™™™™™™™™IDÀÌÌÌÌœ™™™™™™iffffffff63333333333îîîîîî™™™™™™™™™™™™™™™™™DD@DÀÌÌœ™™™™™™™iffffffff63333333333îîîîîž™™™™™™™™™™™™™™™™IDDDDDÌœ™™™™™™™™iffffffff63333333333îîîîîž™™™™™™™™™™™™™™™™DDDDDDœ™™™™™™™™™iffffffff63333333333îîîîî™™™™™™™™™™™™™™™™™DDDDDD@À™™™™™™™™™™i™fffffff6333333333îîîîî™™™™™™™™™™™™™™™™IDDDDDDDÌ™™™™™™™™™™™™fffffff633333333îîîîž™™™™™™™™™™™™™™™™DDDDDDDDÌÌ™™™™™™™™™™™™fffffff633333333îîîîž™™™™™™™™™™™™™™™IDDDDDDDDDÀÌÌÉœ™™™™™™™™™™fffffff633333333îîîî™™™™™™™™™™™™™™™™IDDDDDDDDDDÀÌÌÌÌœ™™™™™™™™™™fffffff633333333îîîî™™™™™™™™™™™™™™™™DDDDDDDDDDDÌÌÌÌÌœ™™™™™™™™™™fffffff633333333îîîž™™™™™™™™™™™™™™™IDDDDDDDDDDD@ÀÌÌÌÌÌœ™™™™™™™™™™fffffff633333333îîîž™™™™™™™™™™™™™™™IDDDDDDDDDDDDÀÌÌÌÌÌÌœ™™™™™™™™™™fffffff633333333îîî™™™™™™™™™™™™™™™™DDDDDDDDDDDDDÌÌÌÌÌÌÌœ™™™™™™™™™™fffffff633333333DNä™™™™™™™™™™™™™™™IDDDDDDDDDDDDDDÀÌÌÌÌÌÌ̜̙™™™™™™™™fffffff63333333DD”™™™™™™™™™™™™™™™IDDDDDDDDDDDDDDDÌÌÌÌÌÌÌÌÌÌ™™™™™™™™™fffffff63333333DD”™™™™™™™™™™™™™™™DDDDDDDDDDDDDDDDÀÌÌÌÌÌÌÌÌÌÌ™™™™™™™™™fffffff63333333DDžîéžî™™™™™™™™™™™DDDDDDDDDDDDDDDD@ÏÌÌÌÌÌÌÌÌÌÌÉœ™™™™™™™fffffff63333333DDîîîîî™™™™™™™™™™IDDDDDDDDDDDDDDDDôÏÌÌÌÌÌÌÌÌÌÌÌœ™™™™™™™fffffff63333333DDîîîîî™™™™™™™™™™DDDDDDDDDDDDDDDDDÿÏÌÌÌÌÌÌÌÌÌÌÌœ™™™™™™™fffffff63333333Däîîîîîéžî™™™™™™™DDDDDDDDDDDDDDDDôÿÏÿüÏÌÌÌÌÌÌÌÌœ™™™™™™™–ifffff6333333Däîîîîîîîî™™™™™™IDDDDDDDDDDDDDDDDÿÿÿÿÿÏÌÌÌÌÌÌÌÌœ™™™™™™™™ifffff633333Dîîîîîîîîî™™™™™™IDDDDDDDDDDDDDDDDÿÿÿÿÿÏÌÌÌÌÌÌÌÌœ™™™™™™™™ifffff633333Dîîîîîîîîîéžîéž™DDDDDDDDDDDDDDDDôÿÿÿÿÿÏÿÌÌÌÌÌÌ̜̙™™™™™™ifffff633333Dîîîîîîîîîîîîîž™DDDDDDDDDDDDDDDDÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌ™™™™™™™IDDDDD$"3333äîîîîîîîîîîîîîžIDDDDDDDDDDDDDDDôÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌ™™™™™ifFDDDDD$"""33äîîîîîîîîîîîî„HˆDDDDDDDDDDDDôÿÿÿÿÿÿÿÿüÏÌÌÌÌÌÌÌÉœ™™fffFDDDDD$""""2äîîîîîîîîîîîîîˆˆDDDDDDDDDDDDÿÿÿÿÿÿÿÿÿÿÏÌÌÌÌÌÌÌÌœiffffFDDDDD$"""""îîîîîîîîîîîîîîˆˆDDDDDDDDDDDôÿÿÿÿÿÿÿÿÿÿÏÌÌÌÌÌÌÌÌlfffffFDDDDD$"""""îîîîîîîîîîîîîîˆˆ„HˆDDDDDDDDôÿÿÿÿÿÿÿÿÿÿÏÿÌÌÌÌÌÌŒhfffffFDDDD$"""""îîîîîîîîîîîîîˆˆˆˆˆˆDDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌÌ̈hfffffFDDDD""""""îîîîîîîîîîîîîˆˆˆˆˆˆDDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌ̈ˆhfffffFDDDD""""""îîîîîîîîîîîîîˆˆˆˆˆˆ„Hˆ„HDDôÿÿÿÿÿÿÿÿÿÿÿÿÿüÏÌÌŒˆˆhˆffffFfDDD""""""îîîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆHDDôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÌ̈ˆˆˆˆffffffDDD""""""îîîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆHDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÌŒˆˆˆˆˆffffffDDD""""""îîîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆHˆ„òÿÿÿÿÿÿÿÿÿÿÿÿÿÿϯˆˆˆˆˆˆffffffDDD"""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ(òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªˆˆˆˆˆˆffffffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ(òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªˆˆˆˆˆˆffffffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ"ò"/ò"ÿÿÿÿÿÿÿÿÿÿ¯ª¨Šˆˆˆˆ†hffffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ""""""ÿÿÿÿÿÿÿÿÿÿªªªŠˆˆˆˆˆhffffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""ÿÿÿÿÿÿÿÿÿ¯ªªªŠˆˆˆˆˆhffffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""/ò"ÿÿÿÿÿÿªªªªŠª¨ŠˆˆhˆfffDDD""""îîîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ("""""""""ÿÿÿÿÿÿªªªªªªªŠˆˆˆˆfffDDD""""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ""""""""""ÿÿÿÿÿ¯ªªªªªªªŠˆˆˆˆfffDDD""""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ""""""""""/ò"/òªªªªªªªªŠªˆˆˆfffDDD"""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆˆ""""""""""""""òªªªªªªªªªªˆˆˆfffDDD"""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""""""""""¢ªªªªªªªªªªˆˆˆfffDDD"""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""""""""""¢Ìʬªªªªªªª¨Šˆ†hfdFD"""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""""""""""ÌÌ̬ªªªªªªªªŠˆˆhffFD"""îîîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ(""""""""""""""ÌÌ̬ªªªªªªªªŠˆˆhffFD"""3îîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ"""""""""""""""ÌÌ̬Ìʬ̪ªªªŠªˆhˆfFD""3îîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ""""""""""""""ÂÌÌÌÌÌÌÌ̪ªªªªªˆˆˆfFD"3îîîîîîîîîîˆˆˆˆˆˆˆˆˆˆˆˆ""""""""""""""ÂÌÌÌÌÌÌÌ̪ªªªªªˆˆˆ3#"3>ã3>ã3>ã3>ãÌÈŒÌÈŒÌÈŒˆˆˆˆˆ""""""""""""""ÌÌÌÌÌÌÌÌÌʬ̪ªª¨JD3#"33333333333ÃÌÌÌÌÌÌÌÌŒˆˆˆˆˆ""""""""""""""ÌÌÌÌÌÌÌÌÌÌÌ̪ªªªED3#"33333333333ÃÌÌÌÌÌÌÌÌŒˆˆˆˆˆ""""""""""""""ÌÌÌÌÌÌÌÌÌÌÌ̪ªªZED3#"33333333333ÃÌÌÌÌÌÌÌÌŒÌÈŒÌX%UR%UR%UR%UR%UÌÌÌÌÌÌÌÌÌÌÌÌʬÌeFUC$"33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåÌÌÌÌÌÌÌÌÌÌÌÌÌÌlfVUD$"33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåÌÌÌÌÌÌÌÌÌÌÌÌÌÌffVUD$"33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåìÎîìÎîìÎîìÎîìÎwvWwä.î33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîîîîîîîîîwwwwîîî33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîîîîîîîî~wwwwîîî33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîîîîîîîpˆ—yªîîîàîàîÀ 33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîîîîîî™©ªîîîîîîîîîÌ 33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîîîîîî™©ªîîîîîîîîîÌ 33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîîàà€™™©»îîîîîîîîîÌ ÌÀ ÌÀ Ì33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîî�™™¹»îîîîîîîîîÌÌÌÌÌÌÌÌÌ33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîîîîî�™™¹»îîîîîîîîîÌÌÌÌÌÌÌÌÌ33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåîîà" ’™©º»ÎìÝîîîîîîÌÌÌÌÌÌÌÌÌÀ ÌÀ ª  33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåî ""’™ªº»ÌÜÝîîîîîîÌÌÌÌÌÌÌÌÌÌÌÌÌ̪ª 33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUUUUåî """™ªº»ÌÜÝîîîîîÎÌÌÌÌÌÌÌÌÌÌÌÌÌ̪ª 33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUUUˆ…X """"ªªº»ÌÜÝÞíîîîÎÌÌÌÌÌÌÌÌÌÌÌÌÌ̪ª ª  ª  ª33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUU…ˆˆˆ""""Bªªº»ÌÜÝÝíîîîÎÌÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªª33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUUUUUU…ˆˆˆ""""B¤ªº»ÌÜÝÝíîîîÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªª33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ\UUUUˆ…Xˆ…ˆˆˆˆˆ"""""BDªº»ÌÜÌÝíÝÞÍÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªª  ª€ˆ€33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌUUU…ˆˆˆˆˆˆˆˆˆˆ """""BD¤º»ÌÌÌÝÝÝÝÊÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªŠˆˆˆ33333333333ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌUUU…ˆˆˆˆˆˆˆˆˆˆ """""BDDº»ÌÌÌÝÝÝ­ÊÌÌÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªŠˆˆˆ333333333333ÌÌÌÌÌÌÌÌÌÌÌÌÌ Xˆ…ˆˆˆˆˆˆˆˆˆˆˆ" """""BDDd¶»ÌÌÌÍÜݪʪÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªŠˆˆˆˆ€ˆ€ˆ333333333333ÌÌÌÌÌÌÌÌÌÌÌÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆ """""""DDDfffÌÌÌ̬ªªªªÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆ333333333333ÌÌÌÌÌÌÌÌÌÌÌÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆ """""""DDDfffˆˆˆˆ¨ªªªªÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆ333333333333ÌÌÌÌÌÌÌ À Àˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ """""""DDDDfffh†ˆˆ¨ªªªª¬ÊªÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆ€f`f`333333333333ÌÌÌÌÌÌÌ€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ"""""""BDDDDffff†ˆˆ¨ªªªªªªªÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffff333333333333ÌÌÌÌÌÌÌ€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ"""""""BDDDDffff†ˆˆ¨ªªªªªªªÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffff333333333333à À À€ˆˆˆˆˆˆˆˆˆˆˆˆˆ¸ """"""""BDDDDffff†ˆˆ¨ˆªªªªªª¬ÊªÌÌÌÌÌ̪ªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffff`f`f333333333333Àˆˆˆˆˆˆˆˆˆˆˆˆˆ»+""""""""BDDDDffff†ˆˆˆˆªªªªªªªªªÌÌÌÌÌ̪ªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffffffffff333333333333Ȉˆˆˆˆˆˆˆˆˆˆˆ»»""""""""BDDDDffff†ˆˆˆˆªªªªªªªªªÌÌÌÌ̬ªªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffffffffff333333333ˆƒ8ˆˆˆˆˆˆˆˆˆˆˆˆ»»»"""""""BDDDDDffff†ˆˆˆˆªªªªªªªªª¬ÊÌÌ̬ªªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffff33333333ƒˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¸»»»+""""""DDDDDDffff†ˆˆˆˆªªªªªªªªªªÊÌÌ̪ªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffff33333333ƒˆˆˆˆ€ˆˆˆˆˆˆˆˆˆˆ¸»»»»""""""DDDDDDffff†ˆˆˆˆªªªªªªªªªªÊÌ̬ªªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffff333ˆƒ8ˆƒˆˆˆˆˆ€ˆˆˆˆˆˆˆˆ»¸»»»»»"""""DDDDDDfffff†ˆˆˆˆŠ¨ªªªªªªªªÊª¬ªªªªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffff33ƒˆˆˆˆˆˆˆˆˆˆ€ˆˆˆˆˆˆˆ¸»»»»»»»+"""BDDDDDdfffff†ˆˆˆˆˆ¨ªªªªªªªªªªª§ªªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffff33ƒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¸»»»»»»»»"""BDDDDDdfffff†ˆˆˆˆˆ¨ªªªªªªªªªªz§ªªªªªªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffffˆƒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¸»»»»»»»»»+""BDDDDDdfffff†ˆˆˆˆˆ¨ˆªªªªªªªªªw§wªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆ€ˆˆˆˆˆ»»»»»»»»»»»""BDDDDDdfffff†ˆˆˆˆˆˆˆªªªªªªªªzwwwªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆhfffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆ€ˆˆˆˆˆ»»»»»»»»»»»""BDDDDDdfffff†ˆˆˆˆˆˆˆªªªªªªªªwwwwªªªªªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆhfffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¸‹»»»»»»»»»»»»+BDDDDDDdfffff†ˆˆˆˆˆˆˆªªªªªªªzwwwwz§wªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆhfffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»NDDDDDDdfffff†ˆˆˆˆˆˆˆªªªªªªªwwwwwwwwªªªªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆhfffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆ€ˆ»»»»»»»»»»»»»»»îDDDDDDdfffff†ˆˆˆˆˆˆˆªªªªªªzwwwwwwwwªªªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆ€»»»»»»»»»»»»»»»îîNDDDDDdfffff†ˆˆˆˆˆˆˆŠ¨ªªªªwwwwwwwwwz§ªªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@»»»»»»»»»»»»»»ëîîîDDDDDdfffff†ˆˆˆˆˆˆˆˆ¨ªªªzwwwwwwwwww§ªªªªªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@»»»»»»»»»»»»»»ëîîîîDDDDdfffff†ˆˆˆˆˆˆˆˆ¨ªªzwwwwwwwwwww§ªªªªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@D´»»»»»»»»»»»»»ëîîîîNDDdffffff†fˆˆˆˆˆˆˆ¨ˆªwwwwwwwwwwww§wz§ªªªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDD´»»»»»»»»»»»»»ëîîîîîNDfffffffffˆˆˆˆˆˆˆˆˆwwwwwwwwwwwwwwww§ªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffffff€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDD»»»»»»»»»»»»»ëîîîîîîNfffffffffˆˆˆˆˆˆˆˆDwwwwwwwwwwwwwwww§ªªŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆffffffffffffffF€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDD´»»»»»»»»»»»ëîîîîîîîîffffffffˆˆˆˆˆˆHDDwwwwwwwwwwwwwwww§wªˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffF€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDD´»»»»»»»»»»»îîîîîîîîîaffffffˆˆˆˆˆDDDDwwwwwwwwwwwwwwwwwwŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffFˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDDD»»»»»»»»»»»îîîîîîîîîaffffˆˆˆDDDDDDwwwwwwwwwwwwwwwwwwŠˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffDˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDDDD´»»»»»»»»»îîîîîîîîîîDDDDDDDDDGtwwwwwwwwwwwwwwwwH„DˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffffffDˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDD»»»»»»»»ëîîîîîîîîîîDDDDDDDDDDtwwwwwwwwwwwwwwwGDDDˆˆˆˆˆˆˆˆˆˆˆˆˆfffffffffffffffD€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDD´»»»»»»»ëîîîîîîîîîîDDDDDDDDDDtwwwwwwwwwwwwwwwDDDDˆˆˆˆˆˆˆˆˆˆˆˆhffffffffffffffFD€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆD@DDDDDDDDDD´»»»»»»»ëîîîîîîîîîîDDDDDDDDDDtDwwwwwwwwwwwwwGDDDDH„ˆˆˆˆˆˆˆˆˆˆhffffffffffffffFDˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDDDDDD»»»»»»»ëîîîîîîîîîîDDDDDDDDDDDDwwwwwwwwwwwwwGDDDDD„ˆˆˆˆˆˆˆˆˆˆfffffffffffffffDDˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDDDDDD´»»»»»»ëîîîîîîîîîîDDDDDDDDDDDDwwwwwwwwwwwwwDDDDDD„ˆˆˆˆˆˆˆˆˆhfffffffffffffffDDˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ@DDDDDDDDDDDDDDD»»»»»ëîîîîîîîîîîDDDDDDDDDDDDwwwwwwwwwwwwGDDDDDD„DH„ˆˆˆˆˆˆhfffffffffffffffDD€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDDDDDDDDDDDD´»»»»îîîîîîîîîîDDDDDDDDDDDDwwwwwwwwwwwwDDDDDDDDDD„ˆˆˆˆˆˆfffffffffffffffFDD€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDDDDDDDDDDDDD»»»»îîîîîîîîîîDDDDDDDDDDDDwwwwwwwwwwwGDDDDDDDDDD„ˆˆˆˆˆˆfffffffffffffffFDDˆˆˆˆˆˆˆˆˆˆˆˆˆØ�MDDDDDDDDDDDDDDDDD´»»îîîîîîîîîîîDDDDDDDDDDDDGtwwwwwwwwwDDDDDDDDDDD„DˆˆˆˆhfffffffffffffffDDDˆˆˆˆˆˆˆˆˆˆˆˆˆÝÝÝDDDDDDDDDDDDDDDDDD»ëîîîîîîîîîîîDDDDDDDDDDDDDtwwwwwwwwGDDDDDDDDDDDDDˆˆˆˆhfffffffffffffffDDD€ˆˆˆˆˆˆˆˆˆˆˆˆÝÝÝMDDDDDDDDDDDDDDDDD´ëîîîîîîîîîîîDDDDDDDDDDDDDtwwwwwwwGDDDDDDDDDDDDDDˆˆˆˆfffffffffffffffFDDD€ˆˆˆˆˆˆˆˆˆˆˆÝÝÝÝMDDDDDDDDDDDDDDDDDDäîîîîîîîîîîîDDDDDDDDDDDDDtwwwwwwwDDDDDDDDDDDDDDDH„DhfffffffffffffffFDDDˆˆˆˆˆˆˆˆˆˆØÝÝÝÝÝDDDDDDDDDDDDDDDDDD„îîîîîîîîîîîDDDDDDDDDDDDDtwwwwwwGDDDDDDDDDDDDDDDDDDhfffffffffffffffDDDDˆˆˆˆˆˆˆˆˆˆØÝÝÝÝÝMDDDDDDDDDDDDDDDDD„èîîîîîîîîîîDDDDDDDDDDDDDtwwwwwwDDDDDDDDDDDDDDDDDDDffffffffffffffffDDDD€ˆˆˆˆˆˆˆÝØÝÝÝÝÝÝMDDDDDDDDDDDDDDDD„ˆˆèîîîîîîîîîADDDDDDDDDDDtDwwwwDDDDDDDDDDDDDDDDDDDafffffffffffffFDDDD€ˆˆˆˆˆˆØÝÝÝÝÝÝÝÝÝDDDDDDDDDDDDDDDDˆˆˆˆîîîîîîîîîADDDDDDDDDDDDDwwwGDDDDDDDDDDDDDDDDDDDafffffffffffffFDDDDˆˆˆˆˆˆØÝÝÝÝÝÝÝÝÝMDDDDDDDDDDDDDDDˆˆˆˆˆîîîîîîîîADDDDDDDDDDDDDwwGDDDDDDDDDDDDDDDDDDDDafffffffffffffDDDDDˆˆˆˆˆØÝÝÝÝÝÝÝÝÝÝÝDDDDDDDDDDDDDDˆˆˆˆˆˆèîîîîîîADDDDDDDDDDDDDGtDDDDDDDDDDDDDDDDDDDDaaffffffffffDDDDD€ˆˆˆˆÝÝÝÝÝÝÝÝÝÝÝÝDDDDDDDDDDDDD„ˆˆˆˆˆˆˆèîîîîîADDDDDDDDDDDDDD@DDDDDDDDDDDDDDDDDDDDafffffffffFDDDDD€ˆˆˆˆÝÝÝÝÝÝÝÝÝÝÝÝMDDDDDDDDDDDD„ˆˆˆˆˆˆˆˆèîîîîADDDDDDDDDDDDD@DDDDDDDDDDDDDDDDDDDafffffffffFDDDDDˆˆˆÝÝÝÝÝÝÝÝÝÝÝÝÝÝDDDDDDDDDDDD„ˆˆˆˆˆˆˆˆˆèîîîADDDDDDDDDDDD@DDDDDDDDDDDDDDDDDDDaffffffffDDDDDDˆˆØÝÝÝÝÝÝÝÝÝÝÝÝÝÝMDDDDDDDDDDD„ˆˆˆˆˆˆˆˆˆˆèîîADDDDDDDDDDD@DDDDDDDDDDDDDDDDDDDffffffffDDDDDD€ˆØÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝDDDDDDDDDDD„ˆˆˆˆˆˆˆˆˆˆˆˆîADDDDDDDDD@DDDDDDDDDDDDDDDDDDfffffffFDDDDDDˆØÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝMDDDDDDDDDD„ˆˆˆˆˆˆˆˆˆˆˆˆˆADDDDDDDD@DDDDDDDDDDDDDDDDDDfffffffDDDDDDDˆˆÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝDDDDDDDDDDDˆˆˆˆˆˆˆˆˆˆˆˆˆÈÌDDDDDDDDDDDDDDDDDDDDDDDaffffffDDDDDDDh-- title: pow circle -- author: quadtrip -- desc: circle effect -- script: lua -- Global configurations local GRID_SIZE = 7 local PARTICLE_SIZE = 10 local RAY_START = { x = 120, y = 68 } local RAY_DIR = { x = 1, y = -0.5 } local BRIGHTNESS_DECAY = 0.001 local interpolationSpeed = 0.01 -- Particle class local Particle = {} Particle.__index = Particle function Particle.new(x, y) local self = setmetatable({}, Particle) self.x = x self.y = y self.brightness = 0 return self end function Particle:intersect(ray_start, ray_dir) local tmin = (self.x - ray_start.x) / ray_dir.x local tmax = (self.x + PARTICLE_SIZE - ray_start.x) / ray_dir.x if ray_dir.x < 0 then tmin, tmax = tmax, tmin end local tymin = (self.y - ray_start.y) / ray_dir.y local tymax = (self.y + PARTICLE_SIZE - ray_start.y) / ray_dir.y if ray_dir.y < 0 then tymin, tymax = tymax, tymin end if (tmin > tymax) or (tymin > tmax) then return false end if (tmin < 0 and tmax < 0) or (tymin < 0 and tymax < 0) then return false end self.brightness = 1.0 return true end function math.clamp(low, n, high) return math.min(math.max(n, low), high) end function Particle:draw() local color = math.floor(math.clamp(self.brightness,0,1) * 15) circ(self.x+1, self.y+1, PARTICLE_SIZE/2, color) end function Particle:update() self.brightness = self.brightness - BRIGHTNESS_DECAY if self.brightness < 0 then self.brightness = 0 end end -- Setup initial particles local particles = {} for i = 0, (240 // GRID_SIZE) - 1 do for j = 0, (136 // GRID_SIZE) - 1 do table.insert(particles, Particle.new(i * GRID_SIZE, j * GRID_SIZE)) end end --for i=0,47 do poke(0x3fc0+i,i*5) end local currentPalette = {} local targetPalette = {} local t = 0 -- progression variable, ranges from 0 to 1 -- Extract RGB values from palette string function extractRGB(paletteString) local colors = {} for i=1, #paletteString, 6 do local color = string.sub(paletteString, i, i+5) table.insert(colors, color) end return colors end -- LERP function lerp(a, b, t) return math.floor(a + (b - a) * t + 0.5) -- This rounds instead of truncates end -- Example palettes local palettes = { "000000111111222222333333444444555555666666777777888888999999aaaaaabbbbbbccccccddddddeeeeeeffffff", "0000001d2b537e255383769cab5236008751ff004d5f574fff77a8ffa300c2c3c700e436ffccaa29adffffec27fff1e8", "000000ffffffa8734ae9b287772d26b6686285d4dcc5ffffa85fb4e99df5559e4a92df8742348b7e70cabdcc71ffffb0", "3f28117a2222d13b27e07f8a5d853a68c127b3e868122615513155286fb89b8bffa8e4d4cc8218c7b581000000ffffff", "00000019102846af45a1d685453e787664fe8331299ec2e8dc534be18d79d6b97be9d8a1216c4bd365c8afaab9f5f4eb", "0000005e606e2234d10c7e455c2e78b5b5b5ffffffffd93f7be2f98a36224c81fb44aacceb8a60aa5c3d6cd947e23d69", "0000001b1e29362747443f4152524c64647c73615077785b9ea4a7cbe8f7e08b79a2324e003308084a3c546a00516cbf", "000000555555aaaaaaffffff0000aa5555ff00aa0055ff5500aaaa55ffffaa0000ff5555aa00aaff55ffaa5500ffff55", "0d080d4f2b24825b31c59154f0bd77fbdf9bfff9e4bebbb27bb24e74adbb4180a032535f2a23497d3840c16c5be89973", "f6f6bfe6d1d1868691794765f5e17aedc38dcc8d86ca657e39d4b98dbcd28184ab6860869dc0857ea788567864051625", "1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57", "0000007e7e7ebebebeffffff7e0000ff0000007e0000ff007e7e00ffff0000007e0000ff7e007eff00ff007e7e00ffff" } function colorsToPaletteString(colors) local str = "" for i=1, #colors do str = str .. colors[i] end return str end function loadPalette(palette) for i=0,15 do r=tonumber(string.sub(palette,i*6+1,i*6+2),16) g=tonumber(string.sub(palette,i*6+3,i*6+4),16) b=tonumber(string.sub(palette,i*6+5,i*6+6),16) poke(0x3FC0+(i*3)+0,r) poke(0x3FC0+(i*3)+1,g) poke(0x3FC0+(i*3)+2,b) end end function toHex(val) local hex = string.format("%02x", val) return hex:lower() end -- Update palette function updatePalette() local interpolatedColors = {} for i=1, 16 do local currColor = currentPalette[i] local targetColor = targetPalette[i] local newColor = toHex(lerp(tonumber(currColor:sub(1,2), 16), tonumber(targetColor:sub(1,2), 16), t)) .. toHex(lerp(tonumber(currColor:sub(3,4), 16), tonumber(targetColor:sub(3,4), 16), t)) .. toHex(lerp(tonumber(currColor:sub(5,6), 16), tonumber(targetColor:sub(5,6), 16), t)) table.insert(interpolatedColors, newColor) end loadPalette(colorsToPaletteString(interpolatedColors)) -- Increment t t = t + interpolationSpeed if t >= 1 then t = 0 currentPalette = targetPalette -- Logic to select new target palette local index = math.random(1, #palettes) targetPalette = extractRGB(palettes[index]) end end -- Initially set the current and target palette currentPalette = extractRGB(palettes[1]) curpal = 2 targetPalette = extractRGB(palettes[curpal]) cls(0) function applyVignette(x, y, strength) local centerX = 240 / 2 -- Assuming a 240x136 TIC-80 resolution, change accordingly if different local centerY = 136 / 2 local maxDist = math.sqrt(centerX^2 + centerY^2) local dist = math.sqrt((x - centerX)^2 + (y - centerY)^2) local lerpValue = dist / maxDist -- Calculate the fade strength based on distance local fade = lerp(1, strength, lerpValue) -- Get the pixel color local col = pix(x,y) -- Darken the color local darkenedCol = fade * col -- Apply the darkened color back to the screen pix(x, y, math.floor(darkenedCol)) end function TIC() updatePalette() RAY_DIR.y=math.cos(time()/600) RAY_DIR.x=math.sin(time()/600) -- Draw all particles for _, particle in pairs(particles) do particle:intersect(RAY_START, RAY_DIR) particle:update() particle:draw() end BRIGHTNESS_DECAY = 0.01*math.cos(time()*0.0002) for x = 0, 239 do for y = 0, 135 do applyVignette(x, y, 12-math.cos(time()*0.0002)*10) end end end