Portál AbcLinuxu, 21. května 2024 10:40

silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

31.12.2020 23:55 | Přečteno: 2117× | poslední úprava: 4.1.2021 20:45

zase trávíš silvestra u počítače?? máš strach že tě policajti zmlátěj pendrekama když si pudeš vo půlnoci ven střelit rachejtlí???? mamka tě nechce pustit ven?? :O :O

hřib ti zakázal rachejtle abys jako nepodminoval/a vorloj pražskej most nebo nějakou jinou starověkou památku strašně cenou??  bojíš se dělobuchů protože si bojoval/a v afgánistánu a rachejtle ti způsobujou flashbacky na válku?? nikdo tě nepozval protože ti kamarádi nevěřej že zase uplně pitomě někde nevykecáš policajtům kde bude tajná divoká silvestrovská party u patočků ve stodole?? kolegové z práce tě už jako moc dobře znaj a nechtěj aby se zase někdo v příkopě u cesty přivotrávenej chlastem nedusil vlastníma zvratkama a posunuli hodinky dozadu a tys to jakoby právě teďko zistil?? :O :O  

nezoufej!!!!! Přesně pro tebe tady jako je grétin nouzovej vohňostroj na voslavu konce roku 2020 mastěnej v pythonu!!!!!!!!! stáhni skriptík pusť a mužeš si užívat skoro uplně stejně dobře jako vostatní :D :D ;D ;D

všecko nej do novýho roku přeju :D ;D

 

Zdroják

Update 4.1.2021: přidaný vstupní argumenty de normálně vypnout máčknutím libovolnýho tlačítka na klávesnici + upravená kovidová verze :D

jestli neni vidět seskrolujte dolu :O :O

zdroják projistotu taky tady hele

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import curses
import time
import math
import random
import argparse

# vyrobíme si parser vstupních argumentů skriptu
parser = argparse.ArgumentParser()

# přidáme si do parseru jaký jako chcem vstupní argumenty
# mužem si je pak vypsat helpem jakože zadáním 'skript.py -h' nebo
# 'skript.py --help'. help si nemusíme vyrábět sami ten se pak
# jakoby 'vygeneruje' sám ;D

# počet raket kolik jich jako chem používat/vykreslovat
parser.add_argument('-r','--raket', type=int, help='kolik chceme raket',default=10)

# doba mezi jednotlivejma krokama vykreslování
# vlastně jakoby znamená jak moc často/přesně chcem vykreslovat 
parser.add_argument('-dt','--dt', type=float, help='trvani kroku \'animace\'', default=0.1)

parser.add_argument('-g','--gravitace', type=float, help='gravitacni zrychleni', default=10.0)
parser.add_argument('-v','--rychlost', type=float, help='rychlost jakou se jiskry zdaloujou vod středu výbuchu', default=15.0)

# bere dva argumenty - min a max počet při výbuchu generovanejch těch jiskřiček
parser.add_argument('-j','--jisker', type=int, nargs=2, help='kolik má mit výbuch min/max jisker', default=[15,50])
parser.add_argument('-t','--trvani_vybuchu', type=float, help='jak dlouho jako existujou jiskry po výbuchu', default=2.0)
parser.add_argument('-o','--okraj', type=int, help='jak daleko startujou rakety od vokraje vobrazovky', default=5)

# argument palety nemá nastavenou defaultní hodnotu takže muže bejt 'None' když uživatel nezadá :O ;D
parser.add_argument('-p','--paleta', type=int, nargs='+', help='paleta indexů bavičkovejch párů který chcem použít. Hodnoty musej bejt v rosahu 1-255')

# naparsujeme do namespace obětu
# k proměnejm pak mužem přistupovat jako 'argumenty.promena'
argumenty = parser.parse_args()

# argparse neřadí podle velikosti a my chcem aby první hodnota byla 
# ždycky menčí než tamta druhá
if argumenty.jisker[1] < argumenty.jisker[0]:
    argumenty.jisker = [argumenty.jisker[1], argumenty.jisker[0]]
    
# jestli barvy případný palety sou v požadovaným rosahu
if argumenty.paleta is not None:
    for index in argumenty.paleta:
        if index <= 0 or index > 255:
            print('chyba!!!!!! špatnej vstup!!!!!!! :O :O')
            print(f'barvičková paleta vobsahuje index mimo povolenej rosah: {index}')
            quit()
            # poznámka pod čarou 
            # nóó vono to teda je schopný sežrat i index víc než 255 a dělá to pak různý dekorace tech znaků
            # jakože sou třeba napsaný na barevným pozadí nebo podtržený a tak :O ;D
            


class Raketa:

    def __init__(self, screen, rychlost=10):
        self.screen = screen
        # maximální šířka a vejška tý naší vobrazovky/terminálu v počtu znaků
        max_vyska, max_sirka = self.screen.getmaxyx()

        # počáteční iksová souřadnice bude náhodnej sloupek pět znaků vod vokraje
        # protože na vokraji ty výbuchy nebyly hezký protože nebyly vidět :D
        self.x = random.randint(argumenty.okraj, max_sirka - argumenty.okraj)

        # spodek vobrazovky má max hodnotu, vršek má navopak 0
        self.y = max_vyska - 1

        # vejška ve který rachejtle vybuchne
        # nejdřiv muže vybuchnout ve čtvrtině vejšky vobrazovky + nějaká náhoda
        self.vyska_kdy_bouchne = max_vyska // 4 + random.randint(0, max_vyska // 2)

        # rychlost jakou jako letí nahoru
        self.rychlost = rychlost

    # aktualizace proměnejch podle rozdílu času
    def aktualizace(self, dt):
        self.y -= self.rychlost * dt

    # vykreslení na vobrazovku
    def namalovat(self):
        # musíme souřadnice zavokrouhlit nebo převíst na int
        # float to papá nerado :D
        pos_y = int(round(self.y))
        # vykreslíme na vobrazovku tu raketu
        self.screen.addstr(pos_y, self.x, '|')

    # true/false jestli už je ve vejšce ve který muže bouchnout
    def bouchla(self):
        return self.y < self.vyska_kdy_bouchne


class Jiskra:

    def __init__(self, screen, pozice, smer, barva, rychlost=argumenty.rychlost, gravitace=argumenty.gravitace):

        self.screen = screen
        self.barva = barva

        self.x = pozice[0]
        self.y = pozice[1]
        self.smer_x = smer[0]
        self.smer_y = smer[1]
        self.rychlost = rychlost
        self.gravitace = gravitace

    def namalovat(self):

        pos_x = int(round(self.x))
        pos_y = int(round(self.y))

        max_vyska, max_sirka = self.screen.getmaxyx()

        # kouknem jestli souřadnicema jakoby leží na vobrazovce jinak ji nemužem vykreslit
        if pos_x <= 0 or pos_y <= 0 or pos_x > max_sirka - 1 or pos_y >= max_vyska - 1:
            return

        # jestli mužem v týdle konzoli kreslit barevně vykreslíme s nějakou
        # moc hezkou barvičkou :D :D :D :D
        if curses.can_change_color():
            # všiměte si že voni to maj prohozený to iks s ipsilonem v těch souřadnicích než bejvá vobvyklý :O :O
            self.screen.addstr(pos_y, pos_x, '*', curses.color_pair(self.barva))
        else:
            self.screen.addstr(pos_y, pos_x, '*')

    def aktualizace(self, dt):

        self.x += self.smer_x * self.rychlost * dt
        self.y += self.smer_y * self.rychlost * dt

        # navíc přičtem efekt gravitace aby jakože pomaličku kařdým krokem letěly
        # ty jiskřičky víc dolu abyto bylo jakoby trošku víc realnější :D ;D
        self.y += self.gravitace * dt


class Vybuch:

    def __init__(self, screen, pozice, kolik_jiskricek, doba_trvani, barva):

        # doba trvání výbuchu rachejtle
        self.doba_trvani = doba_trvani
        # jednotlivý rachejtle v poli
        self.jiskry = []

        # smer jiskřiček z rachejtlí spočítáme sínusem a kosínusem noa nato
        # jakoby potřebujem znát úhel pod jakým jakoby vodlítaj vod středu výbuchu
        # ten určíme z dvě pí (jakoře jednou dokola nebo 360°) děleno počet jisker
        rust_uhlu = (math.pi * 2) / kolik_jiskricek
        for i in range(kolik_jiskricek):
            # kosínus/xová souřadnice je vynásobená dvouma aby to jakoby
            # kompenzovalo že znaky psaný v termiálu sou trošičku vyší než širší
            # bez tý kompenzace by to nedělalo kolečka ale jakože takový šišatý elipsy :D ;D
            smer = (math.cos(i * rust_uhlu) * 2, math.sin(i * rust_uhlu))

            # vyrobíme novej particle takový tý rachejtlový jiskry a skováme do pole
            jiskra = Jiskra(screen, pozice, smer, barva)
            self.jiskry.append(jiskra)

    def aktualizace(self, dt):

        # vodečtem dobu trvání
        self.doba_trvani -= dt
        # a aktualizujem všecky jiskry
        for jiskra in self.jiskry:
            jiskra.aktualizace(dt)

    def namalovat(self):
        # vykreslíme všecky jisrky
        for jiskra in self.jiskry:
            jiskra.namalovat()

    # jestli mu jetště jakoby zbejvá nějaká doba trvání :O :O
    def zije_este(self):
        return self.doba_trvani > 0


# funkce co strčíme do curses wrapperu
# ten argument 'stdscr' je instance vobrazovky/terminálu kterou nám řekne curses.wrapper
# do ni budem vykreslovat ty naše výbuchy a rachejtle ;D
def main(stdscr):
    rakety = []
    vybuchy = []

    # jestli mužem v terminálu měnit barvičky
    # tak si připravýme všecky možný
    if curses.can_change_color:
        curses.start_color()
        curses.use_default_colors()
        for i in range(0, curses.COLORS):
            # curses ukládá barvičky v párech voznačený/pomenovaný nenulovým indexem
            # pred použitím se musej inicializovat a přiřadit jim ten index
            # noa samotnej ten pár se zkládá z barvy textu a barvy pozadí taky voznačený číslem
            # první argument je index druhej barva textu a třetí barva pozadí
            curses.init_pair(i + 1, i, 0)
    # jak jednotlivý barvičky vypadaj mužem vidět třeba tady https://i.stack.imgur.com/7AtMc.png

    # zneviditelníme kruzor
    # jinak by nám tam furt někde blikal černobíle
    curses.curs_set(0)

    # naplníme pole rachejtlí podle zadanýho počtu
    for i in range(argumenty.raket):
        raketa = Raketa(stdscr)
        rakety.append(raketa)

    # dokud nebude máčknutá nějaká klávesa budem střílet donebe rachejtlema
    # v curses funkce/metody pro čtení uživatelskýho vstupu ve výhozím nastavení dycky
    # čekaj než se jako něco zmáčkne a na tom by se nám to jakože zaseklo :O :/
    # takle to čekání mužem vypnout ;D
    stdscr.nodelay(1)
    
    # metoda getch() vrací máčknutej vstup z klávesnice
    # když neni žádnej dostupnej vrací -1
    while stdscr.getch() == -1:

        # vyčistíme vobrazovku
        stdscr.clear()

        for raketa in rakety:

            # jestli raketa bouchla tak ji vodstraníme z pole na její souřadnici vyrobíme novej výbuch a do polí 
            # raket dáme novou raketu. ekologisti si mužou třídu raket upravit tak aby se misto vodstraňování starý 
            # instance a vyrábění nový raketa recyklovala a 'teleportovala' nazačátek :D ;D 
            if raketa.bouchla():
                pozice = (raketa.x, raketa.y)
                rakety.remove(raketa)
                
                # barva jisker tohodletoho výbuchu
                barva = 255 # výchozí bílá
                
                # jestli jakoby máme zadanou paletu nějakou tak 
                # vyberem náhodnou barvu z ní
                # jinak náhodnou hodnotu z celýho možnýho rosahu
                if argumenty.paleta is not None:
                    barva = random.choice(argumenty.paleta)
                else:
                    barva = random.randint(0, 255)

                novy_vybuch = Vybuch(stdscr, pozice, random.randint(argumenty.jisker[0], argumenty.jisker[1]), argumenty.trvani_vybuchu, barva)
                vybuchy.append(novy_vybuch)

                nova_raketa = Raketa(stdscr)
                rakety.append(nova_raketa)
            else:
                raketa.aktualizace(argumenty.dt)
                raketa.namalovat()

        # podobně vykreslujem aktualizujem a vodstraňujem výbuchy
        for vybuch in vybuchy:
            if vybuch.zije_este():
                vybuch.aktualizace(argumenty.dt)
                vybuch.namalovat()
            else:
                vybuchy.remove(vybuch)

        # aktualizujem vobrazovku
        stdscr.refresh()

        # a počkáme nějakou dobu dt než uděláme další průběh while cyklu
        time.sleep(argumenty.dt)


# vyrobení wrapperu do kterýho se strká ta naše funkce
curses.wrapper(main)

Verze zavirovaná kovidem :O :O

Vobsahuje pravou nefalšovanou genetickou informaci covidu hele (komplementární dna) :O :O nukleotidy sou upravený Jendou hele :O :O :D ;D

zdrojáček tady hele

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import curses
import time
import math
import random
import argparse

# vyrobíme si parser vstupních argumentů skriptu
parser = argparse.ArgumentParser()

# přidáme si do parseru jaký jako chcem vstupní argumenty
# mužem si je pak vypsat helpem jakože zadáním 'skript.py -h' nebo
# 'skript.py --help'. help si nemusíme vyrábět sami ten se pak
# jakoby 'vygeneruje' sám ;D

# počet raket kolik jich jako chem používat/vykreslovat
parser.add_argument('-r','--raket', type=int, help='kolik chceme raket',default=10)

# doba mezi jednotlivejma krokama vykreslování
# vlastně jakoby znamená jak moc často/přesně chcem vykreslovat 
parser.add_argument('-dt','--dt', type=float, help='trvani kroku \'animace\'', default=0.1)

parser.add_argument('-g','--gravitace', type=float, help='gravitacni zrychleni', default=10.0)
parser.add_argument('-v','--rychlost', type=float, help='rychlost jakou se jiskry zdaloujou vod středu výbuchu', default=15.0)
parser.add_argument('-j','--jisker', type=int, nargs=2, help='kolik má mit výbuch min/max jisker', default=[15,50])
parser.add_argument('-t','--trvani_vybuchu', type=float, help='jak dlouho jako existujou jiskry po výbuchu', default=2.0)
parser.add_argument('-o','--okraj', type=int, help='jak daleko startujou rakety od vokraje vobrazovky', default=5)

# argument palety nemá nastavenou defaultní hodnotu takže muže bejt 'None' když uživatel nezadá :O ;D
parser.add_argument('-p','--paleta', type=int, nargs='+', help='paleta indexů bavičkovejch párů který chcem použít. Hodnoty musej bejt v rosahu 1-255')

# naparsujeme do namespace obětu
# k proměnejm pak mužem přistupovat jako 'argumenty.promena'
argumenty = parser.parse_args()

# argparse neřadí podle velikosti a my chcem aby první hodnota byla 
# ždycky menčí než tamta druhá
if argumenty.jisker[1] < argumenty.jisker[0]:
    argumenty.jisker = [argumenty.jisker[1], argumenty.jisker[0]]
    
# jestli barvy případný palety sou v požadovaným rosahu
if argumenty.paleta is not None:
    for index in argumenty.paleta:
        if index <= 0 or index > 255:
            print('chyba!!!!!! špatnej vstup!!!!!!! :O :O')
            print(f'barvičková paleta vobsahuje index mimo povolenej rosah: {index}')
            quit()
            # poznámka pod čarou 
            # nóó vono to teda je schopný sežrat i index víc než 255 a dělá to pak různý dekorace tech znaků
            # jakože sou třeba napsaný na barevným pozadí nebo podtržený a tak :O ;D

# covid :O :O :O :O
seq = 'ATTAAAGGTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGTAGATCTGTTCTCTAAACGAACTTTAAAATCTGTGTGGCTGTCACTCGGCTGCATGCTTAGTGCACTCACGCAGTATAATTAATAACTAATTACTGTCGTTGACAGGACACGAGTAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTCGTCCGGGTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTTACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAGATGGCACTTGTGGCTTAGTAGAAGTTGAAAAAGGCGTTTTGCCTCAACTTGAACAGCCCTATGTGTTCATCAAACGTTCGGATGCTCGAACTGCACCTCATGGTCATGTTATGGTTGAGCTGGTAGCAGAACTCGAAGGCATTCAGTACGGTCGTAGTGGTGAGACACTTGGTGTCCTTGTCCCTCATGTGGGCGAAATACCAGTGGCTTACCGCAAGGTTCTTCTTCGTAAGAACGGTAATAAAGGAGCTGGTGGCCATAGTTACGGCGCCGATCTAAAGTCATTTGACTTAGGCGACGAGCTTGGCACTGATCCTTATGAAGATTTTCAAGAAAACTGGAACACTAAACATAGCAGTGGTGTTACCCGTGAACTCATGCGTGAGCTTAACGGAGGGGCATACACTCGCTATGTCGATAACAACTTCTGTGGCCCTGATGGCTACCCTCTTGAGTGCATTAAAGACCTTCTAGCACGTGCTGGTAAAGCTTCATGCACTTTGTCCGAACAACTGGACTTTATTGACACTAAGAGGGGTGTATACTGCTGCCGTGAACATGAGCATGAAATTGCTTGGTACACGGAACGTTCTGAAAAGAGCTATGAATTGCAGACACCTTTTGAAATTAAATTGGCAAAGAAATTTGACACCTTCAATGGGGAATGTCCAAATTTTGTATTTCCCTTAAATTCCATAATCAAGACTATTCAACCAAGGGTTGAAAAGAAAAAGCTTGATGGCTTTATGGGTAGAATTCGATCTGTCTATCCAGTTGCGTCACCAAATGAATGCAACCAAATGTGCCTTTCAACTCTCATGAAGTGTGATCATTGTGGTGAAACTTCATGGCAGACGGGCGATTTTGTTAAAGCCACTTGCGAATTTTGTGGCACTGAGAATTTGACTAAAGAAGGTGCCACTACTTGTGGTTACTTACCCCAAAATGCTGTTGTTAAAATTTATTGTCCAGCATGTCACAATTCAGAAGTAGGACCTGAGCATAGTCTTGCCGAATACCATAATGAATCTGGCTTGAAAACCATTCTTCGTAAGGGTGGTCGCACTATTGCCTTTGGAGGCTGTGTGTTCTCTTATGTTGGTTGCCATAACAAGTGTGCCTATTGGGTTCCACGTGCTAGCGCTAACATAGGTTGTAACCATACAGGTGTTGTTGGAGAAGGTTCCGAAGGTCTTAATGACAACCTTCTTGAAATACTCCAAAAAGAGAAAGTCAACATCAATATTGTTGGTGACTTTAAACTTAATGAAGAGATCGCCATTATTTTGGCATCTTTTTCTGCTTCCACAAGTGCTTTTGTGGAAACTGTGAAAGGTTTGGATTATAAAGCATTCAAACAAATTGTTGAATCCTGTGGTAATTTTAAAGTTACAAAAGGAAAAGCTAAAAAAGGTGCCTGGAATATTGGTGAACAGAAATCAATACTGAGTCCTCTTTATGCATTTGCATCAGAGGCTGCTCGTGTTGTACGATCAATTTTCTCCCGCACTCTTGAAACTGCTCAAAATTCTGTGCGTGTTTTACAGAAGGCCGCTATAACAATACTAGATGGAATTTCACAGTATTCACTGAGACTCATTGATGCTATGATGTTCACATCTGATTTGGCTACTAACAATCTAGTTGTAATGGCCTACATTACAGGTGGTGTTGTTCAGTTGACTTCGCAGTGGCTAACTAACATCTTTGGCACTGTTTATGAAAAACTCAAACCCGTCCTTGATTGGCTTGAAGAGAAGTTTAAGGAAGGTGTAGAGTTTCTTAGAGACGGTTGGGAAATTGTTAAATTTATCTCAACCTGTGCTTGTGAAATTGTCGGTGGACAAATTGTCACCTGTGCAAAGGAAATTAAGGAGAGTGTTCAGACATTCTTTAAGCTTGTAAATAAATTTTTGGCTTTGTGTGCTGACTCTATCATTATTGGTGGAGCTAAACTTAAAGCCTTGAATTTAGGTGAAACATTTGTCACGCACTCAAAGGGATTGTACAGAAAGTGTGTTAAATCCAGAGAAGAAACTGGCCTACTCATGCCTCTAAAAGCCCCAAAAGAAATTATCTTCTTAGAGGGAGAAACACTTCCCACAGAAGTGTTAACAGAGGAAGTTGTCTTGAAAACTGGTGATTTACAACCATTAGAACAACCTACTAGTGAAGCTGTTGAAGCTCCATTGGTTGGTACACCAGTTTGTATTAACGGGCTTATGTTGCTCGAAATCAAAGACACAGAAAAGTACTGTGCCCTTGCACCTAATATGATGGTAACAAACAATACCTTCACACTCAAAGGCGGTGCACCAACAAAGGTTACTTTTGGTGATGACACTGTGATAGAAGTGCAAGGTTACAAGAGTGTGAATATCACTTTTGAACTTGATGAAAGGATTGATAAAGTACTTAATGAGAAGTGCTCTGCCTATACAGTTGAACTCGGTACAGAAGTAAATGAGTTCGCCTGTGTTGTGGCAGATGCTGTCATAAAAACTTTGCAACCAGTATCTGAATTACTTACACCACTGGGCATTGATTTAGATGAGTGGAGTATGGCTACATACTACTTATTTGATGAGTCTGGTGAGTTTAAATTGGCTTCACATATGTATTGTTCTTTCTACCCTCCAGATGAGGATGAAGAAGAAGGTGATTGTGAAGAAGAAGAGTTTGAGCCATCAACTCAATATGAGTATGGTACTGAAGATGATTACCAAGGTAAACCTTTGGAATTTGGTGCCACTTCTGCTGCTCTTCAACCTGAAGAAGAGCAAGAAGAAGATTGGTTAGATGATGATAGTCAACAAACTGTTGGTCAACAAGACGGCAGTGAGGACAATCAGACAACTACTATTCAAACAATTGTTGAGGTTCAACCTCAATTAGAGATGGAACTTACACCAGTTGTTCAGACTATTGAAGTGAATAGTTTTAGTGGTTATTTAAAACTTACTGACAATGTATACATTAAAAATGCAGACATTGTGGAAGAAGCTAAAAAGGTAAAACCAACAGTGGTTGTTAATGCAGCCAATGTTTACCTTAAACATGGAGGAGGTGTTGCAGGAGCCTTAAATAAGGCTACTAACAATGCCATGCAAGTTGAATCTGATGATTACATAGCTACTAATGGACCACTTAAAGTGGGTGGTAGTTGTGTTTTAAGCGGACACAATCTTGCTAAACACTGTCTTCATGTTGTCGGCCCAAATGTTAACAAAGGTGAAGACATTCAACTTCTTAAGAGTGCTTATGAAAATTTTAATCAGCACGAAGTTCTACTTGCACCATTATTATCAGCTGGTATTTTTGGTGCTGACCCTATACATTCTTTAAGAGTTTGTGTAGATACTGTTCGCACAAATGTCTACTTAGCTGTCTTTGATAAAAATCTCTATGACAAACTTGTTTCAAGCTTTTTGGAAATGAAGAGTGAAAAGCAAGTTGAACAAAAGATCGCTGAGATTCCTAAAGAGGAAGTTAAGCCATTTATAACTGAAAGTAAACCTTCAGTTGAACAGAGAAAACAAGATGATAAGAAAATCAAAGCTTGTGTTGAAGAAGTTACAACAACTCTGGAAGAAACTAAGTTCCTCACAGAAAACTTGTTACTTTATATTGACATTAATGGCAATCTTCATCCAGATTCTGCCACTCTTGTTAGTGACATTGACATCACTTTCTTAAAGAAAGATGCTCCATATATAGTGGGTGATGTTGTTCAAGAGGGTGTTTTAACTGCTGTGGTTATACCTACTAAAAAGGCTGGTGGCACTACTGAAATGCTAGCGAAAGCTTTGAGAAAAGTGCCAACAGACAATTATATAACCACTTACCCGGGTCAGGGTTTAAATGGTTACACTGTAGAGGAGGCAAAGACAGTGCTTAAAAAGTGTAAAAGTGCCTTTTACATTCTACCATCTATTATCTCTAATGAGAAGCAAGAAATTCTTGGAACTGTTTCTTGGAATTTGCGAGAAATGCTTGCACATGCAGAAGAAACACGCAAATTAATGCCTGTCTGTGTGGAAACTAAAGCCATAGTTTCAACTATACAGCGTAAATATAAGGGTATTAAAATACAAGAGGGTGTGGTTGATTATGGTGCTAGATTTTACTTTTACACCAGTAAAACAACTGTAGCGTCACTTATCAACACACTTAACGATCTAAATGAAACTCTTGTTACAATGCCACTTGGCTATGTAACACATGGCTTAAATTTGGAAGAAGCTGCTCGGTATATGAGATCTCTCAAAGTGCCAGCTACAGTTTCTGTTTCTTCACCTGATGCTGTTACAGCGTATAATGGTTATCTTACTTCTTCTTCTAAAACACCTGAAGAACATTTTATTGAAACCATCTCACTTGCTGGTTCCTATAAAGATTGGTCCTATTCTGGACAATCTACACAACTAGGTATAGAATTTCTTAAGAGAGGTGATAAAAGTGTATATTACACTAGTAATCCTACCACATTCCACCTAGATGGTGAAGTTATCACCTTTGACAATCTTAAGACACTTCTTTCTTTGAGAGAAGTGAGGACTATTAAGGTGTTTACAACAGTAGACAACATTAACCTCCACACGCAAGTTGTGGACATGTCAATGACATATGGACAACAGTTTGGTCCAACTTATTTGGATGGAGCTGATGTTACTAAAATAAAACCTCATAATTCACATGAAGGTAAAACATTTTATGTTTTACCTAATGATGACACTCTACGTGTTGAGGCTTTTGAGTACTACCACACAACTGATCCTAGTTTTCTGGGTAGGTACATGTCAGCATTAAATCACACTAAAAAGTGGAAATACCCACAAGTTAATGGTTTAACTTCTATTAAATGGGCAGATAACAACTGTTATCTTGCCACTGCATTGTTAACACTCCAACAAATAGAGTTGAAGTTTAATCCACCTGCTCTACAAGATGCTTATTACAGAGCAAGGGCTGGTGAAGCTGCTAACTTTTGTGCACTTATCTTAGCCTACTGTAATAAGACAGTAGGTGAGTTAGGTGATGTTAGAGAAACAATGAGTTACTTGTTTCAACATGCCAATTTAGATTCTTGCAAAAGAGTCTTGAACGTGGTGTGTAAAACTTGTGGACAACAGCAGACAACCCTTAAGGGTGTAGAAGCTGTTATGTACATGGGCACACTTTCTTATGAACAATTTAAGAAAGGTGTTCAGATACCTTGTACGTGTGGTAAACAAGCTACAAAATATCTAGTACAACAGGAGTCACCTTTTGTTATGATGTCAGCACCACCTGCTCAGTATGAACTTAAGCATGGTACATTTACTTGTGCTAGTGAGTACACTGGTAATTACCAGTGTGGTCACTATAAACATATAACTTCTAAAGAAACTTTGTATTGCATAGACGGTGCTTTACTTACAAAGTCCTCAGAATACAAAGGTCCTATTACGGATGTTTTCTACAAAGAAAACAGTTACACAACAACCATAAAACCAGTTACTTATAAATTGGATGGTGTTGTTTGTACAGAAATTGACCCTAAGTTGGACAATTATTATAAGAAAGACAATTCTTATTTCACAGAGCAACCAATTGATCTTGTACCAAACCAACCATATCCAAACGCAAGCTTCGATAATTTTAAGTTTGTATGTGATAATATCAAATTTGCTGATGATTTAAACCAGTTAACTGGTTATAAGAAACCTGCTTCAAGAGAGCTTAAAGTTACATTTTTCCCTGACTTAAATGGTGATGTGGTGGCTATTGATTATAAACACTACACACCCTCTTTTAAGAAAGGAGCTAAATTGTTACATAAACCTATTGTTTGGCATGTTAACAATGCAACTAATAAAGCCACGTATAAACCAAATACCTGGTGTATACGTTGTCTTTGGAGCACAAAACCAGTTGAAACATCAAATTCGTTTGATGTACTGAAGTCAGAGGACGCGCAGGGAATGGATAATCTTGCCTGCGAAGATCTAAAACCAGTCTCTGAAGAAGTAGTGGAAAATCCTACCATACAGAAAGACGTTCTTGAGTGTAATGTGAAAACTACCGAAGTTGTAGGAGACATTATACTTAAACCAGCAAATAATAGTTTAAAAATTACAGAAGAGGTTGGCCACACAGATCTAATGGCTGCTTATGTAGACAATTCTAGTCTTACTATTAAGAAACCTAATGAATTATCTAGAGTATTAGGTTTGAAAACCCTTGCTACTCATGGTTTAGCTGCTGTTAATAGTGTCCCTTGGGATACTATAGCTAATTATGCTAAGCCTTTTCTTAACAAAGTTGTTAGTACAACTACTAACATAGTTACACGGTGTTTAAACCGTGTTTGTACTAATTATATGCCTTATTTCTTTACTTTATTGCTACAATTGTGTACTTTTACTAGAAGTACAAATTCTAGAATTAAAGCATCTATGCCGACTACTATAGCAAAGAATACTGTTAAGAGTGTCGGTAAATTTTGTCTAGAGGCTTCATTTAATTATTTGAAGTCACCTAATTTTTCTAAACTGATAAATATTATAATTTGGTTTTTACTATTAAGTGTTTGCCTAGGTTCTTTAATCTACTCAACCGCTGCTTTAGGTGTTTTAATGTCTAATTTAGGCATGCCTTCTTACTGTACTGGTTACAGAGAAGGCTATTTGAACTCTACTAATGTCACTATTGCAACCTACTGTACTGGTTCTATACCTTGTAGTGTTTGTCTTAGTGGTTTAGATTCTTTAGACACCTATCCTTCTTTAGAAACTATACAAATTACCATTTCATCTTTTAAATGGGATTTAACTGCTTTTGGCTTAGTTGCAGAGTGGTTTTTGGCATATATTCTTTTCACTAGGTTTTTCTATGTACTTGGATTGGCTGCAATCATGCAATTGTTTTTCAGCTATTTTGCAGTACATTTTATTAGTAATTCTTGGCTTATGTGGTTAATAATTAATCTTGTACAAATGGCCCCGATTTCAGCTATGGTTAGAATGTACATCTTCTTTGCATCATTTTATTATGTATGGAAAAGTTATGTGCATGTTGTAGACGGTTGTAATTCATCAACTTGTATGATGTGTTACAAACGTAATAGAGCAACAAGAGTCGAATGTACAACTATTGTTAATGGTGTTAGAAGGTCCTTTTATGTCTATGCTAATGGAGGTAAAGGCTTTTGCAAACTACACAATTGGAATTGTGTTAATTGTGATACATTCTGTGCTGGTAGTACATTTATTAGTGATGAAGTTGCGAGAGACTTGTCACTACAGTTTAAAAGACCAATAAATCCTACTGACCAGTCTTCTTACATCGTTGATAGTGTTACAGTGAAGAATGGTTCCATCCATCTTTACTTTGATAAAGCTGGTCAAAAGACTTATGAAAGACATTCTCTCTCTCATTTTGTTAACTTAGACAACCTGAGAGCTAATAACACTAAAGGTTCATTGCCTATTAATGTTATAGTTTTTGATGGTAAATCAAAATGTGAAGAATCATCTGCAAAATCAGCGTCTGTTTACTACAGTCAGCTTATGTGTCAACCTATACTGTTACTAGATCAGGCATTAGTGTCTGATGTTGGTGATAGTGCGGAAGTTGCAGTTAAAATGTTTGATGCTTACGTTAATACGTTTTCATCAACTTTTAACGTACCAATGGAAAAACTCAAAACACTAGTTGCAACTGCAGAAGCTGAACTTGCAAAGAATGTGTCCTTAGACAATGTCTTATCTACTTTTATTTCAGCAGCTCGGCAAGGGTTTGTTGATTCAGATGTAGAAACTAAAGATGTTGTTGAATGTCTTAAATTGTCACATCAATCTGACATAGAAGTTACTGGCGATAGTTGTAATAACTATATGCTCACCTATAACAAAGTTGAAAACATGACACCCCGTGACCTTGGTGCTTGTATTGACTGTAGTGCGCGTCATATTAATGCGCAGGTAGCAAAAAGTCACAACATTGCTTTGATATGGAACGTTAAAGATTTCATGTCATTGTCTGAACAACTACGAAAACAAATACGTAGTGCTGCTAAAAAGAATAACTTACCTTTTAAGTTGACATGTGCAACTACTAGACAAGTTGTTAATGTTGTAACAACAAAGATAGCACTTAAGGGTGGTAAAATTGTTAATAATTGGTTGAAGCAGTTAATTAAAGTTACACTTGTGTTCCTTTTTGTTGCTGCTATTTTCTATTTAATAACACCTGTTCATGTCATGTCTAAACATACTGACTTTTCAAGTGAAATCATAGGATACAAGGCTATTGATGGTGGTGTCACTCGTGACATAGCATCTACAGATACTTGTTTTGCTAACAAACATGCTGATTTTGACACATGGTTTAGCCAGCGTGGTGGTAGTTATACTAATGACAAAGCTTGCCCATTGATTGCTGCAGTCATAACAAGAGAAGTGGGTTTTGTCGTGCCTGGTTTGCCTGGCACGATATTACGCACAACTAATGGTGACTTTTTGCATTTCTTACCTAGAGTTTTTAGTGCAGTTGGTAACATCTGTTACACACCATCAAAACTTATAGAGTACACTGACTTTGCAACATCAGCTTGTGTTTTGGCTGCTGAATGTACAATTTTTAAAGATGCTTCTGGTAAGCCAGTACCATATTGTTATGATACCAATGTACTAGAAGGTTCTGTTGCTTATGAAAGTTTACGCCCTGACACACGTTATGTGCTCATGGATGGCTCTATTATTCAATTTCCTAACACCTACCTTGAAGGTTCTGTTAGAGTGGTAACAACTTTTGATTCTGAGTACTGTAGGCACGGCACTTGTGAAAGATCAGAAGCTGGTGTTTGTGTATCTACTAGTGGTAGATGGGTACTTAACAATGATTATTACAGATCTTTACCAGGAGTTTTCTGTGGTGTAGATGCTGTAAATTTACTTACTAATATGTTTACACCACTAATTCAACCTATTGGTGCTTTGGACATATCAGCATCTATAGTAGCTGGTGGTATTGTAGCTATCGTAGTAACATGCCTTGCCTACTATTTTATGAGGTTTAGAAGAGCTTTTGGTGAATACAGTCATGTAGTTGCCTTTAATACTTTACTATTCCTTATGTCATTCACTGTACTCTGTTTAACACCAGTTTACTCATTCTTACCTGGTGTTTATTCTGTTATTTACTTGTACTTGACATTTTATCTTACTAATGATGTTTCTTTTTTAGCACATATTCAGTGGATGGTTATGTTCACACCTTTAGTACCTTTCTGGATAACAATTGCTTATATCATTTGTATTTCCACAAAGCATTTCTATTGGTTCTTTAGTAATTACCTAAAGAGACGTGTAGTCTTTAATGGTGTTTCCTTTAGTACTTTTGAAGAAGCTGCGCTGTGCACCTTTTTGTTAAATAAAGAAATGTATCTAAAGTTGCGTAGTGATGTGCTATTACCTCTTACGCAATATAATAGATACTTAGCTCTTTATAATAAGTACAAGTATTTTAGTGGAGCAATGGATACAACTAGCTACAGAGAAGCTGCTTGTTGTCATCTCGCAAAGGCTCTCAATGACTTCAGTAACTCAGGTTCTGATGTTCTTTACCAACCACCACAAACCTCTATCACCTCAGCTGTTTTGCAGAGTGGTTTTAGAAAAATGGCATTCCCATCTGGTAAAGTTGAGGGTTGTATGGTACAAGTAACTTGTGGTACAACTACACTTAACGGTCTTTGGCTTGATGACGTAGTTTACTGTCCAAGACATGTGATCTGCACCTCTGAAGACATGCTTAACCCTAATTATGAAGATTTACTCATTCGTAAGTCTAATCATAATTTCTTGGTACAGGCTGGTAATGTTCAACTCAGGGTTATTGGACATTCTATGCAAAATTGTGTACTTAAGCTTAAGGTTGATACAGCCAATCCTAAGACACCTAAGTATAAGTTTGTTCGCATTCAACCAGGACAGACTTTTTCAGTGTTAGCTTGTTACAATGGTTCACCATCTGGTGTTTACCAATGTGCTATGAGGCCCAATTTCACTATTAAGGGTTCATTCCTTAATGGTTCATGTGGTAGTGTTGGTTTTAACATAGATTATGACTGTGTCTCTTTTTGTTACATGCACCATATGGAATTACCAACTGGAGTTCATGCTGGCACAGACTTAGAAGGTAACTTTTATGGACCTTTTGTTGACAGGCAAACAGCACAAGCAGCTGGTACGGACACAACTATTACAGTTAATGTTTTAGCTTGGTTGTACGCTGCTGTTATAAATGGAGACAGGTGGTTTCTCAATCGATTTACCACAACTCTTAATGACTTTAACCTTGTGGCTATGAAGTACAATTATGAACCTCTAACACAAGACCATGTTGACATACTAGGACCTCTTTCTGCTCAAACTGGAATTGCCGTTTTAGATATGTGTGCTTCATTAAAAGAATTACTGCAAAATGGTATGAATGGACGTACCATATTGGGTAGTGCTTTATTAGAAGATGAATTTACACCTTTTGATGTTGTTAGACAATGCTCAGGTGTTACTTTCCAAAGTGCAGTGAAAAGAACAATCAAGGGTACACACCACTGGTTGTTACTCACAATTTTGACTTCACTTTTAGTTTTAGTCCAGAGTACTCAATGGTCTTTGTTCTTTTTTTTGTATGAAAATGCCTTTTTACCTTTTGCTATGGGTATTATTGCTATGTCTGCTTTTGCAATGATGTTTGTCAAACATAAGCATGCATTTCTCTGTTTGTTTTTGTTACCTTCTCTTGCCACTGTAGCTTATTTTAATATGGTCTATATGCCTGCTAGTTGGGTGATGCGTATTATGACATGGTTGGATATGGTTGATACTAGTTTGTCTGGTTTTAAGCTAAAAGACTGTGTTATGTATGCATCAGCTGTAGTGTTACTAATCCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTCTAACTACTCAGGTGTAGTTACAACTGTCATGTTTTTGGCCAGAGGTATTGTTTTTATGTGTGTTGAGTATTGCCCTATTTTCTTCATAACTGGTAATACACTTCAGTGTATAATGCTAGTTTATTGTTTCTTAGGCTATTTTTGTACTTGTTACTTTGGCCTCTTTTGTTTACTCAACCGCTACTTTAGACTGACTCTTGGTGTTTATGATTACTTAGTTTCTACACAGGAGTTTAGATATATGAATTCACAGGGACTACTCCCACCCAAGAATAGCATAGATGCCTTCAAACTCAACATTAAATTGTTGGGTGTTGGTGGCAAACCTTGTATCAAAGTAGCCACTGTACAGTCTAAAATGTCAGATGTAAAGTGCACATCAGTAGTCTTACTCTCAGTTTTGCAACAACTCAGAGTAGAATCATCATCTAAATTGTGGGCTCAATGTGTCCAGTTACACAATGACATTCTCTTAGCTAAAGATACTACTGAAGCCTTTGAAAAAATGGTTTCACTACTTTCTGTTTTGCTTTCCATGCAGGGTGCTGTAGACATAAACAAGCTTTGTGAAGAAATGCTGGACAACAGGGCAACCTTACAAGCTATAGCCTCAGAGTTTAGTTCCCTTCCATCATATGCAGCTTTTGCTACTGCTCAAGAAGCTTATGAGCAGGCTGTTGCTAATGGTGATTCTGAAGTTGTTCTTAAAAAGTTGAAGAAGTCTTTGAATGTGGCTAAATCTGAATTTGACCGTGATGCAGCCATGCAACGTAAGTTGGAAAAGATGGCTGATCAAGCTATGACCCAAATGTATAAACAGGCTAGATCTGAGGACAAGAGGGCAAAAGTTACTAGTGCTATGCAGACAATGCTTTTCACTATGCTTAGAAAGTTGGATAATGATGCACTCAACAACATTATCAACAATGCAAGAGATGGTTGTGTTCCCTTGAACATAATACCTCTTACAACAGCAGCCAAACTAATGGTTGTCATACCAGACTATAACACATATAAAAATACGTGTGATGGTACAACATTTACTTATGCATCAGCATTGTGGGAAATCCAACAGGTTGTAGATGCAGATAGTAAAATTGTTCAACTTAGTGAAATTAGTATGGACAATTCACCTAATTTAGCATGGCCTCTTATTGTAACAGCTTTAAGGGCCAATTCTGCTGTCAAATTACAGAATAATGAGCTTAGTCCTGTTGCACTACGACAGATGTCTTGTGCTGCCGGTACTACACAAACTGCTTGCACTGATGACAATGCGTTAGCTTACTACAACACAACAAAGGGAGGTAGGTTTGTACTTGCACTGTTATCCGATTTACAGGATTTGAAATGGGCTAGATTCCCTAAGAGTGATGGAACTGGTACTATCTATACAGAACTGGAACCACCTTGTAGGTTTGTTACAGACACACCTAAAGGTCCTAAAGTGAAGTATTTATACTTTATTAAAGGATTAAACAACCTAAATAGAGGTATGGTACTTGGTAGTTTAGCTGCCACAGTACGTCTACAAGCTGGTAATGCAACAGAAGTGCCTGCCAATTCAACTGTATTATCTTTCTGTGCTTTTGCTGTAGATGCTGCTAAAGCTTACAAAGATTATCTAGCTAGTGGGGGACAACCAATCACTAATTGTGTTAAGATGTTGTGTACACACACTGGTACTGGTCAGGCAATAACAGTTACACCGGAAGCCAATATGGATCAAGAATCCTTTGGTGGTGCATCGTGTTGTCTGTACTGCCGTTGCCACATAGATCATCCAAATCCTAAAGGATTTTGTGACTTAAAAGGTAAGTATGTACAAATACCTACAACTTGTGCTAATGACCCTGTGGGTTTTACACTTAAAAACACAGTCTGTACCGTCTGCGGTATGTGGAAAGGTTATGGCTGTAGTTGTGATCAACTCCGCGAACCCATGCTTCAGTCAGCTGATGCACAATCGTTTTTAAACGGGTTTGCGGTGTAAGTGCAGCCCGTCTTACACCGTGCGGCACAGGCACTAGTACTGATGTCGTATACAGGGCTTTTGACATCTACAATGATAAAGTAGCTGGTTTTGCTAAATTCCTAAAAACTAATTGTTGTCGCTTCCAAGAAAAGGACGAAGATGACAATTTAATTGATTCTTACTTTGTAGTTAAGAGACACACTTTCTCTAACTACCAACATGAAGAAACAATTTATAATTTACTTAAGGATTGTCCAGCTGTTGCTAAACATGACTTCTTTAAGTTTAGAATAGACGGTGACATGGTACCACATATATCACGTCAACGTCTTACTAAATACACAATGGCAGACCTCGTCTATGCTTTAAGGCATTTTGATGAAGGTAATTGTGACACATTAAAAGAAATACTTGTCACATACAATTGTTGTGATGATGATTATTTCAATAAAAAGGACTGGTATGATTTTGTAGAAAACCCAGATATATTACGCGTATACGCCAACTTAGGTGAACGTGTACGCCAAGCTTTGTTAAAAACAGTACAATTCTGTGATGCCATGCGAAATGCTGGTATTGTTGGTGTACTGACATTAGATAATCAAGATCTCAATGGTAACTGGTATGATTTCGGTGATTTCATACAAACCACGCCAGGTAGTGGAGTTCCTGTTGTAGATTCTTATTATTCATTGTTAATGCCTATATTAACCTTGACCAGGGCTTTAACTGCAGAGTCACATGTTGACACTGACTTAACAAAGCCTTACATTAAGTGGGATTTGTTAAAATATGACTTCACGGAAGAGAGGTTAAAACTCTTTGACCGTTATTTTAAATATTGGGATCAGACATACCACCCAAATTGTGTTAACTGTTTGGATGACAGATGCATTCTGCATTGTGCAAACTTTAATGTTTTATTCTCTACAGTGTTCCCACCTACAAGTTTTGGACCACTAGTGAGAAAAATATTTGTTGATGGTGTTCCATTTGTAGTTTCAACTGGATACCACTTCAGAGAGCTAGGTGTTGTACATAATCAGGATGTAAACTTACATAGCTCTAGACTTAGTTTTAAGGAATTACTTGTGTATGCTGCTGACCCTGCTATGCACGCTGCTTCTGGTAATCTATTACTAGATAAACGCACTACGTGCTTTTCAGTAGCTGCACTTACTAACAATGTTGCTTTTCAAACTGTCAAACCCGGTAATTTTAACAAAGACTTCTATGACTTTGCTGTGTCTAAGGGTTTCTTTAAGGAAGGAAGTTCTGTTGAATTAAAACACTTCTTCTTTGCTCAGGATGGTAATGCTGCTATCAGCGATTATGACTACTATCGTTATAATCTACCAACAATGTGTGATATCAGACAACTACTATTTGTAGTTGAAGTTGTTGATAAGTACTTTGATTGTTACGATGGTGGCTGTATTAATGCTAACCAAGTCATCGTCAACAACCTAGACAAATCAGCTGGTTTTCCATTTAATAAATGGGGTAAGGCTAGACTTTATTATGATTCAATGAGTTATGAGGATCAAGATGCACTTTTCGCATATACAAAACGTAATGTCATCCCTACTATAACTCAAATGAATCTTAAGTATGCCATTAGTGCAAAGAATAGAGCTCGCACCGTAGCTGGTGTCTCTATCTGTAGTACTATGACCAATAGACAGTTTCATCAAAAATTATTGAAATCAATAGCCGCCACTAGAGGAGCTACTGTAGTAATTGGAACAAGCAAATTCTATGGTGGTTGGCACAACATGTTAAAAACTGTTTATAGTGATGTAGAAAACCCTCACCTTATGGGTTGGGATTATCCTAAATGTGATAGAGCCATGCCTAACATGCTTAGAATTATGGCCTCACTTGTTCTTGCTCGCAAACATACAACGTGTTGTAGCTTGTCACACCGTTTCTATAGATTAGCTAATGAGTGTGCTCAAGTATTGAGTGAAATGGTCATGTGTGGCGGTTCACTATATGTTAAACCAGGTGGAACCTCATCAGGAGATGCCACAACTGCTTATGCTAATAGTGTTTTTAACATTTGTCAAGCTGTCACGGCCAATGTTAATGCACTTTTATCTACTGATGGTAACAAAATTGCCGATAAGTATGTCCGCAATTTACAACACAGACTTTATGAGTGTCTCTATAGAAATAGAGATGTTGACACAGACTTTGTGAATGAGTTTTACGCATATTTGCGTAAACATTTCTCAATGATGATACTCTCTGACGATGCTGTTGTGTGTTTCAATAGCACTTATGCATCTCAAGGTCTAGTGGCTAGCATAAAGAACTTTAAGTCAGTTCTTTATTATCAAAACAATGTTTTTATGTCTGAAGCAAAATGTTGGACTGAGACTGACCTTACTAAAGGACCTCATGAATTTTGCTCTCAACATACAATGCTAGTTAAACAGGGTGATGATTATGTGTACCTTCCTTACCCAGATCCATCAAGAATCCTAGGGGCCGGCTGTTTTGTAGATGATATCGTAAAAACAGATGGTACACTTATGATTGAACGGTTCGTGTCTTTAGCTATAGATGCTTACCCACTTACTAAACATCCTAATCAGGAGTATGCTGATGTCTTTCATTTGTACTTACAATACATAAGAAAGCTACATGATGAGTTAACAGGACACATGTTAGACATGTATTCTGTTATGCTTACTAATGATAACACTTCAAGGTATTGGGAACCTGAGTTTTATGAGGCTATGTACACACCGCATACAGTCTTACAGGCTGTTGGGGCTTGTGTTCTTTGCAATTCACAGACTTCATTAAGATGTGGTGCTTGCATACGTAGACCATTCTTATGTTGTAAATGCTGTTACGACCATGTCATATCAACATCACATAAATTAGTCTTGTCTGTTAATCCGTATGTTTGCAATGCTCCAGGTTGTGATGTCACAGATGTGACTCAACTTTACTTAGGAGGTATGAGCTATTATTGTAAATCACATAAACCACCCATTAGTTTTCCATTGTGTGCTAATGGACAAGTTTTTGGTTTATATAAAAATACATGTGTTGGTAGCGATAATGTTACTGACTTTAATGCAATTGCAACATGTGACTGGACAAATGCTGGTGATTACATTTTAGCTAACACCTGTACTGAAAGACTCAAGCTTTTTGCAGCAGAAACGCTCAAAGCTACTGAGGAGACATTTAAACTGTCTTATGGTATTGCTACTGTACGTGAAGTGCTGTCTGACAGAGAATTACATCTTTCATGGGAAGTTGGTAAACCTAGACCACCACTTAACCGAAATTATGTCTTTACTGGTTATCGTGTAACTAAAAACAGTAAAGTACAAATAGGAGAGTACACCTTTGAAAAAGGTGACTATGGTGATGCTGTTGTTTACCGAGGTACAACAACTTACAAATTAAATGTTGGTGATTATTTTGTGCTGACATCACATACAGTAATGCCATTAAGTGCACCTACACTAGTGCCACAAGAGCACTATGTTAGAATTACTGGCTTATACCCAACACTCAATATCTCAGATGAGTTTTCTAGCAATGTTGCAAATTATCAAAAGGTTGGTATGCAAAAGTATTCTACACTCCAGGGACCACCTGGTACTGGTAAGAGTCATTTTGCTATTGGCCTAGCTCTCTACTACCCTTCTGCTCGCATAGTGTATACAGCTTGCTCTCATGCCGCTGTTGATGCACTATGTGAGAAGGCATTAAAATATTTGCCTATAGATAAATGTAGTAGAATTATACCTGCACGTGCTCGTGTAGAGTGTTTTGATAAATTCAAAGTGAATTCAACATTAGAACAGTATGTCTTTTGTACTGTAAATGCATTGCCTGAGACGACAGCAGATATAGTTGTCTTTGATGAAATTTCAATGGCCACAAATTATGATTTGAGTGTTGTCAATGCCAGATTACGTGCTAAGCACTATGTGTACATTGGCGACCCTGCTCAATTACCTGCACCACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTGCTGAAATTGTTGACACTGTGAGTGCTTTGGTTTATGATAATAAGCTTAAAGCACATAAAGACAAATCAGCTCAATGCTTTAAAATGTTTTATAAGGGTGTTATCACGCATGATGTTTCATCTGCAATTAACAGGCCACAAATAGGCGTGGTAAGAGAATTCCTTACACGTAACCCTGCTTGGAGAAAAGCTGTCTTTATTTCACCTTATAATTCACAGAATGCTGTAGCCTCAAAGATTTTGGGACTACCAACTCAAACTGTTGATTCATCACAGGGCTCAGAATATGACTATGTCATATTCACTCAAACCACTGAAACAGCTCACTCTTGTAATGTAAACAGATTTAATGTTGCTATTACCAGAGCAAAAGTAGGCATACTTTGCATAATGTCTGATAGAGACCTTTATGACAAGTTGCAATTTACAAGTCTTGAAATTCCACGTAGGAATGTGGCAACTTTACAAGCTGAAAATGTAACAGGACTCTTTAAAGATTGTAGTAAGGTAATCACTGGGTTACATCCTACACAGGCACCTACACACCTCAGTGTTGACACTAAATTCAAAACTGAAGGTTTATGTGTTGACATACCTGGCATACCTAAGGACATGACCTATAGAAGACTCATCTCTATGATGGGTTTTAAAATGAATTATCAAGTTAATGGTTACCCTAACATGTTTATCACCCGCGAAGAAGCTATAAGACATGTACGTGCATGGATTGGCTTCGATGTCGAGGGGTGTCATGCTACTAGAGAAGCTGTTGGTACCAATTTACCTTTACAGCTAGGTTTTTCTACAGGTGTTAACCTAGTTGCTGTACCTACAGGTTATGTTGATACACCTAATAATACAGATTTTTCCAGAGTTAGTGCTAAACCACCGCCTGGAGATCAATTTAAACACCTCATACCACTTATGTACAAAGGACTTCCTTGGAATGTAGTGCGTATAAAGATTGTACAAATGTTAAGTGACACACTTAAAAATCTCTCTGACAGAGTCGTATTTGTCTTATGGGCACATGGCTTTGAGTTGACATCTATGAAGTATTTTGTGAAAATAGGACCTGAGCGCACCTGTTGTCTATGTGATAGACGTGCCACATGCTTTTCCACTGCTTCAGACACTTATGCCTGTTGGCATCATTCTATTGGATTTGATTACGTCTATAATCCGTTTATGATTGATGTTCAACAATGGGGTTTTACAGGTAACCTACAAAGCAACCATGATCTGTATTGTCAAGTCCATGGTAATGCACATGTAGCTAGTTGTGATGCAATCATGACTAGGTGTCTAGCTGTCCACGAGTGCTTTGTTAAGCGTGTTGACTGGACTATTGAATATCCTATAATTGGTGATGAACTGAAGATTAATGCGGCTTGTAGAAAGGTTCAACACATGGTTGTTAAAGCTGCATTATTAGCAGACAAATTCCCAGTTCTTCACGACATTGGTAACCCTAAAGCTATTAAGTGTGTACCTCAAGCTGATGTAGAATGGAAGTTCTATGATGCACAGCCTTGTAGTGACAAAGCTTATAAAATAGAAGAATTATTCTATTCTTATGCCACACATTCTGACAAATTCACAGATGGTGTATGCCTATTTTGGAATTGCAATGTCGATAGATATCCTGCTAATTCCATTGTTTGTAGATTTGACACTAGAGTGCTATCTAACCTTAACTTGCCTGGTTGTGATGGTGGCAGTTTGTATGTAAATAAACATGCATTCCACACACCAGCTTTTGATAAAAGTGCTTTTGTTAATTTAAAACAATTACCATTTTTCTATTACTCTGACAGTCCATGTGAGTCTCATGGAAAACAAGTAGTGTCAGATATAGATTATGTACCACTAAAGTCTGCTACGTGTATAACACGTTGCAATTTAGGTGGTGCTGTCTGTAGACATCATGCTAATGAGTACAGATTGTATCTCGATGCTTATAACATGATGATCTCAGCTGGCTTTAGCTTGTGGGTTTACAAACAATTTGATACTTATAACCTCTGGAACACTTTTACAAGACTTCAGAGTTTAGAAAATGTGGCTTTTAATGTTGTAAATAAGGGACACTTTGATGGACAACAGGGTGAAGTACCAGTTTCTATCATTAATAACACTGTTTACACAAAAGTTGATGGTGTTGATGTAGAATTGTTTGAAAATAAAACAACATTACCTGTTAATGTAGCATTTGAGCTTTGGGCTAAGCGCAACATTAAACCAGTACCAGAGGTGAAAATACTCAATAATTTGGGTGTGGACATTGCTGCTAATACTGTGATCTGGGACTACAAAAGAGATGCTCCAGCACATATATCTACTATTGGTGTTTGTTCTATGACTGACATAGCCAAGAAACCAACTGAAACGATTTGTGCACCACTCACTGTCTTTTTTGATGGTAGAGTTGATGGTCAAGTAGACTTATTTAGAAATGCCCGTAATGGTGTTCTTATTACAGAAGGTAGTGTTAAAGGTTTACAACCATCTGTAGGTCCCAAACAAGCTAGTCTTAATGGAGTCACATTAATTGGAGAAGCCGTAAAAACACAGTTCAATTATTATAAGAAAGTTGATGGTGTTGTCCAACAATTACCTGAAACTTACTTTACTCAGAGTAGAAATTTACAAGAATTTAAACCCAGGAGTCAAATGGAAATTGATTTCTTAGAATTAGCTATGGATGAATTCATTGAACGGTATAAATTAGAAGGCTATGCCTTCGAACATATCGTTTATGGAGATTTTAGTCATAGTCAGTTAGGTGGTTTACATCTACTGATTGGACTAGCTAAACGTTTTAAGGAATCACCTTTTGAATTAGAAGATTTTATTCCTATGGACAGTACAGTTAAAAACTATTTCATAACAGATGCGCAAACAGGTTCATCTAAGTGTGTGTGTTCTGTTATTGATTTATTACTTGATGATTTTGTTGAAATAATAAAATCCCAAGATTTATCTGTAGTTTCTAAGGTTGTCAAAGTGACTATTGACTATACAGAAATTTCATTTATGCTTTGGTGTAAAGATGGCCATGTAGAAACATTTTACCCAAAATTACAATCTAGTCAAGCGTGGCAACCGGGTGTTGCTATGCCTAATCTTTACAAAATGCAAAGAATGCTATTAGAAAAGTGTGACCTTCAAAATTATGGTGATAGTGCAACATTACCTAAAGGCATAATGATGAATGTCGCAAAATATACTCAACTGTGTCAATATTTAAACACATTAACATTAGCTGTACCCTATAATATGAGAGTTATACATTTTGGTGCTGGTTCTGATAAAGGAGTTGCACCAGGTACAGCTGTTTTAAGACAGTGGTTGCCTACGGGTACGCTGCTTGTCGATTCAGATCTTAATGACTTTGTCTCTGATGCAGATTCAACTTTGATTGGTGATTGTGCAACTGTACATACAGCTAATAAATGGGATCTCATTATTAGTGATATGTACGACCCTAAGACTAAAAATGTTACAAAAGAAAATGACTCTAAAGAGGGTTTTTTCACTTACATTTGTGGGTTTATACAACAAAAGCTAGCTCTTGGAGGTTCCGTGGCTATAAAGATAACAGAACATTCTTGGAATGCTGATCTTTATAAGCTCATGGGACACTTCGCATGGTGGACAGCCTTTGTTACTAATGTGAATGCGTCATCATCTGAAGCATTTTTAATTGGATGTAATTATCTTGGCAAACCACGCGAACAAATAGATGGTTATGTCATGCATGCAAATTACATATTTTGGAGGAATACAAATCCAATTCAGTTGTCTTCCTATTCTTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAAAGAAGGTCAAATCAATGATATGATTTTATCTCTTCTTAGTAAAGGTAGACTTATAATTAGAGAAAACAACAGAGTTGTTATTTCTAGTGATGTTCTTGTTAACAACTAAACGAACAATGTTTGTTTTTCTTGTTTTATTGCCACTAGTCTCTAGTCAGTGTGTTAATCTTACAACCAGAACTCAATTACCCCCTGCATACACTAATTCTTTCACACGTGGTGTTTATTACCCTGACAAAGTTTTCAGATCCTCAGTTTTACATTCAACTCAGGACTTGTTCTTACCTTTCTTTTCCAATGTTACTTGGTTCCATGCTATACATGTCTCTGGGACCAATGGTACTAAGAGGTTTGATAACCCTGTCCTACCATTTAATGATGGTGTTTATTTTGCTTCCACTGAGAAGTCTAACATAATAAGAGGCTGGATTTTTGGTACTACTTTAGATTCGAAGACCCAGTCCCTACTTATTGTTAATAACGCTACTAATGTTGTTATTAAAGTCTGTGAATTTCAATTTTGTAATGATCCATTTTTGGGTGTTTATTACCACAAAAACAACAAAAGTTGGATGGAAAGTGAGTTCAGAGTTTATTCTAGTGCGAATAATTGCACTTTTGAATATGTCTCTCAGCCTTTTCTTATGGACCTTGAAGGAAAACAGGGTAATTTCAAAAATCTTAGGGAATTTGTGTTTAAGAATATTGATGGTTATTTTAAAATATATTCTAAGCACACGCCTATTAATTTAGTGCGTGATCTCCCTCAGGGTTTTTCGGCTTTAGAACCATTGGTAGATTTGCCAATAGGTATTAACATCACTAGGTTTCAAACTTTACTTGCTTTACATAGAAGTTATTTGACTCCTGGTGATTCTTCTTCAGGTTGGACAGCTGGTGCTGCAGCTTATTATGTGGGTTATCTTCAACCTAGGACTTTTCTATTAAAATATAATGAAAATGGAACCATTACAGATGCTGTAGACTGTGCACTTGACCCTCTCTCAGAAACAAAGTGTACGTTGAAATCCTTCACTGTAGAAAAAGGAATCTATCAAACTTCTAACTTTAGAGTCCAACCAACAGAATCTATTGTTAGATTTCCTAATATTACAAACTTGTGCCCTTTTGGTGAAGTTTTTAACGCCACCAGATTTGCATCTGTTTATGCTTGGAACAGGAAGAGAATCAGCAACTGTGTTGCTGATTATTCTGTCCTATATAATTCCGCATCATTTTCCACTTTTAAGTGTTATGGAGTGTCTCCTACTAAATTAAATGATCTCTGCTTTACTAATGTCTATGCAGATTCATTTGTAATTAGAGGTGATGAAGTCAGACAAATCGCTCCAGGGCAAACTGGAAAGATTGCTGATTATAATTATAAATTACCAGATGATTTTACAGGCTGCGTTATAGCTTGGAATTCTAACAATCTTGATTCTAAGGTTGGTGGTAATTATAATTACCTGTATAGATTGTTTAGGAAGTCTAATCTCAAACCTTTTGAGAGAGATATTTCAACTGAAATCTATCAGGCCGGTAGCACACCTTGTAATGGTGTTGAAGGTTTTAATTGTTACTTTCCTTTACAATCATATGGTTTCCAACCCACTAATGGTGTTGGTTACCAACCATACAGAGTAGTAGTACTTTCTTTTGAACTTCTACATGCACCAGCAACTGTTTGTGGACCTAAAAAGTCTACTAATTTGGTTAAAAACAAATGTGTCAATTTCAACTTCAATGGTTTAACAGGCACAGGTGTTCTTACTGAGTCTAACAAAAAGTTTCTGCCTTTCCAACAATTTGGCAGAGACATTGCTGACACTACTGATGCTGTCCGTGATCCACAGACACTTGAGATTCTTGACATTACACCATGTTCTTTTGGTGGTGTCAGTGTTATAACACCAGGAACAAATACTTCTAACCAGGTTGCTGTTCTTTATCAGGATGTTAACTGCACAGAAGTCCCTGTTGCTATTCATGCAGATCAACTTACTCCTACTTGGCGTGTTTATTCTACAGGTTCTAATGTTTTTCAAACACGTGCAGGCTGTTTAATAGGGGCTGAACATGTCAACAACTCATATGAGTGTGACATACCCATTGGTGCAGGTATATGCGCTAGTTATCAGACTCAGACTAATTCTCCTCGGCGGGCACGTAGTGTAGCTAGTCAATCCATCATTGCCTACACTATGTCACTTGGTGCAGAAAATTCAGTTGCTTACTCTAATAACTCTATTGCCATACCCACAAATTTTACTATTAGTGTTACCACAGAAATTCTACCAGTGTCTATGACCAAGACATCAGTAGATTGTACAATGTACATTTGTGGTGATTCAACTGAATGCAGCAATCTTTTGTTGCAATATGGCAGTTTTTGTACACAATTAAACCGTGCTTTAACTGGAATAGCTGTTGAACAAGACAAAAACACCCAAGAAGTTTTTGCACAAGTCAAACAAATTTACAAAACACCACCAATTAAAGATTTTGGTGGTTTTAATTTTTCACAAATATTACCAGATCCATCAAAACCAAGCAAGAGGTCATTTATTGAAGATCTACTTTTCAACAAAGTGACACTTGCAGATGCTGGCTTCATCAAACAATATGGTGATTGCCTTGGTGATATTGCTGCTAGAGACCTCATTTGTGCACAAAAGTTTAACGGCCTTACTGTTTTGCCACCTTTGCTCACAGATGAAATGATTGCTCAATACACTTCTGCACTGTTAGCGGGTACAATCACTTCTGGTTGGACCTTTGGTGCAGGTGCTGCATTACAAATACCATTTGCTATGCAAATGGCTTATAGGTTTAATGGTATTGGAGTTACACAGAATGTTCTCTATGAGAACCAAAAATTGATTGCCAACCAATTTAATAGTGCTATTGGCAAAATTCAAGACTCACTTTCTTCCACAGCAAGTGCACTTGGAAAACTTCAAGATGTGGTCAACCAAAATGCACAAGCTTTAAACACGCTTGTTAAACAACTTAGCTCCAATTTTGGTGCAATTTCAAGTGTTTTAAATGATATCCTTTCACGTCTTGACAAAGTTGAGGCTGAAGTGCAAATTGATAGGTTGATCACAGGCAGACTTCAAAGTTTGCAGACATATGTGACTCAACAATTAATTAGAGCTGCAGAAATCAGAGCTTCTGCTAATCTTGCTGCTACTAAAATGTCAGAGTGTGTACTTGGACAATCAAAAAGAGTTGATTTTTGTGGAAAGGGCTATCATCTTATGTCCTTCCCTCAGTCAGCACCTCATGGTGTAGTCTTCTTGCATGTGACTTATGTCCCTGCACAAGAAAAGAACTTCACAACTGCTCCTGCCATTTGTCATGATGGAAAAGCACACTTTCCTCGTGAAGGTGTCTTTGTTTCAAATGGCACACACTGGTTTGTAACACAAAGGAATTTTTATGAACCACAAATCATTACTACAGACAACACATTTGTGTCTGGTAACTGTGATGTTGTAATAGGAATTGTCAACAACACAGTTTATGATCCTTTGCAACCTGAATTAGACTCATTCAAGGAGGAGTTAGATAAATATTTTAAGAATCATACATCACCAGATGTTGATTTAGGTGACATCTCTGGCATTAATGCTTCAGTTGTAAACATTCAAAAAGAAATTGACCGCCTCAATGAGGTTGCCAAGAATTTAAATGAATCTCTCATCGATCTCCAAGAACTTGGAAAGTATGAGCAGTATATAAAATGGCCATGGTACATTTGGCTAGGTTTTATAGCTGGCTTGATTGCCATAGTAATGGTGACAATTATGCTTTGCTGTATGACCAGTTGCTGTAGTTGTCTCAAGGGCTGTTGTTCTTGTGGATCCTGCTGCAAATTTGATGAAGACGACTCTGAGCCAGTGCTCAAAGGAGTCAAATTACATTACACATAAACGAACTTATGGATTTGTTTATGAGAATCTTCACAATTGGAACTGTAACTTTGAAGCAAGGTGAAATCAAGGATGCTACTCCTTCAGATTTTGTTCGCGCTACTGCAACGATACCGATACAAGCCTCACTCCCTTTCGGATGGCTTATTGTTGGCGTTGCACTTCTTGCTGTTTTTCAGAGCGCTTCCAAAATCATAACCCTCAAAAAGAGATGGCAACTAGCACTCTCCAAGGGTGTTCACTTTGTTTGCAACTTGCTGTTGTTGTTTGTAACAGTTTACTCACACCTTTTGCTCGTTGCTGCTGGCCTTGAAGCCCCTTTTCTCTATCTTTATGCTTTAGTCTACTTCTTGCAGAGTATAAACTTTGTAAGAATAATAATGAGGCTTTGGCTTTGCTGGAAATGCCGTTCCAAAAACCCATTACTTTATGATGCCAACTATTTTCTTTGCTGGCATACTAATTGTTACGACTATTGTATACCTTACAATAGTGTAACTTCTTCAATTGTCATTACTTCAGGTGATGGCACAACAAGTCCTATTTCTGAACATGACTACCAGATTGGTGGTTATACTGAAAAATGGGAATCTGGAGTAAAAGACTGTGTTGTATTACACAGTTACTTCACTTCAGACTATTACCAGCTGTACTCAACTCAATTGAGTACAGACACTGGTGTTGAACATGTTACCTTCTTCATCTACAATAAAATTGTTGATGAGCCTGAAGAACATGTCCAAATTCACACAATCGACGGTTCATCCGGAGTTGTTAATCCAGTAATGGAACCAATTTATGATGAACCGACGACGACTACTAGCGTGCCTTTGTAAGCACAAGCTGATGAGTACGAACTTATGTACTCATTCGTTTCGGAAGAGACAGGTACGTTAATAGTTAATAGCGTACTTCTTTTTCTTGCTTTCGTGGTATTCTTGCTAGTTACACTAGCCATCCTTACTGCGCTTCGATTGTGTGCGTACTGCTGCAATATTGTTAACGTGAGTCTTGTAAAACCTTCTTTTTACGTTTACTCTCGTGTTAAAAATCTGAATTCTTCTAGAGTTCCTGATCTTCTGGTCTAAACGAACTAAATATTATATTAGTTTTTCTGTTTGGAACTTTAATTTTAGCCATGGCAGATTCCAACGGTACTATTACCGTTGAAGAGCTTAAAAAGCTCCTTGAACAATGGAACCTAGTAATAGGTTTCCTATTCCTTACATGGATTTGTCTTCTACAATTTGCCTATGCCAACAGGAATAGGTTTTTGTATATAATTAAGTTAATTTTCCTCTGGCTGTTATGGCCAGTAACTTTAGCTTGTTTTGTGCTTGCTGCTGTTTACAGAATAAATTGGATCACCGGTGGAATTGCTATCGCAATGGCTTGTCTTGTAGGCTTGATGTGGCTCAGCTACTTCATTGCTTCTTTCAGACTGTTTGCGCGTACGCGTTCCATGTGGTCATTCAATCCAGAAACTAACATTCTTCTCAACGTGCCACTCCATGGCACTATTCTGACCAGACCGCTTCTAGAAAGTGAACTCGTAATCGGAGCTGTGATCCTTCGTGGACATCTTCGTATTGCTGGACACCATCTAGGACGCTGTGACATCAAGGACCTGCCTAAAGAAATCACTGTTGCTACATCACGAACGCTTTCTTATTACAAATTGGGAGCTTCGCAGCGTGTAGCAGGTGACTCAGGTTTTGCTGCATACAGTCGCTACAGGATTGGCAACTATAAATTAAACACAGACCATTCCAGTAGCAGTGACAATATTGCTTTGCTTGTACAGTAAGTGACAACAGATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAGTTTCCATTTGGAATCTTGATTACATCATAAACCTCATAATTAAAAATTTATCTAAGTCACTAACTGAGAATAAATATTCTCAATTAGATGAAGAGCAACCAATGGAGATTGATTAAACGAACATGAAAATTATTCTTTTCTTGGCACTGATAACACTCGCTACTTGTGAGCTTTATCACTACCAAGAGTGTGTTAGAGGTACAACAGTACTTTTAAAAGAACCTTGCTCTTCTGGAACATACGAGGGCAATTCACCATTTCATCCTCTAGCTGATAACAAATTTGCACTGACTTGCTTTAGCACTCAATTTGCTTTTGCTTGTCCTGACGGCGTAAAACACGTCTATCAGTTACGTGCCAGATCAGTTTCACCTAAACTGTTCATCAGACAAGAGGAAGTTCAAGAACTTTACTCTCCAATTTTTCTTATTGTTGCGGCAATAGTGTTTATAACACTTTGCTTCACACTCAAAAGAAAGACAGAATGATTGAACTTTCATTAATTGACTTCTATTTGTGCTTTTTAGCCTTTCTGCTATTCCTTGTTTTAATTATGCTTATTATCTTTTGGTTCTCACTTGAACTGCAAGATCATAATGAAACTTGTCACGCCTAAACGAACATGAAATTTCTTGTTTTCTTAGGAATCATCACAACTGTAGCTGCATTTCACCAAGAATGTAGTTTACAGTCATGTACTCAACATCAACCATATGTAGTTGATGACCCGTGTCCTATTCACTTCTATTCTAAATGGTATATTAGAGTAGGAGCTAGAAAATCAGCACCTTTAATTGAATTGTGCGTGGATGAGGCTGGTTCTAAATCACCCATTCAGTACATCGATATCGGTAATTATACAGTTTCCTGTTTACCTTTTACAATTAATTGCCAGGAACCTAAATTGGGTAGTCTTGTAGTGCGTTGTTCGTTCTATGAAGACTTTTTAGAGTATCATGACGTTCGTGTTGTTTTAGATTTCATCTAAACGAACAAACTAAAATGTCTGATAATGGACCCCAAAATCAGCGAAATGCACCCCGCATTACGTTTGGTGGACCCTCAGATTCAACTGGCAGTAACCAGAATGGAGAACGCAGTGGGGCGCGATCAAAACAACGTCGGCCCCAAGGTTTACCCAATAATACTGCGTCTTGGTTCACCGCTCTCACTCAACATGGCAAGGAAGACCTTAAATTCCCTCGAGGACAAGGCGTTCCAATTAACACCAATAGCAGTCCAGATGACCAAATTGGCTACTACCGAAGAGCTACCAGACGAATTCGTGGTGGTGACGGTAAAATGAAAGATCTCAGTCCAAGATGGTATTTCTACTACCTAGGAACTGGGCCAGAAGCTGGACTTCCCTATGGTGCTAACAAAGACGGCATCATATGGGTTGCAACTGAGGGAGCCTTGAATACACCAAAAGATCACATTGGCACCCGCAATCCTGCTAACAATGCTGCAATCGTGCTACAACTTCCTCAAGGAACAACATTGCCAAAAGGCTTCTACGCAGAAGGGAGCAGAGGCGGCAGTCAAGCCTCTTCTCGTTCCTCATCACGTAGTCGCAACAGTTCAAGAAATTCAACTCCAGGCAGCAGTAGGGGAACTTCTCCTGCTAGAATGGCTGGCAATGGCGGTGATGCTGCTCTTGCTTTGCTGCTGCTTGACAGATTGAACCAGCTTGAGAGCAAAATGTCTGGTAAAGGCCAACAACAACAAGGCCAAACTGTCACTAAGAAATCTGCTGCTGAGGCTTCTAAGAAGCCTCGGCAAAAACGTACTGCCACTAAAGCATACAATGTAACACAAGCTTTCGGCAGACGTGGTCCAGAACAAACCCAAGGAAATTTTGGGGACCAGGAACTAATCAGACAAGGAACTGATTACAAACATTGGCCGCAAATTGCACAATTTGCCCCCAGCGCTTCAGCGTTCTTCGGAATGTCGCGCATTGGCATGGAAGTCACACCTTCGGGAACGTGGTTGACCTACACAGGTGCCATCAAATTGGATGACAAAGATCCAAATTTCAAAGATCAAGTCATTTTGCTGAATAAGCATATTGACGCATACAAAACATTCCCACCAACAGAGCCTAAAAAGGACAAAAAGAAGAAGGCTGATGAAACTCAAGCCTTACCGCAGAGACAGAAGAAACAGCAAACTGTGACTCTTCTTCCTGCTGCAGATTTGGATGATTTCTCCAAACAATTGCAACAATCCATGAGCAGTGCTGACTCAACTCAGGCCTAAACTCATGCAGACCACACAAGGCAGATGGGCTATATAAACGTTTTCGCTTTTCCGTTTACGATATATAGTCTACTCTTGTGCAGAATGAATTCTCGTAACTACATAGCACAAGTAGATGTAGTTAACTTTAATCTCACATAGCAATCTTTAATCAGTGTGTAACATTAGGGAGGACTTGAAAGAGCCACCACATTTTCACCGAGGCCACGCGGAGTACGATCGAGTGTACAGTGAACAATGCTAGGGAGAGCTGCCTATATGGAAGAGCCCTAATGTGTAAAATTAATTTTAGTAGTGCTATCCCCATGTGATTTTAATAGCTTCTTAGGAGAATGACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

cov_index = 0
cov_len = len(seq)

class Raketa:

    def __init__(self, screen, rychlost=10):
        self.screen = screen
        # maximální šířka a vejška tý naší vobrazovky/terminálu v počtu znaků
        max_vyska, max_sirka = self.screen.getmaxyx()

        # počáteční iksová souřadnice bude náhodnej sloupek pět znaků vod vokraje
        # protože na vokraji ty výbuchy nebyly hezký protože nebyly vidět :D
        self.x = random.randint(argumenty.okraj, max_sirka - argumenty.okraj)

        # spodek vobrazovky má max hodnotu, vršek má navopak 0
        self.y = max_vyska - 1

        # vejška ve který rachejtle vybuchne
        # nejdřiv muže vybuchnout ve čtvrtině vejšky vobrazovky + nějaká náhoda
        self.vyska_kdy_bouchne = max_vyska // 4 + random.randint(0, max_vyska // 2)

        # rychlost jakou jako letí nahoru
        self.rychlost = rychlost

    # aktualizace proměnejch podle rozdílu času
    def aktualizace(self, dt):
        self.y -= self.rychlost * dt

    # vykreslení na vobrazovku
    def namalovat(self):
        # musíme souřadnice zavokrouhlit nebo převíst na int
        # float to papá nerado :D
        pos_y = int(round(self.y))
        # vykreslíme na vobrazovku tu raketu
        self.screen.addstr(pos_y, self.x, '|')

    # true/false jestli už je ve vejšce ve který muže bouchnout
    def bouchla(self):
        return self.y < self.vyska_kdy_bouchne


class Jiskra:

    def __init__(self, screen, pozice, smer, barva, rychlost=argumenty.rychlost, gravitace=argumenty.gravitace):

        self.screen = screen
        self.barva = barva

        self.x = pozice[0]
        self.y = pozice[1]
        self.smer_x = smer[0]
        self.smer_y = smer[1]
        self.rychlost = rychlost
        self.gravitace = gravitace

        global cov_index
        self.znak = seq[cov_index]
        cov_index += 1
        if cov_index == cov_len:
            cov_index = 0
            
    def namalovat(self):

        pos_x = int(round(self.x))
        pos_y = int(round(self.y))

        max_vyska, max_sirka = self.screen.getmaxyx()

        # kouknem jestli souřadnicema jakoby leží na vobrazovce jinak ji nemužem vykreslit
        if pos_x <= 0 or pos_y <= 0 or pos_x > max_sirka - 1 or pos_y >= max_vyska - 1:
            return

        
        # jestli mužem v týdle konzoli kreslit barevně vykreslíme s nějakou
        # moc hezkou barvičkou :D :D :D :D
        if curses.can_change_color():
            # všiměte si že voni to maj prohozený to iks s ipsilonem v těch souřadnicích než bejvá vobvyklý :O :O
            self.screen.addstr(pos_y, pos_x, self.znak, curses.color_pair(self.barva))
        else:
            self.screen.addstr(pos_y, pos_x, self.znak)

    def aktualizace(self, dt):

        self.x += self.smer_x * self.rychlost * dt
        self.y += self.smer_y * self.rychlost * dt

        # navíc přičtem efekt gravitace aby jakože pomaličku kařdým krokem letěly
        # ty jiskřičky víc dolu abyto bylo jakoby trošku víc realnější :D ;D
        self.y += self.gravitace * dt


class Vybuch:

    def __init__(self, screen, pozice, kolik_jiskricek, doba_trvani, barva):

        # doba trvání výbuchu rachejtle
        self.doba_trvani = doba_trvani
        # jednotlivý rachejtle v poli
        self.jiskry = []

        # smer jiskřiček z rachejtlí spočítáme sínusem a kosínusem noa nato
        # jakoby potřebujem znát úhel pod jakým jakoby vodlítaj vod středu výbuchu
        # ten určíme z dvě pí (jakoře jednou dokola nebo 360°) děleno počet jisker
        rust_uhlu = (math.pi * 2) / kolik_jiskricek
        for i in range(kolik_jiskricek):
            
            # kosínus/xová souřadnice je vynásobená dvouma aby to jakoby
            # kompenzovalo že znaky psaný v termiálu sou trošičku vyší než širší
            # bez tý kompenzace by to nedělalo kolečka ale jakože takový šišatý elipsy :D ;D
            smer = (math.cos(i * rust_uhlu) * 2, math.sin(i * rust_uhlu))

            # vyrobíme novej particle takový tý rachejtlový jiskry a skováme do pole
            jiskra = Jiskra(screen, pozice, smer, barva)
            self.jiskry.append(jiskra)

    def aktualizace(self, dt):

        # vodečtem dobu trvání
        self.doba_trvani -= dt
        # a aktualizujem všecky jiskry
        for jiskra in self.jiskry:
            jiskra.aktualizace(dt)

    def namalovat(self):
        # vykreslíme všecky jisrky
        for jiskra in self.jiskry:
            jiskra.namalovat()

    # jestli mu jetště jakoby zbejvá nějaká doba trvání :O :O
    def zije_este(self):
        return self.doba_trvani > 0


# funkce co strčíme do curses wrapperu
# ten argument 'stdscr' je instance vobrazovky/terminálu kterou nám řekne curses.wrapper
# do ni budem vykreslovat ty naše výbuchy a rachejtle ;D
def main(stdscr):
    rakety = []
    vybuchy = []

    # jestli mužem v terminálu měnit barvičky
    # tak si připravýme všecky možný
    if curses.can_change_color:
        curses.start_color()
        curses.use_default_colors()
        for i in range(0, curses.COLORS):
            # curses ukládá barvičky v párech voznačený/pomenovaný nenulovým indexem
            # pred použitím se musej inicializovat a přiřadit jim ten index
            # noa samotnej ten pár se zkládá z barvy textu a barvy pozadí taky voznačený číslem
            # první argument je index druhej barva textu a třetí barva pozadí
            curses.init_pair(i + 1, i, 0)

    # zneviditelníme kruzor
    # jinak by nám tam furt někde blikal černobíle
    curses.curs_set(0)

    # naplníme pole rachejtlí podle zadanýho počtu
    for i in range(argumenty.raket):
        raketa = Raketa(stdscr)
        rakety.append(raketa)

    
    # dokud nebude máčknutá nějaká klávesa budem střílet donebe rachejtlema
    # v curses funkce/metody pro čtení uživatelskýho vstupu ve výhozím nastavení dycky
    # čekaj než se jako něco zmáčkne a na tom by se nám to jakože zaseklo :O :/
    # takle to čekání mužem vypnout ;D
    stdscr.nodelay(1)
    
    # metoda getch() vrací máčknutej vstup z klávesnice
    # když neni žádnej dostupnej vrací -1
    while stdscr.getch() == -1:

        # vyčistíme vobrazovku
        stdscr.clear()

        for raketa in rakety:

            # jestli raketa bouchla tak ji vodstraníme z pole na její souřadnici vyrobíme novej výbuch a do polí 
            # raket dáme novou raketu. ekologisti si mužou třídu raket upravit tak aby se misto vodstraňování starý 
            # instance a vyrábění nový raketa recyklovala a 'teleportovala' nazačátek :D ;D 
            if raketa.bouchla():
                pozice = (raketa.x, raketa.y)
                rakety.remove(raketa)
                
                # barva jisker tohodletoho výbuchu
                barva = 255 # výchozí bílá
                
                # jestli jakoby máme zadanou paletu nějakou tak 
                # vyberem náhodnou barvu z ní
                # jinak náhodnou hodnotu z celýho možnýho rosahu
                if argumenty.paleta is not None:
                    barva = random.choice(argumenty.paleta)
                else:
                    barva = random.randint(0, 255)

                novy_vybuch = Vybuch(stdscr, pozice, random.randint(argumenty.jisker[0], argumenty.jisker[1]), argumenty.trvani_vybuchu, barva)
                vybuchy.append(novy_vybuch)

                nova_raketa = Raketa(stdscr)
                rakety.append(nova_raketa)
            else:
                raketa.aktualizace(argumenty.dt)
                raketa.namalovat()

        # podobně vykreslujem aktualizujem a vodstraňujem výbuchy
        for vybuch in vybuchy:
            if vybuch.zije_este():
                vybuch.aktualizace(argumenty.dt)
                vybuch.namalovat()
            else:
                vybuchy.remove(vybuch)

        # aktualizujem vobrazovku
        stdscr.refresh()

        # a počkáme nějakou dobu dt než uděláme další průběh while cyklu
        time.sleep(argumenty.dt)


# vyrobení wrapperu do kterýho se strká ta naše funkce
curses.wrapper(main)

stará originální verze

+- voriginální verze ze silvestra

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import curses
import time
import math
import random

# počet raket kolik jich jako chcem používat/vykreslovat
pocet_raket = 15

# doba mezi jednotlivejma krokama vykreslování
# vlastně jakoby znamená jak moc často/přesně chcem vykreslovat 
dt = 0.1


class Raketa:

    def __init__(self, screen, rychlost=10):
        self.screen = screen
        # maximální šířka a vejška tý naší vobrazovky/terminálu v počtu znaků
        max_vyska, max_sirka = self.screen.getmaxyx()

        # počáteční iksová souřadnice bude náhodnej sloupek pět znaků vod vokraje
        # protože na vokraji ty výbuchy nebyly hezký protože nebyly vidět :D
        self.x = random.randint(5, max_sirka - 5)

        # spodek vobrazovky má max hodnotu, vršek má navopak 0
        self.y = max_vyska - 1

        # vejška ve který rachejtle vybuchne
        # nejdřiv muže vybuchnout ve čtvrtině vejšky vobrazovky + nějaká náhoda
        self.vyska_kdy_bouchne = max_vyska // 4 + random.randint(0, max_vyska // 2)

        # rychlost jakou jako letí nahoru
        self.rychlost = rychlost

    # aktualizace proměnejch podle rozdílu času
    def aktualizace(self, dt):
        self.y -= self.rychlost * dt

    # vykreslení na vobrazovku
    def namalovat(self):
        # musíme souřadnice zavokrouhlit nebo převíst na int
        # float to papá nerado :D
        pos_y = int(round(self.y))
        # vykreslíme na vobrazovku tu raketu
        self.screen.addstr(pos_y, self.x, '|')

    # true/false jestli už je ve vejšce ve který muže bouchnout
    def bouchla(self):
        return self.y < self.vyska_kdy_bouchne


class Jiskra:

    def __init__(self, screen, pozice, smer, barva, rychlost=15, gravitace=10):

        self.screen = screen
        self.barva = barva

        self.x = pozice[0]
        self.y = pozice[1]
        self.smer_x = smer[0]
        self.smer_y = smer[1]
        self.rychlost = rychlost
        self.gravitace = gravitace

    def namalovat(self):

        pos_x = int(round(self.x))
        pos_y = int(round(self.y))

        max_vyska, max_sirka = self.screen.getmaxyx()

        # kouknem jestli souřadnicema jakoby leží na vobrazovce jinak ji nemužem vykreslit
        if pos_x <= 1 or pos_y <= 1 or pos_x >= max_sirka - 1 or pos_y >= max_vyska - 1:
            return

        # jestli mužem v týdle konzoli kreslit barevně vykreslíme s nějakou
        # moc hezkou barvičkou :D :D :D :D
        if curses.can_change_color():
            # všiměte si že voni to maj prohozený to iks s ipsilonem v těch souřadnicích než bejvá vobvyklý :O :O
            self.screen.addstr(pos_y, pos_x, '*', curses.color_pair(self.barva))
        else:
            self.screen.addstr(pos_y, pos_x, '*')

    def aktualizace(self, dt):

        self.x += self.smer_x * self.rychlost * dt
        self.y += self.smer_y * self.rychlost * dt

        # navíc přičtem efekt gravitace aby jakože pomaličku kařdým krokem letěly
        # ty jiskřičky víc dolu abyto bylo jakoby trošku víc realnější :D ;D
        self.y += self.gravitace * dt


class Vybuch:

    def __init__(self, screen, pozice, kolik_jiskricek, doba_trvani, barva):

        # doba trvání výbuchu rachejtle
        self.doba_trvani = doba_trvani
        # jednotlivý rachejtle v poli
        self.jiskry = []

        # smer jiskřiček z rachejtlí spočítáme sínusem a kosínusem noa nato
        # jakoby potřebujem znát úhel pod jakým jakoby vodlítaj vod středu výbuchu
        # ten určíme z dvě pí (jakoře jednou dokola nebo 360°) děleno počet jisker
        rust_uhlu = (math.pi * 2) / kolik_jiskricek
        for i in range(kolik_jiskricek):
            # kosínus/xová souřadnice je vynásobená dvouma aby to jakoby
            # kompenzovalo že znaky psaný v termiálu sou trošičku vyší než širší
            # bez tý kompenzace by to nedělalo kolečka ale jakože takový šišatý elipsy :D ;D
            smer = (math.cos(i * rust_uhlu) * 2, math.sin(i * rust_uhlu))

            # vyrobíme novej particle takový tý rachejtlový jiskry a skováme do pole
            jiskra = Jiskra(screen, pozice, smer, barva)
            self.jiskry.append(jiskra)

    def aktualizace(self, dt):

        # vodečtem dobu trvání
        self.doba_trvani -= dt
        # a aktualizujem všecky jiskry
        for jiskra in self.jiskry:
            jiskra.aktualizace(dt)

    def namalovat(self):
        # vykreslíme všecky jisrky
        for jiskra in self.jiskry:
            jiskra.namalovat()

    # jestli mu jetště jakoby zbejvá nějaká doba trvání :O :O
    def zije_este(self):
        return self.doba_trvani > 0


# funkce co strčíme do curses wrapperu
# ten argument 'stdscr' je instance vobrazovky/terminálu kterou nám řekne curses.wrapper
# do ni budem vykreslovat ty naše výbuchy a rachejtle ;D
def main(stdscr):
    rakety = []
    vybuchy = []

    # jestli mužem v terminálu měnit barvičky
    # tak si připravýme všecky možný
    if curses.can_change_color:
        curses.start_color()
        curses.use_default_colors()
        for i in range(0, curses.COLORS):
            # curses ukládá barvičky v párech voznačený/pomenovaný nenulovým indexem
            # pred použitím se musej inicializovat a přiřadit jim ten index
            # noa samotnej ten pár se zkládá z barvy textu a barvy pozadí taky voznačený číslem
            # první argument je index druhej barva textu a třetí barva pozadí
            curses.init_pair(i + 1, i, 0)

    # zneviditelníme kruzor
    # jinak by nám tam furt někde blikal černobíle
    curses.curs_set(0)

    # naplníme pole rachejtlí podle zadanýho počtu
    for i in range(pocet_raket):
        raketa = Raketa(stdscr)
        rakety.append(raketa)

    # dozblnutí budem střílet donebe rachejtlema
    # de zabít máčknutím ctrl+c
    while True:

        # vyčistíme vobrazovku
        stdscr.clear()

        for raketa in rakety:

            # jestli raketa bouchla tak ji vodstraníme z pole na její souřadnici vyrobíme novej výbuch a do polí 
            # raket dáme novou raketu. ekologisti si mužou třídu raket upravit tak aby se misto vodstraňování starý 
            # instance a vyrábění nový raketa recyklovala a 'teleportovala' nazačátek :D ;D 
            if raketa.bouchla():
                pozice = (raketa.x, raketa.y)
                rakety.remove(raketa)

                novy_vybuch = Vybuch(stdscr, pozice, random.randint(15, 50), 2, random.randint(0, 255))
                vybuchy.append(novy_vybuch)

                nova_raketa = Raketa(stdscr)
                rakety.append(nova_raketa)
            else:
                raketa.aktualizace(dt)
                raketa.namalovat()

        # podobně vykreslujem aktualizujem a vodstraňujem výbuchy
        for vybuch in vybuchy:
            if vybuch.zije_este():
                vybuch.aktualizace(dt)
                vybuch.namalovat()
            else:
                vybuchy.remove(vybuch)

        # aktualizujem vobrazovku
        stdscr.refresh()

        # a počkáme nějakou dobu dt než uděláme další průběh while cyklu
        time.sleep(dt)


# vyrobení wrapperu do kterýho se strká ta naše funkce
curses.wrapper(main)

       

Hodnocení: 88 %

        špatnédobré        

Obrázky

silvestrovskej vohňostroj za 5 minut dvanáct :D ;D, obrázek 1 silvestrovskej vohňostroj za 5 minut dvanáct :D ;D, obrázek 2

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Petr Fiedler avatar 1.1.2021 01:07 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin

Tobě taky!

Gréta avatar 1.1.2021 12:36 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Petr Fiedler avatar 1.1.2021 01:18 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin

Není poznat, v čem to je, protože tam chybí ten úvodní řádek. Je to v Pythonu?

1.1.2021 10:18 VoDo | skóre: 10 | blog: Archi3mini
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
No a pak ten bordel ma nekdo uprovavat, takovej developer by potreboval rakoskou pres prsty!
btw I use Archi3 :) Someday you will own nothing and be happy
Gréta avatar 1.1.2021 12:34 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Jendа avatar 1.1.2021 13:42 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Náhodou má +1 za komentáře a ukázku použití tříd.
xxxs avatar 1.1.2021 11:49 xxxs | skóre: 25 | blog: vetvicky
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin
sn@sn-pc:~$ /home/sn/gre

File "/home/sn/gre", line 8 SyntaxError: Non-ASCII character '\xc4' in file /home/sn/gre on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

sn@sn-pc:~$ /home/sn/gre

Traceback (most recent call last): File "/home/sn/gre", line 205, in <module> curses.wrapper(main) File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper return func(stdscr, *args, **kwds) File "/home/sn/gre", line 188, in main raketa.namalovat() File "/home/sn/gre", line 47, in namalovat self.screen.addstr(pos_y,self.x,'|') TypeError: integer argument expected, got float
Gréta avatar 1.1.2021 12:33 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

jak mam jako vědět že encoding se stahuje i na komenty aže round() nevrací int :D

btw v čems to jakoby kontroloval?? :O :O

xxxs avatar 1.1.2021 15:20 xxxs | skóre: 25 | blog: vetvicky
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
nekontroloval. iba som to spustil cez terminal. encoding som poriesil, ale pretypovanie uz bude pre mna bolestive.
xxxs avatar 1.1.2021 15:32 xxxs | skóre: 25 | blog: vetvicky
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
tak stacilo pred round vrazit int. nebolelo.
Jendа avatar 1.1.2021 13:40 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Je 2021, Python 2 už je opravdu pasé.
Gréta avatar 2.1.2021 15:24 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Bedňa avatar 1.1.2021 15:58 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin
Grétka to je úplne najvác COOL :-) Tak všetko najlepšie do roku 2021 aj tebe a místní verbeži.
KERNEL ULTRAS video channel >>>
Gréta avatar 2.1.2021 15:29 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

by mě zajímalo koho si jako takovej člověk neblokuje :D navíc vtom nevidim žádnej system je tam jirsák goldenfish ty miriam amiga a vubec kdekdo :O :O :D :D

Bedňa avatar 2.1.2021 19:03 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Proste vyberaná spoločnosť, tam sa len tak nedostaneš :-D
KERNEL ULTRAS video channel >>>
1.1.2021 23:57 User682 | skóre: 38 | blog: aqarium | Praha
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin
Ahoj Greto,

chtel bych ti poprat do noveho roku, aby jsi se naucila trochu lepe programovat nez jen par prikladu z adventofcode 2020 nebo ohnostroj.

Kdyz uz mi pises takovy krasny prani a prispevky do Novyho zde zde, tak se zkus zamyslet, zda ten typek, do kteryho rejes, neumi programovat nejen geometrii lepe nez Ty.

Myslim to uprimne od srdicka a chci Ti hodne pomoci jako Ty mne kdysi. Mozna to nevis, ale zatim toho moc neumis mimo prezentace na abicku. Na dfens-cz.com jsem videl, ze asi pujdes do zdravotnich dat okolo covid-u. Tam jsi nejak zapomela infaltilni mluvu. To asi budou nejaka big-data. Cago belo silenci....

Nezapomen to omluvit, ze umet dobre programovat neni dulezity a ze jsou dulezity lidsky vlastnosti. Fakta, co jsme tu vsichni videli na tech prikladech, nejsou dulezity.

Stastnej a veselej vsem mimo tyhle divny holcicky a mimo par jednotkam divnejch lidi tady na abicku.

gf
2.1.2021 09:33 user486
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Tak jsem se prospal, doplnil spankovy delficit, probudil do krasneho sobotniho jitra, vydatne nasnidal smazenych vajec na slanince, zapil silnou oslazenou cernou kavou se smetanou a vite Vy co? Vcerejsi trudomyslnost je tentam. Chtel bych se Vam omluvit za sve hrube chovani a take Vam vsem, bez rozdilu, poprat hodne stesti a veseli do noveho roku. A predevism pak Tobe, Greto. Vis, ja jenom velice nerad pozoruji, ze AbcL navzdory odhadum a ocekavani stale zije protoze to poukazuje na kruty fakt, ze LS padl jenom a pouze diky mym neodbornym zasahum a me neschopnosti a tedy problem nebyl ve zmene slozeni navstevniku nebo ze by se tento druh platformy prezil. A vsichni zdejsi hodni, mili a ochotni lide, mezi ktere se muzes hrde radit i Ty, me nejvice stvou a tajne je AbcL zavidim. Uvedomuji si, ze chyba je ve mne, ale nekdy se zkratka ve slabych nebo emocne vypjatych chvilkach neovladnu a dopada to takto trapne.

A take jsi se Svym textem az neuveritelne presne trefila do mych otevrenych ran. Stejne jako kazdy jiny rok, i letos jsem travil Silvestra o samote a moje jedina oslava Noveho roku se sestavala pouze z dojidani kupovanecho cukrovi a ze spusteni Tveho skriptu. Jestli muzes, tak mi prosim odpust a prijmi me dodatecne diky za uverejneni ohnostrojoveho skriptu, bez nej by byl muj Novy rok temer jako kazdy jiny den. Bylo to od Tebe vlastne velice hezke, ze sis na Silvestra vzpomnela na nas, osamocene duse, tak veselym a originalnim zpusobem. I kdyz jsem zatim jeste o maly chlup lepsi programatorem nez Ty brzy budes, tohle bych presto nikdy nedokazal vymyslit, ani kdyby mi za to nabizeli vsechny AMD tredrippry 3990x sveta. Ano, kdyby mi nekdo vypracovani ohnostrojoveho skriptu naridil nebo zadal jako ukol, pochopitelne bych s napsanim nemel zadny problem. Ale vymyslit neco podobneho sam? S moji fanasii nebo povestnym smyslem pro humor? Ani ve snu! Prijit s takovym milym napadem vyzaduje mnohem vice, nez byt jenom dobrym programatorem, za to Ti patri muj neskonaly obdiv.

Takze, jestli muzes, prijmi prosim ode me opozdene podekovani a hlavne omluvu.

gf

2.1.2021 10:12 User682 | skóre: 38 | blog: aqarium | Praha
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Opravte si prosim generator fake-news, at mate napriste presnejsi informace:

Vajicka po ranu temer nejim. Jsou na mne vcelku dost tezka.

Kavu a nekdy i silnou si dam parkrat do roka. Ale caj to neni.

S tim mnozstvim cukru bych to taky do te kavy nevidel.

Zbytek informaci uz je treba nekde vystourat na internetu.

Tak zase neco nekdy napiste... Treba ty zdrojaky budou po roce o neco lepsi. Precijenom od uprav HTML je ten Python dost pokrok.

gf
Gréta avatar 2.1.2021 15:32 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Gréta avatar 2.1.2021 15:30 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
5.1.2021 05:53 _
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
To je tragéd :D
Blaazen avatar 2.1.2021 00:02 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin
Doufám, že v tom skriptu není ukrytej nějakej koronavirus.
2.1.2021 13:17 kotrcka | skóre: 23 | blog: Onééé 2 | Praha
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Nie je, kontroloval som to. Ale na stožiare s 5G sa nedostanem, takže počítam že to bude šírené odtiaľ.
Keďže tu účet nejde zrušiť, zmenil som si heslo na random a "zabudol ho".
Gréta avatar 2.1.2021 16:13 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

víc vylepšená verze :D :D ;D ;D

jeto jakoby vopravdická nefalšovaná rna sekvence kovidu hele :O ;D

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import curses
import time
import math
import random

# počet raket kolik jich jako chem používat/vykreslovat
pocet_raket = 15

# doba mezi jednotlivejma krokama vykreslování
# vlastně jakoby znamená jak moc často/přesně chcem vykreslovat 
dt = 0.1

# covid :O :O :O :O
seq = 'ATTAAAGGTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGTAGATCTGTTCTCTAAACGAACTTTAAAATCTGTGTGGCTGTCACTCGGCTGCATGCTTAGTGCACTCACGCAGTATAATTAATAACTAATTACTGTCGTTGACAGGACACGAGTAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTCGTCCGGGTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTTACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAGATGGCACTTGTGGCTTAGTAGAAGTTGAAAAAGGCGTTTTGCCTCAACTTGAACAGCCCTATGTGTTCATCAAACGTTCGGATGCTCGAACTGCACCTCATGGTCATGTTATGGTTGAGCTGGTAGCAGAACTCGAAGGCATTCAGTACGGTCGTAGTGGTGAGACACTTGGTGTCCTTGTCCCTCATGTGGGCGAAATACCAGTGGCTTACCGCAAGGTTCTTCTTCGTAAGAACGGTAATAAAGGAGCTGGTGGCCATAGTTACGGCGCCGATCTAAAGTCATTTGACTTAGGCGACGAGCTTGGCACTGATCCTTATGAAGATTTTCAAGAAAACTGGAACACTAAACATAGCAGTGGTGTTACCCGTGAACTCATGCGTGAGCTTAACGGAGGGGCATACACTCGCTATGTCGATAACAACTTCTGTGGCCCTGATGGCTACCCTCTTGAGTGCATTAAAGACCTTCTAGCACGTGCTGGTAAAGCTTCATGCACTTTGTCCGAACAACTGGACTTTATTGACACTAAGAGGGGTGTATACTGCTGCCGTGAACATGAGCATGAAATTGCTTGGTACACGGAACGTTCTGAAAAGAGCTATGAATTGCAGACACCTTTTGAAATTAAATTGGCAAAGAAATTTGACACCTTCAATGGGGAATGTCCAAATTTTGTATTTCCCTTAAATTCCATAATCAAGACTATTCAACCAAGGGTTGAAAAGAAAAAGCTTGATGGCTTTATGGGTAGAATTCGATCTGTCTATCCAGTTGCGTCACCAAATGAATGCAACCAAATGTGCCTTTCAACTCTCATGAAGTGTGATCATTGTGGTGAAACTTCATGGCAGACGGGCGATTTTGTTAAAGCCACTTGCGAATTTTGTGGCACTGAGAATTTGACTAAAGAAGGTGCCACTACTTGTGGTTACTTACCCCAAAATGCTGTTGTTAAAATTTATTGTCCAGCATGTCACAATTCAGAAGTAGGACCTGAGCATAGTCTTGCCGAATACCATAATGAATCTGGCTTGAAAACCATTCTTCGTAAGGGTGGTCGCACTATTGCCTTTGGAGGCTGTGTGTTCTCTTATGTTGGTTGCCATAACAAGTGTGCCTATTGGGTTCCACGTGCTAGCGCTAACATAGGTTGTAACCATACAGGTGTTGTTGGAGAAGGTTCCGAAGGTCTTAATGACAACCTTCTTGAAATACTCCAAAAAGAGAAAGTCAACATCAATATTGTTGGTGACTTTAAACTTAATGAAGAGATCGCCATTATTTTGGCATCTTTTTCTGCTTCCACAAGTGCTTTTGTGGAAACTGTGAAAGGTTTGGATTATAAAGCATTCAAACAAATTGTTGAATCCTGTGGTAATTTTAAAGTTACAAAAGGAAAAGCTAAAAAAGGTGCCTGGAATATTGGTGAACAGAAATCAATACTGAGTCCTCTTTATGCATTTGCATCAGAGGCTGCTCGTGTTGTACGATCAATTTTCTCCCGCACTCTTGAAACTGCTCAAAATTCTGTGCGTGTTTTACAGAAGGCCGCTATAACAATACTAGATGGAATTTCACAGTATTCACTGAGACTCATTGATGCTATGATGTTCACATCTGATTTGGCTACTAACAATCTAGTTGTAATGGCCTACATTACAGGTGGTGTTGTTCAGTTGACTTCGCAGTGGCTAACTAACATCTTTGGCACTGTTTATGAAAAACTCAAACCCGTCCTTGATTGGCTTGAAGAGAAGTTTAAGGAAGGTGTAGAGTTTCTTAGAGACGGTTGGGAAATTGTTAAATTTATCTCAACCTGTGCTTGTGAAATTGTCGGTGGACAAATTGTCACCTGTGCAAAGGAAATTAAGGAGAGTGTTCAGACATTCTTTAAGCTTGTAAATAAATTTTTGGCTTTGTGTGCTGACTCTATCATTATTGGTGGAGCTAAACTTAAAGCCTTGAATTTAGGTGAAACATTTGTCACGCACTCAAAGGGATTGTACAGAAAGTGTGTTAAATCCAGAGAAGAAACTGGCCTACTCATGCCTCTAAAAGCCCCAAAAGAAATTATCTTCTTAGAGGGAGAAACACTTCCCACAGAAGTGTTAACAGAGGAAGTTGTCTTGAAAACTGGTGATTTACAACCATTAGAACAACCTACTAGTGAAGCTGTTGAAGCTCCATTGGTTGGTACACCAGTTTGTATTAACGGGCTTATGTTGCTCGAAATCAAAGACACAGAAAAGTACTGTGCCCTTGCACCTAATATGATGGTAACAAACAATACCTTCACACTCAAAGGCGGTGCACCAACAAAGGTTACTTTTGGTGATGACACTGTGATAGAAGTGCAAGGTTACAAGAGTGTGAATATCACTTTTGAACTTGATGAAAGGATTGATAAAGTACTTAATGAGAAGTGCTCTGCCTATACAGTTGAACTCGGTACAGAAGTAAATGAGTTCGCCTGTGTTGTGGCAGATGCTGTCATAAAAACTTTGCAACCAGTATCTGAATTACTTACACCACTGGGCATTGATTTAGATGAGTGGAGTATGGCTACATACTACTTATTTGATGAGTCTGGTGAGTTTAAATTGGCTTCACATATGTATTGTTCTTTCTACCCTCCAGATGAGGATGAAGAAGAAGGTGATTGTGAAGAAGAAGAGTTTGAGCCATCAACTCAATATGAGTATGGTACTGAAGATGATTACCAAGGTAAACCTTTGGAATTTGGTGCCACTTCTGCTGCTCTTCAACCTGAAGAAGAGCAAGAAGAAGATTGGTTAGATGATGATAGTCAACAAACTGTTGGTCAACAAGACGGCAGTGAGGACAATCAGACAACTACTATTCAAACAATTGTTGAGGTTCAACCTCAATTAGAGATGGAACTTACACCAGTTGTTCAGACTATTGAAGTGAATAGTTTTAGTGGTTATTTAAAACTTACTGACAATGTATACATTAAAAATGCAGACATTGTGGAAGAAGCTAAAAAGGTAAAACCAACAGTGGTTGTTAATGCAGCCAATGTTTACCTTAAACATGGAGGAGGTGTTGCAGGAGCCTTAAATAAGGCTACTAACAATGCCATGCAAGTTGAATCTGATGATTACATAGCTACTAATGGACCACTTAAAGTGGGTGGTAGTTGTGTTTTAAGCGGACACAATCTTGCTAAACACTGTCTTCATGTTGTCGGCCCAAATGTTAACAAAGGTGAAGACATTCAACTTCTTAAGAGTGCTTATGAAAATTTTAATCAGCACGAAGTTCTACTTGCACCATTATTATCAGCTGGTATTTTTGGTGCTGACCCTATACATTCTTTAAGAGTTTGTGTAGATACTGTTCGCACAAATGTCTACTTAGCTGTCTTTGATAAAAATCTCTATGACAAACTTGTTTCAAGCTTTTTGGAAATGAAGAGTGAAAAGCAAGTTGAACAAAAGATCGCTGAGATTCCTAAAGAGGAAGTTAAGCCATTTATAACTGAAAGTAAACCTTCAGTTGAACAGAGAAAACAAGATGATAAGAAAATCAAAGCTTGTGTTGAAGAAGTTACAACAACTCTGGAAGAAACTAAGTTCCTCACAGAAAACTTGTTACTTTATATTGACATTAATGGCAATCTTCATCCAGATTCTGCCACTCTTGTTAGTGACATTGACATCACTTTCTTAAAGAAAGATGCTCCATATATAGTGGGTGATGTTGTTCAAGAGGGTGTTTTAACTGCTGTGGTTATACCTACTAAAAAGGCTGGTGGCACTACTGAAATGCTAGCGAAAGCTTTGAGAAAAGTGCCAACAGACAATTATATAACCACTTACCCGGGTCAGGGTTTAAATGGTTACACTGTAGAGGAGGCAAAGACAGTGCTTAAAAAGTGTAAAAGTGCCTTTTACATTCTACCATCTATTATCTCTAATGAGAAGCAAGAAATTCTTGGAACTGTTTCTTGGAATTTGCGAGAAATGCTTGCACATGCAGAAGAAACACGCAAATTAATGCCTGTCTGTGTGGAAACTAAAGCCATAGTTTCAACTATACAGCGTAAATATAAGGGTATTAAAATACAAGAGGGTGTGGTTGATTATGGTGCTAGATTTTACTTTTACACCAGTAAAACAACTGTAGCGTCACTTATCAACACACTTAACGATCTAAATGAAACTCTTGTTACAATGCCACTTGGCTATGTAACACATGGCTTAAATTTGGAAGAAGCTGCTCGGTATATGAGATCTCTCAAAGTGCCAGCTACAGTTTCTGTTTCTTCACCTGATGCTGTTACAGCGTATAATGGTTATCTTACTTCTTCTTCTAAAACACCTGAAGAACATTTTATTGAAACCATCTCACTTGCTGGTTCCTATAAAGATTGGTCCTATTCTGGACAATCTACACAACTAGGTATAGAATTTCTTAAGAGAGGTGATAAAAGTGTATATTACACTAGTAATCCTACCACATTCCACCTAGATGGTGAAGTTATCACCTTTGACAATCTTAAGACACTTCTTTCTTTGAGAGAAGTGAGGACTATTAAGGTGTTTACAACAGTAGACAACATTAACCTCCACACGCAAGTTGTGGACATGTCAATGACATATGGACAACAGTTTGGTCCAACTTATTTGGATGGAGCTGATGTTACTAAAATAAAACCTCATAATTCACATGAAGGTAAAACATTTTATGTTTTACCTAATGATGACACTCTACGTGTTGAGGCTTTTGAGTACTACCACACAACTGATCCTAGTTTTCTGGGTAGGTACATGTCAGCATTAAATCACACTAAAAAGTGGAAATACCCACAAGTTAATGGTTTAACTTCTATTAAATGGGCAGATAACAACTGTTATCTTGCCACTGCATTGTTAACACTCCAACAAATAGAGTTGAAGTTTAATCCACCTGCTCTACAAGATGCTTATTACAGAGCAAGGGCTGGTGAAGCTGCTAACTTTTGTGCACTTATCTTAGCCTACTGTAATAAGACAGTAGGTGAGTTAGGTGATGTTAGAGAAACAATGAGTTACTTGTTTCAACATGCCAATTTAGATTCTTGCAAAAGAGTCTTGAACGTGGTGTGTAAAACTTGTGGACAACAGCAGACAACCCTTAAGGGTGTAGAAGCTGTTATGTACATGGGCACACTTTCTTATGAACAATTTAAGAAAGGTGTTCAGATACCTTGTACGTGTGGTAAACAAGCTACAAAATATCTAGTACAACAGGAGTCACCTTTTGTTATGATGTCAGCACCACCTGCTCAGTATGAACTTAAGCATGGTACATTTACTTGTGCTAGTGAGTACACTGGTAATTACCAGTGTGGTCACTATAAACATATAACTTCTAAAGAAACTTTGTATTGCATAGACGGTGCTTTACTTACAAAGTCCTCAGAATACAAAGGTCCTATTACGGATGTTTTCTACAAAGAAAACAGTTACACAACAACCATAAAACCAGTTACTTATAAATTGGATGGTGTTGTTTGTACAGAAATTGACCCTAAGTTGGACAATTATTATAAGAAAGACAATTCTTATTTCACAGAGCAACCAATTGATCTTGTACCAAACCAACCATATCCAAACGCAAGCTTCGATAATTTTAAGTTTGTATGTGATAATATCAAATTTGCTGATGATTTAAACCAGTTAACTGGTTATAAGAAACCTGCTTCAAGAGAGCTTAAAGTTACATTTTTCCCTGACTTAAATGGTGATGTGGTGGCTATTGATTATAAACACTACACACCCTCTTTTAAGAAAGGAGCTAAATTGTTACATAAACCTATTGTTTGGCATGTTAACAATGCAACTAATAAAGCCACGTATAAACCAAATACCTGGTGTATACGTTGTCTTTGGAGCACAAAACCAGTTGAAACATCAAATTCGTTTGATGTACTGAAGTCAGAGGACGCGCAGGGAATGGATAATCTTGCCTGCGAAGATCTAAAACCAGTCTCTGAAGAAGTAGTGGAAAATCCTACCATACAGAAAGACGTTCTTGAGTGTAATGTGAAAACTACCGAAGTTGTAGGAGACATTATACTTAAACCAGCAAATAATAGTTTAAAAATTACAGAAGAGGTTGGCCACACAGATCTAATGGCTGCTTATGTAGACAATTCTAGTCTTACTATTAAGAAACCTAATGAATTATCTAGAGTATTAGGTTTGAAAACCCTTGCTACTCATGGTTTAGCTGCTGTTAATAGTGTCCCTTGGGATACTATAGCTAATTATGCTAAGCCTTTTCTTAACAAAGTTGTTAGTACAACTACTAACATAGTTACACGGTGTTTAAACCGTGTTTGTACTAATTATATGCCTTATTTCTTTACTTTATTGCTACAATTGTGTACTTTTACTAGAAGTACAAATTCTAGAATTAAAGCATCTATGCCGACTACTATAGCAAAGAATACTGTTAAGAGTGTCGGTAAATTTTGTCTAGAGGCTTCATTTAATTATTTGAAGTCACCTAATTTTTCTAAACTGATAAATATTATAATTTGGTTTTTACTATTAAGTGTTTGCCTAGGTTCTTTAATCTACTCAACCGCTGCTTTAGGTGTTTTAATGTCTAATTTAGGCATGCCTTCTTACTGTACTGGTTACAGAGAAGGCTATTTGAACTCTACTAATGTCACTATTGCAACCTACTGTACTGGTTCTATACCTTGTAGTGTTTGTCTTAGTGGTTTAGATTCTTTAGACACCTATCCTTCTTTAGAAACTATACAAATTACCATTTCATCTTTTAAATGGGATTTAACTGCTTTTGGCTTAGTTGCAGAGTGGTTTTTGGCATATATTCTTTTCACTAGGTTTTTCTATGTACTTGGATTGGCTGCAATCATGCAATTGTTTTTCAGCTATTTTGCAGTACATTTTATTAGTAATTCTTGGCTTATGTGGTTAATAATTAATCTTGTACAAATGGCCCCGATTTCAGCTATGGTTAGAATGTACATCTTCTTTGCATCATTTTATTATGTATGGAAAAGTTATGTGCATGTTGTAGACGGTTGTAATTCATCAACTTGTATGATGTGTTACAAACGTAATAGAGCAACAAGAGTCGAATGTACAACTATTGTTAATGGTGTTAGAAGGTCCTTTTATGTCTATGCTAATGGAGGTAAAGGCTTTTGCAAACTACACAATTGGAATTGTGTTAATTGTGATACATTCTGTGCTGGTAGTACATTTATTAGTGATGAAGTTGCGAGAGACTTGTCACTACAGTTTAAAAGACCAATAAATCCTACTGACCAGTCTTCTTACATCGTTGATAGTGTTACAGTGAAGAATGGTTCCATCCATCTTTACTTTGATAAAGCTGGTCAAAAGACTTATGAAAGACATTCTCTCTCTCATTTTGTTAACTTAGACAACCTGAGAGCTAATAACACTAAAGGTTCATTGCCTATTAATGTTATAGTTTTTGATGGTAAATCAAAATGTGAAGAATCATCTGCAAAATCAGCGTCTGTTTACTACAGTCAGCTTATGTGTCAACCTATACTGTTACTAGATCAGGCATTAGTGTCTGATGTTGGTGATAGTGCGGAAGTTGCAGTTAAAATGTTTGATGCTTACGTTAATACGTTTTCATCAACTTTTAACGTACCAATGGAAAAACTCAAAACACTAGTTGCAACTGCAGAAGCTGAACTTGCAAAGAATGTGTCCTTAGACAATGTCTTATCTACTTTTATTTCAGCAGCTCGGCAAGGGTTTGTTGATTCAGATGTAGAAACTAAAGATGTTGTTGAATGTCTTAAATTGTCACATCAATCTGACATAGAAGTTACTGGCGATAGTTGTAATAACTATATGCTCACCTATAACAAAGTTGAAAACATGACACCCCGTGACCTTGGTGCTTGTATTGACTGTAGTGCGCGTCATATTAATGCGCAGGTAGCAAAAAGTCACAACATTGCTTTGATATGGAACGTTAAAGATTTCATGTCATTGTCTGAACAACTACGAAAACAAATACGTAGTGCTGCTAAAAAGAATAACTTACCTTTTAAGTTGACATGTGCAACTACTAGACAAGTTGTTAATGTTGTAACAACAAAGATAGCACTTAAGGGTGGTAAAATTGTTAATAATTGGTTGAAGCAGTTAATTAAAGTTACACTTGTGTTCCTTTTTGTTGCTGCTATTTTCTATTTAATAACACCTGTTCATGTCATGTCTAAACATACTGACTTTTCAAGTGAAATCATAGGATACAAGGCTATTGATGGTGGTGTCACTCGTGACATAGCATCTACAGATACTTGTTTTGCTAACAAACATGCTGATTTTGACACATGGTTTAGCCAGCGTGGTGGTAGTTATACTAATGACAAAGCTTGCCCATTGATTGCTGCAGTCATAACAAGAGAAGTGGGTTTTGTCGTGCCTGGTTTGCCTGGCACGATATTACGCACAACTAATGGTGACTTTTTGCATTTCTTACCTAGAGTTTTTAGTGCAGTTGGTAACATCTGTTACACACCATCAAAACTTATAGAGTACACTGACTTTGCAACATCAGCTTGTGTTTTGGCTGCTGAATGTACAATTTTTAAAGATGCTTCTGGTAAGCCAGTACCATATTGTTATGATACCAATGTACTAGAAGGTTCTGTTGCTTATGAAAGTTTACGCCCTGACACACGTTATGTGCTCATGGATGGCTCTATTATTCAATTTCCTAACACCTACCTTGAAGGTTCTGTTAGAGTGGTAACAACTTTTGATTCTGAGTACTGTAGGCACGGCACTTGTGAAAGATCAGAAGCTGGTGTTTGTGTATCTACTAGTGGTAGATGGGTACTTAACAATGATTATTACAGATCTTTACCAGGAGTTTTCTGTGGTGTAGATGCTGTAAATTTACTTACTAATATGTTTACACCACTAATTCAACCTATTGGTGCTTTGGACATATCAGCATCTATAGTAGCTGGTGGTATTGTAGCTATCGTAGTAACATGCCTTGCCTACTATTTTATGAGGTTTAGAAGAGCTTTTGGTGAATACAGTCATGTAGTTGCCTTTAATACTTTACTATTCCTTATGTCATTCACTGTACTCTGTTTAACACCAGTTTACTCATTCTTACCTGGTGTTTATTCTGTTATTTACTTGTACTTGACATTTTATCTTACTAATGATGTTTCTTTTTTAGCACATATTCAGTGGATGGTTATGTTCACACCTTTAGTACCTTTCTGGATAACAATTGCTTATATCATTTGTATTTCCACAAAGCATTTCTATTGGTTCTTTAGTAATTACCTAAAGAGACGTGTAGTCTTTAATGGTGTTTCCTTTAGTACTTTTGAAGAAGCTGCGCTGTGCACCTTTTTGTTAAATAAAGAAATGTATCTAAAGTTGCGTAGTGATGTGCTATTACCTCTTACGCAATATAATAGATACTTAGCTCTTTATAATAAGTACAAGTATTTTAGTGGAGCAATGGATACAACTAGCTACAGAGAAGCTGCTTGTTGTCATCTCGCAAAGGCTCTCAATGACTTCAGTAACTCAGGTTCTGATGTTCTTTACCAACCACCACAAACCTCTATCACCTCAGCTGTTTTGCAGAGTGGTTTTAGAAAAATGGCATTCCCATCTGGTAAAGTTGAGGGTTGTATGGTACAAGTAACTTGTGGTACAACTACACTTAACGGTCTTTGGCTTGATGACGTAGTTTACTGTCCAAGACATGTGATCTGCACCTCTGAAGACATGCTTAACCCTAATTATGAAGATTTACTCATTCGTAAGTCTAATCATAATTTCTTGGTACAGGCTGGTAATGTTCAACTCAGGGTTATTGGACATTCTATGCAAAATTGTGTACTTAAGCTTAAGGTTGATACAGCCAATCCTAAGACACCTAAGTATAAGTTTGTTCGCATTCAACCAGGACAGACTTTTTCAGTGTTAGCTTGTTACAATGGTTCACCATCTGGTGTTTACCAATGTGCTATGAGGCCCAATTTCACTATTAAGGGTTCATTCCTTAATGGTTCATGTGGTAGTGTTGGTTTTAACATAGATTATGACTGTGTCTCTTTTTGTTACATGCACCATATGGAATTACCAACTGGAGTTCATGCTGGCACAGACTTAGAAGGTAACTTTTATGGACCTTTTGTTGACAGGCAAACAGCACAAGCAGCTGGTACGGACACAACTATTACAGTTAATGTTTTAGCTTGGTTGTACGCTGCTGTTATAAATGGAGACAGGTGGTTTCTCAATCGATTTACCACAACTCTTAATGACTTTAACCTTGTGGCTATGAAGTACAATTATGAACCTCTAACACAAGACCATGTTGACATACTAGGACCTCTTTCTGCTCAAACTGGAATTGCCGTTTTAGATATGTGTGCTTCATTAAAAGAATTACTGCAAAATGGTATGAATGGACGTACCATATTGGGTAGTGCTTTATTAGAAGATGAATTTACACCTTTTGATGTTGTTAGACAATGCTCAGGTGTTACTTTCCAAAGTGCAGTGAAAAGAACAATCAAGGGTACACACCACTGGTTGTTACTCACAATTTTGACTTCACTTTTAGTTTTAGTCCAGAGTACTCAATGGTCTTTGTTCTTTTTTTTGTATGAAAATGCCTTTTTACCTTTTGCTATGGGTATTATTGCTATGTCTGCTTTTGCAATGATGTTTGTCAAACATAAGCATGCATTTCTCTGTTTGTTTTTGTTACCTTCTCTTGCCACTGTAGCTTATTTTAATATGGTCTATATGCCTGCTAGTTGGGTGATGCGTATTATGACATGGTTGGATATGGTTGATACTAGTTTGTCTGGTTTTAAGCTAAAAGACTGTGTTATGTATGCATCAGCTGTAGTGTTACTAATCCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTCTAACTACTCAGGTGTAGTTACAACTGTCATGTTTTTGGCCAGAGGTATTGTTTTTATGTGTGTTGAGTATTGCCCTATTTTCTTCATAACTGGTAATACACTTCAGTGTATAATGCTAGTTTATTGTTTCTTAGGCTATTTTTGTACTTGTTACTTTGGCCTCTTTTGTTTACTCAACCGCTACTTTAGACTGACTCTTGGTGTTTATGATTACTTAGTTTCTACACAGGAGTTTAGATATATGAATTCACAGGGACTACTCCCACCCAAGAATAGCATAGATGCCTTCAAACTCAACATTAAATTGTTGGGTGTTGGTGGCAAACCTTGTATCAAAGTAGCCACTGTACAGTCTAAAATGTCAGATGTAAAGTGCACATCAGTAGTCTTACTCTCAGTTTTGCAACAACTCAGAGTAGAATCATCATCTAAATTGTGGGCTCAATGTGTCCAGTTACACAATGACATTCTCTTAGCTAAAGATACTACTGAAGCCTTTGAAAAAATGGTTTCACTACTTTCTGTTTTGCTTTCCATGCAGGGTGCTGTAGACATAAACAAGCTTTGTGAAGAAATGCTGGACAACAGGGCAACCTTACAAGCTATAGCCTCAGAGTTTAGTTCCCTTCCATCATATGCAGCTTTTGCTACTGCTCAAGAAGCTTATGAGCAGGCTGTTGCTAATGGTGATTCTGAAGTTGTTCTTAAAAAGTTGAAGAAGTCTTTGAATGTGGCTAAATCTGAATTTGACCGTGATGCAGCCATGCAACGTAAGTTGGAAAAGATGGCTGATCAAGCTATGACCCAAATGTATAAACAGGCTAGATCTGAGGACAAGAGGGCAAAAGTTACTAGTGCTATGCAGACAATGCTTTTCACTATGCTTAGAAAGTTGGATAATGATGCACTCAACAACATTATCAACAATGCAAGAGATGGTTGTGTTCCCTTGAACATAATACCTCTTACAACAGCAGCCAAACTAATGGTTGTCATACCAGACTATAACACATATAAAAATACGTGTGATGGTACAACATTTACTTATGCATCAGCATTGTGGGAAATCCAACAGGTTGTAGATGCAGATAGTAAAATTGTTCAACTTAGTGAAATTAGTATGGACAATTCACCTAATTTAGCATGGCCTCTTATTGTAACAGCTTTAAGGGCCAATTCTGCTGTCAAATTACAGAATAATGAGCTTAGTCCTGTTGCACTACGACAGATGTCTTGTGCTGCCGGTACTACACAAACTGCTTGCACTGATGACAATGCGTTAGCTTACTACAACACAACAAAGGGAGGTAGGTTTGTACTTGCACTGTTATCCGATTTACAGGATTTGAAATGGGCTAGATTCCCTAAGAGTGATGGAACTGGTACTATCTATACAGAACTGGAACCACCTTGTAGGTTTGTTACAGACACACCTAAAGGTCCTAAAGTGAAGTATTTATACTTTATTAAAGGATTAAACAACCTAAATAGAGGTATGGTACTTGGTAGTTTAGCTGCCACAGTACGTCTACAAGCTGGTAATGCAACAGAAGTGCCTGCCAATTCAACTGTATTATCTTTCTGTGCTTTTGCTGTAGATGCTGCTAAAGCTTACAAAGATTATCTAGCTAGTGGGGGACAACCAATCACTAATTGTGTTAAGATGTTGTGTACACACACTGGTACTGGTCAGGCAATAACAGTTACACCGGAAGCCAATATGGATCAAGAATCCTTTGGTGGTGCATCGTGTTGTCTGTACTGCCGTTGCCACATAGATCATCCAAATCCTAAAGGATTTTGTGACTTAAAAGGTAAGTATGTACAAATACCTACAACTTGTGCTAATGACCCTGTGGGTTTTACACTTAAAAACACAGTCTGTACCGTCTGCGGTATGTGGAAAGGTTATGGCTGTAGTTGTGATCAACTCCGCGAACCCATGCTTCAGTCAGCTGATGCACAATCGTTTTTAAACGGGTTTGCGGTGTAAGTGCAGCCCGTCTTACACCGTGCGGCACAGGCACTAGTACTGATGTCGTATACAGGGCTTTTGACATCTACAATGATAAAGTAGCTGGTTTTGCTAAATTCCTAAAAACTAATTGTTGTCGCTTCCAAGAAAAGGACGAAGATGACAATTTAATTGATTCTTACTTTGTAGTTAAGAGACACACTTTCTCTAACTACCAACATGAAGAAACAATTTATAATTTACTTAAGGATTGTCCAGCTGTTGCTAAACATGACTTCTTTAAGTTTAGAATAGACGGTGACATGGTACCACATATATCACGTCAACGTCTTACTAAATACACAATGGCAGACCTCGTCTATGCTTTAAGGCATTTTGATGAAGGTAATTGTGACACATTAAAAGAAATACTTGTCACATACAATTGTTGTGATGATGATTATTTCAATAAAAAGGACTGGTATGATTTTGTAGAAAACCCAGATATATTACGCGTATACGCCAACTTAGGTGAACGTGTACGCCAAGCTTTGTTAAAAACAGTACAATTCTGTGATGCCATGCGAAATGCTGGTATTGTTGGTGTACTGACATTAGATAATCAAGATCTCAATGGTAACTGGTATGATTTCGGTGATTTCATACAAACCACGCCAGGTAGTGGAGTTCCTGTTGTAGATTCTTATTATTCATTGTTAATGCCTATATTAACCTTGACCAGGGCTTTAACTGCAGAGTCACATGTTGACACTGACTTAACAAAGCCTTACATTAAGTGGGATTTGTTAAAATATGACTTCACGGAAGAGAGGTTAAAACTCTTTGACCGTTATTTTAAATATTGGGATCAGACATACCACCCAAATTGTGTTAACTGTTTGGATGACAGATGCATTCTGCATTGTGCAAACTTTAATGTTTTATTCTCTACAGTGTTCCCACCTACAAGTTTTGGACCACTAGTGAGAAAAATATTTGTTGATGGTGTTCCATTTGTAGTTTCAACTGGATACCACTTCAGAGAGCTAGGTGTTGTACATAATCAGGATGTAAACTTACATAGCTCTAGACTTAGTTTTAAGGAATTACTTGTGTATGCTGCTGACCCTGCTATGCACGCTGCTTCTGGTAATCTATTACTAGATAAACGCACTACGTGCTTTTCAGTAGCTGCACTTACTAACAATGTTGCTTTTCAAACTGTCAAACCCGGTAATTTTAACAAAGACTTCTATGACTTTGCTGTGTCTAAGGGTTTCTTTAAGGAAGGAAGTTCTGTTGAATTAAAACACTTCTTCTTTGCTCAGGATGGTAATGCTGCTATCAGCGATTATGACTACTATCGTTATAATCTACCAACAATGTGTGATATCAGACAACTACTATTTGTAGTTGAAGTTGTTGATAAGTACTTTGATTGTTACGATGGTGGCTGTATTAATGCTAACCAAGTCATCGTCAACAACCTAGACAAATCAGCTGGTTTTCCATTTAATAAATGGGGTAAGGCTAGACTTTATTATGATTCAATGAGTTATGAGGATCAAGATGCACTTTTCGCATATACAAAACGTAATGTCATCCCTACTATAACTCAAATGAATCTTAAGTATGCCATTAGTGCAAAGAATAGAGCTCGCACCGTAGCTGGTGTCTCTATCTGTAGTACTATGACCAATAGACAGTTTCATCAAAAATTATTGAAATCAATAGCCGCCACTAGAGGAGCTACTGTAGTAATTGGAACAAGCAAATTCTATGGTGGTTGGCACAACATGTTAAAAACTGTTTATAGTGATGTAGAAAACCCTCACCTTATGGGTTGGGATTATCCTAAATGTGATAGAGCCATGCCTAACATGCTTAGAATTATGGCCTCACTTGTTCTTGCTCGCAAACATACAACGTGTTGTAGCTTGTCACACCGTTTCTATAGATTAGCTAATGAGTGTGCTCAAGTATTGAGTGAAATGGTCATGTGTGGCGGTTCACTATATGTTAAACCAGGTGGAACCTCATCAGGAGATGCCACAACTGCTTATGCTAATAGTGTTTTTAACATTTGTCAAGCTGTCACGGCCAATGTTAATGCACTTTTATCTACTGATGGTAACAAAATTGCCGATAAGTATGTCCGCAATTTACAACACAGACTTTATGAGTGTCTCTATAGAAATAGAGATGTTGACACAGACTTTGTGAATGAGTTTTACGCATATTTGCGTAAACATTTCTCAATGATGATACTCTCTGACGATGCTGTTGTGTGTTTCAATAGCACTTATGCATCTCAAGGTCTAGTGGCTAGCATAAAGAACTTTAAGTCAGTTCTTTATTATCAAAACAATGTTTTTATGTCTGAAGCAAAATGTTGGACTGAGACTGACCTTACTAAAGGACCTCATGAATTTTGCTCTCAACATACAATGCTAGTTAAACAGGGTGATGATTATGTGTACCTTCCTTACCCAGATCCATCAAGAATCCTAGGGGCCGGCTGTTTTGTAGATGATATCGTAAAAACAGATGGTACACTTATGATTGAACGGTTCGTGTCTTTAGCTATAGATGCTTACCCACTTACTAAACATCCTAATCAGGAGTATGCTGATGTCTTTCATTTGTACTTACAATACATAAGAAAGCTACATGATGAGTTAACAGGACACATGTTAGACATGTATTCTGTTATGCTTACTAATGATAACACTTCAAGGTATTGGGAACCTGAGTTTTATGAGGCTATGTACACACCGCATACAGTCTTACAGGCTGTTGGGGCTTGTGTTCTTTGCAATTCACAGACTTCATTAAGATGTGGTGCTTGCATACGTAGACCATTCTTATGTTGTAAATGCTGTTACGACCATGTCATATCAACATCACATAAATTAGTCTTGTCTGTTAATCCGTATGTTTGCAATGCTCCAGGTTGTGATGTCACAGATGTGACTCAACTTTACTTAGGAGGTATGAGCTATTATTGTAAATCACATAAACCACCCATTAGTTTTCCATTGTGTGCTAATGGACAAGTTTTTGGTTTATATAAAAATACATGTGTTGGTAGCGATAATGTTACTGACTTTAATGCAATTGCAACATGTGACTGGACAAATGCTGGTGATTACATTTTAGCTAACACCTGTACTGAAAGACTCAAGCTTTTTGCAGCAGAAACGCTCAAAGCTACTGAGGAGACATTTAAACTGTCTTATGGTATTGCTACTGTACGTGAAGTGCTGTCTGACAGAGAATTACATCTTTCATGGGAAGTTGGTAAACCTAGACCACCACTTAACCGAAATTATGTCTTTACTGGTTATCGTGTAACTAAAAACAGTAAAGTACAAATAGGAGAGTACACCTTTGAAAAAGGTGACTATGGTGATGCTGTTGTTTACCGAGGTACAACAACTTACAAATTAAATGTTGGTGATTATTTTGTGCTGACATCACATACAGTAATGCCATTAAGTGCACCTACACTAGTGCCACAAGAGCACTATGTTAGAATTACTGGCTTATACCCAACACTCAATATCTCAGATGAGTTTTCTAGCAATGTTGCAAATTATCAAAAGGTTGGTATGCAAAAGTATTCTACACTCCAGGGACCACCTGGTACTGGTAAGAGTCATTTTGCTATTGGCCTAGCTCTCTACTACCCTTCTGCTCGCATAGTGTATACAGCTTGCTCTCATGCCGCTGTTGATGCACTATGTGAGAAGGCATTAAAATATTTGCCTATAGATAAATGTAGTAGAATTATACCTGCACGTGCTCGTGTAGAGTGTTTTGATAAATTCAAAGTGAATTCAACATTAGAACAGTATGTCTTTTGTACTGTAAATGCATTGCCTGAGACGACAGCAGATATAGTTGTCTTTGATGAAATTTCAATGGCCACAAATTATGATTTGAGTGTTGTCAATGCCAGATTACGTGCTAAGCACTATGTGTACATTGGCGACCCTGCTCAATTACCTGCACCACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTGCTGAAATTGTTGACACTGTGAGTGCTTTGGTTTATGATAATAAGCTTAAAGCACATAAAGACAAATCAGCTCAATGCTTTAAAATGTTTTATAAGGGTGTTATCACGCATGATGTTTCATCTGCAATTAACAGGCCACAAATAGGCGTGGTAAGAGAATTCCTTACACGTAACCCTGCTTGGAGAAAAGCTGTCTTTATTTCACCTTATAATTCACAGAATGCTGTAGCCTCAAAGATTTTGGGACTACCAACTCAAACTGTTGATTCATCACAGGGCTCAGAATATGACTATGTCATATTCACTCAAACCACTGAAACAGCTCACTCTTGTAATGTAAACAGATTTAATGTTGCTATTACCAGAGCAAAAGTAGGCATACTTTGCATAATGTCTGATAGAGACCTTTATGACAAGTTGCAATTTACAAGTCTTGAAATTCCACGTAGGAATGTGGCAACTTTACAAGCTGAAAATGTAACAGGACTCTTTAAAGATTGTAGTAAGGTAATCACTGGGTTACATCCTACACAGGCACCTACACACCTCAGTGTTGACACTAAATTCAAAACTGAAGGTTTATGTGTTGACATACCTGGCATACCTAAGGACATGACCTATAGAAGACTCATCTCTATGATGGGTTTTAAAATGAATTATCAAGTTAATGGTTACCCTAACATGTTTATCACCCGCGAAGAAGCTATAAGACATGTACGTGCATGGATTGGCTTCGATGTCGAGGGGTGTCATGCTACTAGAGAAGCTGTTGGTACCAATTTACCTTTACAGCTAGGTTTTTCTACAGGTGTTAACCTAGTTGCTGTACCTACAGGTTATGTTGATACACCTAATAATACAGATTTTTCCAGAGTTAGTGCTAAACCACCGCCTGGAGATCAATTTAAACACCTCATACCACTTATGTACAAAGGACTTCCTTGGAATGTAGTGCGTATAAAGATTGTACAAATGTTAAGTGACACACTTAAAAATCTCTCTGACAGAGTCGTATTTGTCTTATGGGCACATGGCTTTGAGTTGACATCTATGAAGTATTTTGTGAAAATAGGACCTGAGCGCACCTGTTGTCTATGTGATAGACGTGCCACATGCTTTTCCACTGCTTCAGACACTTATGCCTGTTGGCATCATTCTATTGGATTTGATTACGTCTATAATCCGTTTATGATTGATGTTCAACAATGGGGTTTTACAGGTAACCTACAAAGCAACCATGATCTGTATTGTCAAGTCCATGGTAATGCACATGTAGCTAGTTGTGATGCAATCATGACTAGGTGTCTAGCTGTCCACGAGTGCTTTGTTAAGCGTGTTGACTGGACTATTGAATATCCTATAATTGGTGATGAACTGAAGATTAATGCGGCTTGTAGAAAGGTTCAACACATGGTTGTTAAAGCTGCATTATTAGCAGACAAATTCCCAGTTCTTCACGACATTGGTAACCCTAAAGCTATTAAGTGTGTACCTCAAGCTGATGTAGAATGGAAGTTCTATGATGCACAGCCTTGTAGTGACAAAGCTTATAAAATAGAAGAATTATTCTATTCTTATGCCACACATTCTGACAAATTCACAGATGGTGTATGCCTATTTTGGAATTGCAATGTCGATAGATATCCTGCTAATTCCATTGTTTGTAGATTTGACACTAGAGTGCTATCTAACCTTAACTTGCCTGGTTGTGATGGTGGCAGTTTGTATGTAAATAAACATGCATTCCACACACCAGCTTTTGATAAAAGTGCTTTTGTTAATTTAAAACAATTACCATTTTTCTATTACTCTGACAGTCCATGTGAGTCTCATGGAAAACAAGTAGTGTCAGATATAGATTATGTACCACTAAAGTCTGCTACGTGTATAACACGTTGCAATTTAGGTGGTGCTGTCTGTAGACATCATGCTAATGAGTACAGATTGTATCTCGATGCTTATAACATGATGATCTCAGCTGGCTTTAGCTTGTGGGTTTACAAACAATTTGATACTTATAACCTCTGGAACACTTTTACAAGACTTCAGAGTTTAGAAAATGTGGCTTTTAATGTTGTAAATAAGGGACACTTTGATGGACAACAGGGTGAAGTACCAGTTTCTATCATTAATAACACTGTTTACACAAAAGTTGATGGTGTTGATGTAGAATTGTTTGAAAATAAAACAACATTACCTGTTAATGTAGCATTTGAGCTTTGGGCTAAGCGCAACATTAAACCAGTACCAGAGGTGAAAATACTCAATAATTTGGGTGTGGACATTGCTGCTAATACTGTGATCTGGGACTACAAAAGAGATGCTCCAGCACATATATCTACTATTGGTGTTTGTTCTATGACTGACATAGCCAAGAAACCAACTGAAACGATTTGTGCACCACTCACTGTCTTTTTTGATGGTAGAGTTGATGGTCAAGTAGACTTATTTAGAAATGCCCGTAATGGTGTTCTTATTACAGAAGGTAGTGTTAAAGGTTTACAACCATCTGTAGGTCCCAAACAAGCTAGTCTTAATGGAGTCACATTAATTGGAGAAGCCGTAAAAACACAGTTCAATTATTATAAGAAAGTTGATGGTGTTGTCCAACAATTACCTGAAACTTACTTTACTCAGAGTAGAAATTTACAAGAATTTAAACCCAGGAGTCAAATGGAAATTGATTTCTTAGAATTAGCTATGGATGAATTCATTGAACGGTATAAATTAGAAGGCTATGCCTTCGAACATATCGTTTATGGAGATTTTAGTCATAGTCAGTTAGGTGGTTTACATCTACTGATTGGACTAGCTAAACGTTTTAAGGAATCACCTTTTGAATTAGAAGATTTTATTCCTATGGACAGTACAGTTAAAAACTATTTCATAACAGATGCGCAAACAGGTTCATCTAAGTGTGTGTGTTCTGTTATTGATTTATTACTTGATGATTTTGTTGAAATAATAAAATCCCAAGATTTATCTGTAGTTTCTAAGGTTGTCAAAGTGACTATTGACTATACAGAAATTTCATTTATGCTTTGGTGTAAAGATGGCCATGTAGAAACATTTTACCCAAAATTACAATCTAGTCAAGCGTGGCAACCGGGTGTTGCTATGCCTAATCTTTACAAAATGCAAAGAATGCTATTAGAAAAGTGTGACCTTCAAAATTATGGTGATAGTGCAACATTACCTAAAGGCATAATGATGAATGTCGCAAAATATACTCAACTGTGTCAATATTTAAACACATTAACATTAGCTGTACCCTATAATATGAGAGTTATACATTTTGGTGCTGGTTCTGATAAAGGAGTTGCACCAGGTACAGCTGTTTTAAGACAGTGGTTGCCTACGGGTACGCTGCTTGTCGATTCAGATCTTAATGACTTTGTCTCTGATGCAGATTCAACTTTGATTGGTGATTGTGCAACTGTACATACAGCTAATAAATGGGATCTCATTATTAGTGATATGTACGACCCTAAGACTAAAAATGTTACAAAAGAAAATGACTCTAAAGAGGGTTTTTTCACTTACATTTGTGGGTTTATACAACAAAAGCTAGCTCTTGGAGGTTCCGTGGCTATAAAGATAACAGAACATTCTTGGAATGCTGATCTTTATAAGCTCATGGGACACTTCGCATGGTGGACAGCCTTTGTTACTAATGTGAATGCGTCATCATCTGAAGCATTTTTAATTGGATGTAATTATCTTGGCAAACCACGCGAACAAATAGATGGTTATGTCATGCATGCAAATTACATATTTTGGAGGAATACAAATCCAATTCAGTTGTCTTCCTATTCTTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAAAGAAGGTCAAATCAATGATATGATTTTATCTCTTCTTAGTAAAGGTAGACTTATAATTAGAGAAAACAACAGAGTTGTTATTTCTAGTGATGTTCTTGTTAACAACTAAACGAACAATGTTTGTTTTTCTTGTTTTATTGCCACTAGTCTCTAGTCAGTGTGTTAATCTTACAACCAGAACTCAATTACCCCCTGCATACACTAATTCTTTCACACGTGGTGTTTATTACCCTGACAAAGTTTTCAGATCCTCAGTTTTACATTCAACTCAGGACTTGTTCTTACCTTTCTTTTCCAATGTTACTTGGTTCCATGCTATACATGTCTCTGGGACCAATGGTACTAAGAGGTTTGATAACCCTGTCCTACCATTTAATGATGGTGTTTATTTTGCTTCCACTGAGAAGTCTAACATAATAAGAGGCTGGATTTTTGGTACTACTTTAGATTCGAAGACCCAGTCCCTACTTATTGTTAATAACGCTACTAATGTTGTTATTAAAGTCTGTGAATTTCAATTTTGTAATGATCCATTTTTGGGTGTTTATTACCACAAAAACAACAAAAGTTGGATGGAAAGTGAGTTCAGAGTTTATTCTAGTGCGAATAATTGCACTTTTGAATATGTCTCTCAGCCTTTTCTTATGGACCTTGAAGGAAAACAGGGTAATTTCAAAAATCTTAGGGAATTTGTGTTTAAGAATATTGATGGTTATTTTAAAATATATTCTAAGCACACGCCTATTAATTTAGTGCGTGATCTCCCTCAGGGTTTTTCGGCTTTAGAACCATTGGTAGATTTGCCAATAGGTATTAACATCACTAGGTTTCAAACTTTACTTGCTTTACATAGAAGTTATTTGACTCCTGGTGATTCTTCTTCAGGTTGGACAGCTGGTGCTGCAGCTTATTATGTGGGTTATCTTCAACCTAGGACTTTTCTATTAAAATATAATGAAAATGGAACCATTACAGATGCTGTAGACTGTGCACTTGACCCTCTCTCAGAAACAAAGTGTACGTTGAAATCCTTCACTGTAGAAAAAGGAATCTATCAAACTTCTAACTTTAGAGTCCAACCAACAGAATCTATTGTTAGATTTCCTAATATTACAAACTTGTGCCCTTTTGGTGAAGTTTTTAACGCCACCAGATTTGCATCTGTTTATGCTTGGAACAGGAAGAGAATCAGCAACTGTGTTGCTGATTATTCTGTCCTATATAATTCCGCATCATTTTCCACTTTTAAGTGTTATGGAGTGTCTCCTACTAAATTAAATGATCTCTGCTTTACTAATGTCTATGCAGATTCATTTGTAATTAGAGGTGATGAAGTCAGACAAATCGCTCCAGGGCAAACTGGAAAGATTGCTGATTATAATTATAAATTACCAGATGATTTTACAGGCTGCGTTATAGCTTGGAATTCTAACAATCTTGATTCTAAGGTTGGTGGTAATTATAATTACCTGTATAGATTGTTTAGGAAGTCTAATCTCAAACCTTTTGAGAGAGATATTTCAACTGAAATCTATCAGGCCGGTAGCACACCTTGTAATGGTGTTGAAGGTTTTAATTGTTACTTTCCTTTACAATCATATGGTTTCCAACCCACTAATGGTGTTGGTTACCAACCATACAGAGTAGTAGTACTTTCTTTTGAACTTCTACATGCACCAGCAACTGTTTGTGGACCTAAAAAGTCTACTAATTTGGTTAAAAACAAATGTGTCAATTTCAACTTCAATGGTTTAACAGGCACAGGTGTTCTTACTGAGTCTAACAAAAAGTTTCTGCCTTTCCAACAATTTGGCAGAGACATTGCTGACACTACTGATGCTGTCCGTGATCCACAGACACTTGAGATTCTTGACATTACACCATGTTCTTTTGGTGGTGTCAGTGTTATAACACCAGGAACAAATACTTCTAACCAGGTTGCTGTTCTTTATCAGGATGTTAACTGCACAGAAGTCCCTGTTGCTATTCATGCAGATCAACTTACTCCTACTTGGCGTGTTTATTCTACAGGTTCTAATGTTTTTCAAACACGTGCAGGCTGTTTAATAGGGGCTGAACATGTCAACAACTCATATGAGTGTGACATACCCATTGGTGCAGGTATATGCGCTAGTTATCAGACTCAGACTAATTCTCCTCGGCGGGCACGTAGTGTAGCTAGTCAATCCATCATTGCCTACACTATGTCACTTGGTGCAGAAAATTCAGTTGCTTACTCTAATAACTCTATTGCCATACCCACAAATTTTACTATTAGTGTTACCACAGAAATTCTACCAGTGTCTATGACCAAGACATCAGTAGATTGTACAATGTACATTTGTGGTGATTCAACTGAATGCAGCAATCTTTTGTTGCAATATGGCAGTTTTTGTACACAATTAAACCGTGCTTTAACTGGAATAGCTGTTGAACAAGACAAAAACACCCAAGAAGTTTTTGCACAAGTCAAACAAATTTACAAAACACCACCAATTAAAGATTTTGGTGGTTTTAATTTTTCACAAATATTACCAGATCCATCAAAACCAAGCAAGAGGTCATTTATTGAAGATCTACTTTTCAACAAAGTGACACTTGCAGATGCTGGCTTCATCAAACAATATGGTGATTGCCTTGGTGATATTGCTGCTAGAGACCTCATTTGTGCACAAAAGTTTAACGGCCTTACTGTTTTGCCACCTTTGCTCACAGATGAAATGATTGCTCAATACACTTCTGCACTGTTAGCGGGTACAATCACTTCTGGTTGGACCTTTGGTGCAGGTGCTGCATTACAAATACCATTTGCTATGCAAATGGCTTATAGGTTTAATGGTATTGGAGTTACACAGAATGTTCTCTATGAGAACCAAAAATTGATTGCCAACCAATTTAATAGTGCTATTGGCAAAATTCAAGACTCACTTTCTTCCACAGCAAGTGCACTTGGAAAACTTCAAGATGTGGTCAACCAAAATGCACAAGCTTTAAACACGCTTGTTAAACAACTTAGCTCCAATTTTGGTGCAATTTCAAGTGTTTTAAATGATATCCTTTCACGTCTTGACAAAGTTGAGGCTGAAGTGCAAATTGATAGGTTGATCACAGGCAGACTTCAAAGTTTGCAGACATATGTGACTCAACAATTAATTAGAGCTGCAGAAATCAGAGCTTCTGCTAATCTTGCTGCTACTAAAATGTCAGAGTGTGTACTTGGACAATCAAAAAGAGTTGATTTTTGTGGAAAGGGCTATCATCTTATGTCCTTCCCTCAGTCAGCACCTCATGGTGTAGTCTTCTTGCATGTGACTTATGTCCCTGCACAAGAAAAGAACTTCACAACTGCTCCTGCCATTTGTCATGATGGAAAAGCACACTTTCCTCGTGAAGGTGTCTTTGTTTCAAATGGCACACACTGGTTTGTAACACAAAGGAATTTTTATGAACCACAAATCATTACTACAGACAACACATTTGTGTCTGGTAACTGTGATGTTGTAATAGGAATTGTCAACAACACAGTTTATGATCCTTTGCAACCTGAATTAGACTCATTCAAGGAGGAGTTAGATAAATATTTTAAGAATCATACATCACCAGATGTTGATTTAGGTGACATCTCTGGCATTAATGCTTCAGTTGTAAACATTCAAAAAGAAATTGACCGCCTCAATGAGGTTGCCAAGAATTTAAATGAATCTCTCATCGATCTCCAAGAACTTGGAAAGTATGAGCAGTATATAAAATGGCCATGGTACATTTGGCTAGGTTTTATAGCTGGCTTGATTGCCATAGTAATGGTGACAATTATGCTTTGCTGTATGACCAGTTGCTGTAGTTGTCTCAAGGGCTGTTGTTCTTGTGGATCCTGCTGCAAATTTGATGAAGACGACTCTGAGCCAGTGCTCAAAGGAGTCAAATTACATTACACATAAACGAACTTATGGATTTGTTTATGAGAATCTTCACAATTGGAACTGTAACTTTGAAGCAAGGTGAAATCAAGGATGCTACTCCTTCAGATTTTGTTCGCGCTACTGCAACGATACCGATACAAGCCTCACTCCCTTTCGGATGGCTTATTGTTGGCGTTGCACTTCTTGCTGTTTTTCAGAGCGCTTCCAAAATCATAACCCTCAAAAAGAGATGGCAACTAGCACTCTCCAAGGGTGTTCACTTTGTTTGCAACTTGCTGTTGTTGTTTGTAACAGTTTACTCACACCTTTTGCTCGTTGCTGCTGGCCTTGAAGCCCCTTTTCTCTATCTTTATGCTTTAGTCTACTTCTTGCAGAGTATAAACTTTGTAAGAATAATAATGAGGCTTTGGCTTTGCTGGAAATGCCGTTCCAAAAACCCATTACTTTATGATGCCAACTATTTTCTTTGCTGGCATACTAATTGTTACGACTATTGTATACCTTACAATAGTGTAACTTCTTCAATTGTCATTACTTCAGGTGATGGCACAACAAGTCCTATTTCTGAACATGACTACCAGATTGGTGGTTATACTGAAAAATGGGAATCTGGAGTAAAAGACTGTGTTGTATTACACAGTTACTTCACTTCAGACTATTACCAGCTGTACTCAACTCAATTGAGTACAGACACTGGTGTTGAACATGTTACCTTCTTCATCTACAATAAAATTGTTGATGAGCCTGAAGAACATGTCCAAATTCACACAATCGACGGTTCATCCGGAGTTGTTAATCCAGTAATGGAACCAATTTATGATGAACCGACGACGACTACTAGCGTGCCTTTGTAAGCACAAGCTGATGAGTACGAACTTATGTACTCATTCGTTTCGGAAGAGACAGGTACGTTAATAGTTAATAGCGTACTTCTTTTTCTTGCTTTCGTGGTATTCTTGCTAGTTACACTAGCCATCCTTACTGCGCTTCGATTGTGTGCGTACTGCTGCAATATTGTTAACGTGAGTCTTGTAAAACCTTCTTTTTACGTTTACTCTCGTGTTAAAAATCTGAATTCTTCTAGAGTTCCTGATCTTCTGGTCTAAACGAACTAAATATTATATTAGTTTTTCTGTTTGGAACTTTAATTTTAGCCATGGCAGATTCCAACGGTACTATTACCGTTGAAGAGCTTAAAAAGCTCCTTGAACAATGGAACCTAGTAATAGGTTTCCTATTCCTTACATGGATTTGTCTTCTACAATTTGCCTATGCCAACAGGAATAGGTTTTTGTATATAATTAAGTTAATTTTCCTCTGGCTGTTATGGCCAGTAACTTTAGCTTGTTTTGTGCTTGCTGCTGTTTACAGAATAAATTGGATCACCGGTGGAATTGCTATCGCAATGGCTTGTCTTGTAGGCTTGATGTGGCTCAGCTACTTCATTGCTTCTTTCAGACTGTTTGCGCGTACGCGTTCCATGTGGTCATTCAATCCAGAAACTAACATTCTTCTCAACGTGCCACTCCATGGCACTATTCTGACCAGACCGCTTCTAGAAAGTGAACTCGTAATCGGAGCTGTGATCCTTCGTGGACATCTTCGTATTGCTGGACACCATCTAGGACGCTGTGACATCAAGGACCTGCCTAAAGAAATCACTGTTGCTACATCACGAACGCTTTCTTATTACAAATTGGGAGCTTCGCAGCGTGTAGCAGGTGACTCAGGTTTTGCTGCATACAGTCGCTACAGGATTGGCAACTATAAATTAAACACAGACCATTCCAGTAGCAGTGACAATATTGCTTTGCTTGTACAGTAAGTGACAACAGATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAGTTTCCATTTGGAATCTTGATTACATCATAAACCTCATAATTAAAAATTTATCTAAGTCACTAACTGAGAATAAATATTCTCAATTAGATGAAGAGCAACCAATGGAGATTGATTAAACGAACATGAAAATTATTCTTTTCTTGGCACTGATAACACTCGCTACTTGTGAGCTTTATCACTACCAAGAGTGTGTTAGAGGTACAACAGTACTTTTAAAAGAACCTTGCTCTTCTGGAACATACGAGGGCAATTCACCATTTCATCCTCTAGCTGATAACAAATTTGCACTGACTTGCTTTAGCACTCAATTTGCTTTTGCTTGTCCTGACGGCGTAAAACACGTCTATCAGTTACGTGCCAGATCAGTTTCACCTAAACTGTTCATCAGACAAGAGGAAGTTCAAGAACTTTACTCTCCAATTTTTCTTATTGTTGCGGCAATAGTGTTTATAACACTTTGCTTCACACTCAAAAGAAAGACAGAATGATTGAACTTTCATTAATTGACTTCTATTTGTGCTTTTTAGCCTTTCTGCTATTCCTTGTTTTAATTATGCTTATTATCTTTTGGTTCTCACTTGAACTGCAAGATCATAATGAAACTTGTCACGCCTAAACGAACATGAAATTTCTTGTTTTCTTAGGAATCATCACAACTGTAGCTGCATTTCACCAAGAATGTAGTTTACAGTCATGTACTCAACATCAACCATATGTAGTTGATGACCCGTGTCCTATTCACTTCTATTCTAAATGGTATATTAGAGTAGGAGCTAGAAAATCAGCACCTTTAATTGAATTGTGCGTGGATGAGGCTGGTTCTAAATCACCCATTCAGTACATCGATATCGGTAATTATACAGTTTCCTGTTTACCTTTTACAATTAATTGCCAGGAACCTAAATTGGGTAGTCTTGTAGTGCGTTGTTCGTTCTATGAAGACTTTTTAGAGTATCATGACGTTCGTGTTGTTTTAGATTTCATCTAAACGAACAAACTAAAATGTCTGATAATGGACCCCAAAATCAGCGAAATGCACCCCGCATTACGTTTGGTGGACCCTCAGATTCAACTGGCAGTAACCAGAATGGAGAACGCAGTGGGGCGCGATCAAAACAACGTCGGCCCCAAGGTTTACCCAATAATACTGCGTCTTGGTTCACCGCTCTCACTCAACATGGCAAGGAAGACCTTAAATTCCCTCGAGGACAAGGCGTTCCAATTAACACCAATAGCAGTCCAGATGACCAAATTGGCTACTACCGAAGAGCTACCAGACGAATTCGTGGTGGTGACGGTAAAATGAAAGATCTCAGTCCAAGATGGTATTTCTACTACCTAGGAACTGGGCCAGAAGCTGGACTTCCCTATGGTGCTAACAAAGACGGCATCATATGGGTTGCAACTGAGGGAGCCTTGAATACACCAAAAGATCACATTGGCACCCGCAATCCTGCTAACAATGCTGCAATCGTGCTACAACTTCCTCAAGGAACAACATTGCCAAAAGGCTTCTACGCAGAAGGGAGCAGAGGCGGCAGTCAAGCCTCTTCTCGTTCCTCATCACGTAGTCGCAACAGTTCAAGAAATTCAACTCCAGGCAGCAGTAGGGGAACTTCTCCTGCTAGAATGGCTGGCAATGGCGGTGATGCTGCTCTTGCTTTGCTGCTGCTTGACAGATTGAACCAGCTTGAGAGCAAAATGTCTGGTAAAGGCCAACAACAACAAGGCCAAACTGTCACTAAGAAATCTGCTGCTGAGGCTTCTAAGAAGCCTCGGCAAAAACGTACTGCCACTAAAGCATACAATGTAACACAAGCTTTCGGCAGACGTGGTCCAGAACAAACCCAAGGAAATTTTGGGGACCAGGAACTAATCAGACAAGGAACTGATTACAAACATTGGCCGCAAATTGCACAATTTGCCCCCAGCGCTTCAGCGTTCTTCGGAATGTCGCGCATTGGCATGGAAGTCACACCTTCGGGAACGTGGTTGACCTACACAGGTGCCATCAAATTGGATGACAAAGATCCAAATTTCAAAGATCAAGTCATTTTGCTGAATAAGCATATTGACGCATACAAAACATTCCCACCAACAGAGCCTAAAAAGGACAAAAAGAAGAAGGCTGATGAAACTCAAGCCTTACCGCAGAGACAGAAGAAACAGCAAACTGTGACTCTTCTTCCTGCTGCAGATTTGGATGATTTCTCCAAACAATTGCAACAATCCATGAGCAGTGCTGACTCAACTCAGGCCTAAACTCATGCAGACCACACAAGGCAGATGGGCTATATAAACGTTTTCGCTTTTCCGTTTACGATATATAGTCTACTCTTGTGCAGAATGAATTCTCGTAACTACATAGCACAAGTAGATGTAGTTAACTTTAATCTCACATAGCAATCTTTAATCAGTGTGTAACATTAGGGAGGACTTGAAAGAGCCACCACATTTTCACCGAGGCCACGCGGAGTACGATCGAGTGTACAGTGAACAATGCTAGGGAGAGCTGCCTATATGGAAGAGCCCTAATGTGTAAAATTAATTTTAGTAGTGCTATCCCCATGTGATTTTAATAGCTTCTTAGGAGAATGACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

cov_index = 0
cov_len = len(seq)

class Raketa:

    def __init__(self, screen, rychlost=10):
        self.screen = screen
        # maximální šířka a vejška tý naší vobrazovky/terminálu v počtu znaků
        max_vyska, max_sirka = self.screen.getmaxyx()

        # počáteční iksová souřadnice bude náhodnej sloupek pět znaků vod vokraje
        # protože na vokraji ty výbuchy nebyly hezký protože nebyly vidět :D
        self.x = random.randint(5, max_sirka - 5)

        # spodek vobrazovky má max hodnotu, vršek má navopak 0
        self.y = max_vyska - 1

        # vejška ve který rachejtle vybuchne
        # nejdřiv muže vybuchnout ve čtvrtině vejšky vobrazovky + nějaká náhoda
        self.vyska_kdy_bouchne = max_vyska // 4 + random.randint(0, max_vyska // 2)

        # rychlost jakou jako letí nahoru
        self.rychlost = rychlost

    # aktualizace proměnejch podle rozdílu času
    def aktualizace(self, dt):
        self.y -= self.rychlost * dt

    # vykreslení na vobrazovku
    def namalovat(self):
        # musíme souřadnice zavokrouhlit nebo převíst na int
        # float to papá nerado :D
        pos_y = int(round(self.y))
        # vykreslíme na vobrazovku tu raketu
        self.screen.addstr(pos_y, self.x, '|')

    # true/false jestli už je ve vejšce ve který muže bouchnout
    def bouchla(self):
        return self.y < self.vyska_kdy_bouchne


class Jiskra:

    def __init__(self, screen, pozice, smer, barva, rychlost=15, gravitace=10):

        self.screen = screen
        self.barva = barva

        self.x = pozice[0]
        self.y = pozice[1]
        self.smer_x = smer[0]
        self.smer_y = smer[1]
        self.rychlost = rychlost
        self.gravitace = gravitace

    def namalovat(self):

        global cov_index
        pos_x = int(round(self.x))
        pos_y = int(round(self.y))

        max_vyska, max_sirka = self.screen.getmaxyx()

        # kouknem jestli souřadnicema jakoby leží na vobrazovce jinak ji nemužem vykreslit
        if pos_x <= 1 or pos_y <= 1 or pos_x >= max_sirka - 1 or pos_y >= max_vyska - 1:
            return

        znak = seq[cov_index]
        cov_index+=1
        if cov_index == cov_len:
            cov_index = 0
        
        # jestli mužem v týdle konzoli kreslit barevně vykreslíme s nějakou
        # moc hezkou barvičkou :D :D :D :D
        if curses.can_change_color():
            # všiměte si že voni to maj prohozený to iks s ipsilonem v těch souřadnicích než bejvá vobvyklý :O :O
            self.screen.addstr(pos_y, pos_x, znak, curses.color_pair(self.barva))
        else:
            self.screen.addstr(pos_y, pos_x, znak)

    def aktualizace(self, dt):

        self.x += self.smer_x * self.rychlost * dt
        self.y += self.smer_y * self.rychlost * dt

        # navíc přičtem efekt gravitace aby jakože pomaličku kařdým krokem letěly
        # ty jiskřičky víc dolu abyto bylo jakoby trošku víc realnější :D ;D
        self.y += self.gravitace * dt


class Vybuch:

    def __init__(self, screen, pozice, kolik_jiskricek, doba_trvani, barva):

        # doba trvání výbuchu rachejtle
        self.doba_trvani = doba_trvani
        # jednotlivý rachejtle v poli
        self.jiskry = []

        # smer jiskřiček z rachejtlí spočítáme sínusem a kosínusem noa nato
        # jakoby potřebujem znát úhel pod jakým jakoby vodlítaj vod středu výbuchu
        # ten určíme z dvě pí (jakoře jednou dokola nebo 360°) děleno počet jisker
        rust_uhlu = (math.pi * 2) / kolik_jiskricek
        for i in range(kolik_jiskricek):
            # kosínus/xová souřadnice je vynásobená dvouma aby to jakoby
            # kompenzovalo že znaky psaný v termiálu sou trošičku vyší než širší
            # bez tý kompenzace by to nedělalo kolečka ale jakože takový šišatý elipsy :D ;D
            smer = (math.cos(i * rust_uhlu) * 2, math.sin(i * rust_uhlu))

            # vyrobíme novej particle takový tý rachejtlový jiskry a skováme do pole
            jiskra = Jiskra(screen, pozice, smer, barva)
            self.jiskry.append(jiskra)

    def aktualizace(self, dt):

        # vodečtem dobu trvání
        self.doba_trvani -= dt
        # a aktualizujem všecky jiskry
        for jiskra in self.jiskry:
            jiskra.aktualizace(dt)

    def namalovat(self):
        # vykreslíme všecky jisrky
        for jiskra in self.jiskry:
            jiskra.namalovat()

    # jestli mu jetště jakoby zbejvá nějaká doba trvání :O :O
    def zije_este(self):
        return self.doba_trvani > 0


# funkce co strčíme do curses wrapperu
# ten argument 'stdscr' je instance vobrazovky/terminálu kterou nám řekne curses.wrapper
# do ni budem vykreslovat ty naše výbuchy a rachejtle ;D
def main(stdscr):
    rakety = []
    vybuchy = []

    # jestli mužem v terminálu měnit barvičky
    # tak si připravýme všecky možný
    if curses.can_change_color:
        curses.start_color()
        curses.use_default_colors()
        for i in range(0, curses.COLORS):
            # curses ukládá barvičky v párech voznačený/pomenovaný nenulovým indexem
            # pred použitím se musej inicializovat a přiřadit jim ten index
            # noa samotnej ten pár se zkládá z barvy textu a barvy pozadí taky voznačený číslem
            # první argument je index druhej barva textu a třetí barva pozadí
            curses.init_pair(i + 1, i, 0)

    # zneviditelníme kruzor
    # jinak by nám tam furt někde blikal černobíle
    curses.curs_set(0)

    # naplníme pole rachejtlí podle zadanýho počtu
    for i in range(pocet_raket):
        raketa = Raketa(stdscr)
        rakety.append(raketa)

    # dozblnutí budem střílet donebe rachejtlema
    # de zabít máčknutím ctrl+c
    while True:

        # vyčistíme vobrazovku
        stdscr.clear()

        for raketa in rakety:

            # jestli raketa bouchla tak ji vodstraníme z pole na její souřadnici vyrobíme novej výbuch a do polí 
            # raket dáme novou raketu. ekologisti si mužou třídu raket upravit tak aby se misto vodstraňování starý 
            # instance a vyrábění nový raketa recyklovala a 'teleportovala' nazačátek :D ;D 
            if raketa.bouchla():
                pozice = (raketa.x, raketa.y)
                rakety.remove(raketa)

                novy_vybuch = Vybuch(stdscr, pozice, random.randint(15, 50), 2, random.randint(0, 255))
                vybuchy.append(novy_vybuch)

                nova_raketa = Raketa(stdscr)
                rakety.append(nova_raketa)
            else:
                raketa.aktualizace(dt)
                raketa.namalovat()

        # podobně vykreslujem aktualizujem a vodstraňujem výbuchy
        for vybuch in vybuchy:
            if vybuch.zije_este():
                vybuch.aktualizace(dt)
                vybuch.namalovat()
            else:
                vybuchy.remove(vybuch)

        # aktualizujem vobrazovku
        stdscr.refresh()

        # a počkáme nějakou dobu dt než uděláme další průběh while cyklu
        time.sleep(dt)


# vyrobení wrapperu do kterýho se strká ta naše funkce
curses.wrapper(main)

Jendа avatar 2.1.2021 16:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
2.1.2021 20:11 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Respekt!
Blaazen avatar 2.1.2021 23:39 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Paráda! Ale radši si ten skript pouštějte jen v roušce! :D
Jendа avatar 3.1.2021 01:08 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Hele nepřijde vám divný že jiskra jak se vzdaluje od epicentra tak každý frame změní nukleotid který ukazuje? Možná chcete jiskře přiřadit nukleotid na začátku a pak kreslit furt ten stejnej, ne?
--- o.py	2021-01-02 21:18:46.408147382 +0100
+++ oo.py	2021-01-03 01:07:00.665696266 +0100
@@ -60,6 +60,7 @@
 class Jiskra:
  
     def __init__(self, screen, pozice, smer, barva, rychlost=15, gravitace=10):
+        global cov_index
  
         self.screen = screen
         self.barva = barva
@@ -70,10 +71,16 @@
         self.smer_y = smer[1]
         self.rychlost = rychlost
         self.gravitace = gravitace
+
+        znak = seq[cov_index]
+        cov_index+=1
+        if cov_index == cov_len:
+            cov_index = 0
+         
+        self.nukleotid = znak
  
     def namalovat(self):
  
-        global cov_index
         pos_x = int(round(self.x))
         pos_y = int(round(self.y))
  
@@ -83,18 +90,13 @@
         if pos_x <= 1 or pos_y <= 1 or pos_x >= max_sirka - 1 or pos_y >= max_vyska - 1:
             return
  
-        znak = seq[cov_index]
-        cov_index+=1
-        if cov_index == cov_len:
-            cov_index = 0
-         
         # jestli mužem v týdle konzoli kreslit barevně vykreslíme s nějakou
         # moc hezkou barvičkou :D :D :D :D
         if curses.can_change_color():
             # všiměte si že voni to maj prohozený to iks s ipsilonem v těch souřadnicích než bejvá vobvyklý :O :O
-            self.screen.addstr(pos_y, pos_x, znak, curses.color_pair(self.barva))
+            self.screen.addstr(pos_y, pos_x, self.nukleotid, curses.color_pair(self.barva))
         else:
-            self.screen.addstr(pos_y, pos_x, znak)
+            self.screen.addstr(pos_y, pos_x, self.nukleotid)
  
     def aktualizace(self, dt):
  
Gréta avatar 4.1.2021 20:49 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
3.1.2021 10:21 Radovan
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Nemáš tam i verzi pro Pygame? :)
Gréta avatar 4.1.2021 20:56 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

curses má prej jakoby i win verzi jestli ti de vo todleto ;D

4.1.2021 21:36 Radovan
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Ne, nende. Chtěl jsem to do Maliny :-P

Na Didaktik Gama bych si to přepsal sám, ale doba pokročila, budu muset upgradovat...
Gréta avatar 5.1.2021 13:04 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

schoď desktopový prostředí a pusť si to jakoby v terminálku :D :D ;D ;D

5.1.2021 16:24 Radovan
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
To nemusím shazovat, přepnout do tty jsem se za těch asi osmnáct let, co jsem Linux potkal poprvé, už naučil ;-)

Jo hele, tos mi připomněla: https://www.youtube.com/watch?v=Vo8NG8T4rWs
Gréta avatar 5.1.2021 21:11 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

se divim že neposlali linuse dobasy zato že jim jakoby šloh nápad :O :O :D ;D

Petr Fiedler avatar 2.1.2021 20:01 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Odpovědět | Sbalit | Link | Blokovat | Admin

Můžeš mi prosím tě odpovědět na tohle?

Bedňa avatar 2.1.2021 21:24 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
python3 -m pip install pillow
KERNEL ULTRAS video channel >>>
Petr Fiedler avatar 2.1.2021 22:09 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Díky za ochotu.

~$ python3 -m pip install pillow
/usr/bin/python3: No module named pip
Petr Fiedler avatar 2.1.2021 22:11 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Nainstaloval jsem pip3 a jdu to zkusit.

Petr Fiedler avatar 2.1.2021 22:21 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Ne.

Bedňa avatar 2.1.2021 23:00 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Čo máš za distro? Ak je to distro z odnože Debian/Ubunut stačí príkaz?
sudo apt install python3-pip
Mno a potom:
python3 -m pip install --upgrade pip
Teraz už len ten PIL
python3 -m pip install pillow
KERNEL ULTRAS video channel >>>
Petr Fiedler avatar 2.1.2021 23:10 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Používám Mint a taky virtuální prostředí, takže než ten kód spouštím, tak napřed dávám source venv/bin/activate

$ sudo python3 -m pip install --upgrade pip
Collecting pip
  Downloading pip-20.3.3-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 2.3 MB/s 
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.0.2
    Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.3.3

$ sudo python3 -m pip install pillow
Requirement already satisfied: pillow in /usr/lib/python3/dist-packages (7.0.0)

$ python3 blyskavy_text.py 
Traceback (most recent call last):
  File "blyskavy_text.py", line 9, in <module>
    from PIL import Image
ModuleNotFoundError: No module named 'PIL'
Bedňa avatar 2.1.2021 23:12 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Zatiaľ máš výstup v cajk.
KERNEL ULTRAS video channel >>>
2.1.2021 23:15 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Tady probíhá diskuze paralelně ve dvou threadech, ale imho ten výstup cajk není: https://www.abclinuxu.cz/blog/GretinBlogisek/2019/12/supr-blejskavej-text-v-pythonu/diskuse#46.
Petr Fiedler avatar 2.1.2021 23:42 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

No co mám dělat, reagujete na 2 místech? Už mi to funguje.

Gréta avatar 4.1.2021 20:48 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Už mi to funguje

tak supr :D ;D

Petr Fiedler avatar 4.1.2021 20:52 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Ne tak docela. Hvězdičky jsou v mailu statické a některá písmena s diakritikou skript nedokáže vygenerovat.

Gréta avatar 4.1.2021 21:37 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

jestli to jakoby pišeš v thunderbirdu ty maily tak tam se jakoby ty gify při psaní nehejbou. co se testovala tak se hejbou jen při čtení doručenejch zpráv :O :O zkus si to poslat z druhýho mailu nějakýho a koukni jestli se to hejbe až jako doručený třeba :O :O

font musí bejt nějakej unicode co podporuje český znaky v reakci sem tam hodina vodkaz na nějakej co mi teďkonc fungoval hele

promiň za komplikace :O :O

Petr Fiedler avatar 4.1.2021 23:54 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Právě, že jsem si to poslal a nehýbou se.

Záš tohle? A tohle? Dobrý k tomu ohňostroji :D

Petr Fiedler avatar 5.1.2021 01:54 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

A pochopitelně ještě tohle.

Gréta avatar 5.1.2021 13:02 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

nóó se řiká že jako proti gustu žádnej dyšputát :D ;D

btw sem si ty videjka votevřela přes tor a ty první dvě vubec nebyly dostupný až to třetí. všecky dostupný byly až když sem změnila identitu :O :O co je na nich jakoby tak děsně závadnýho žeje v nějakejch zemích blokujou?? :O :O

Petr Fiedler avatar 5.1.2021 16:23 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Taky chodím na YT přes Tor a taky se mi někdy něco nechce spustit. Stává se mi to u více videí. Vlastně bych Tor používal mnohem více, ale nejde mi nastavit barvy, jako ve FF. Černé pozadí, zelený text atp. Nevíš jak na to? Ta možnost tam je, ale je to nějak rozbitý.

Gréta avatar 5.1.2021 20:58 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

nóóó vono by se tam jako správně nemělo přiinstalovávat do tor browseru nic navíc co jakože fakt děsně moc nepotřebuješ ale funguje tam rozšíření dark reader jestli chceš tmavý pozadí se světlým textem hele :O :O

Petr Fiedler avatar 6.1.2021 00:35 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

No já tam právě nic přiinstalovávat nechci. Mám tam jen uBlock Origin, protože bez toho se zrovna to YT absolutně nedá sledovat. Samá reklama. Já měl na mysli "Edit" > "Preferences" > "General" > "Colors". Tady jde nastavit černé pozadí atd. Ve Firefoxu to tak mám nataveno, ale když to nastavíš v Toru, tak to nefunguje. Teď si najsem jistý, ale myslím, že celá stránka je pak bílá a vidíš pouze nenavštívené odkazy, myslím.

Ale dík za ten doplněk. Pokud to nepůjde jinak, tak to asi budu muset řešit jím.

Petr Fiedler avatar 6.1.2021 03:00 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Tak jsem ten doplněk zkusil ve VM a funguje dobře. Sice se nadají navolit barvy, ale lepší než nic. Fakt ale nechápu, proč věc, která je vlastností prohlížeče nefunguje a doplněk ano.

Hele, a proč vlastně není dobré do Toru něco instalovat? Kvůli identifikaci?

Gréta avatar 6.1.2021 14:02 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

možná proto že když si tam strčíš doplněk sám tak už to jakoby neni jejich zodpovědnost když tě agenti nsa chytnou :D :D ;D ;D

Hele, a proč vlastně není dobré do Toru něco instalovat? Kvůli identifikaci?

nóó tak tor večinou používaj lidi který jakoby chtěj bejt uplně v bezpečí a doplňky mužou mit nějakou slabinu/zranitelnost navíc nebo bejt rovnou škodicí hele :O :O když jako jenom házíš klacky podnohy různejm těm reklamním šmírákům tak ti to muže bejt +- jedno když budeš instalovat třeba jenom ty mozillou vověřený doplňky ale sou i různý ty čínský dizidenti a noa pro ně to už přijatelný riziko neni :O :O :O :O

Petr Fiedler avatar 6.1.2021 17:06 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Fakt super článek! Díkec. Ten blog je taky super. Přidávám do záložek a budu sledovat. :)

Petr Fiedler avatar 5.1.2021 23:01 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D

Tedy spíš se mi stává, že "Náš systém zaznamenal...".

Bedňa avatar 2.1.2021 23:13 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
S drobnosťami si nelám hlavu :-)
KERNEL ULTRAS video channel >>>
Bedňa avatar 2.1.2021 23:19 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: silvestrovskej vohňostroj za 5 minut dvanáct :D ;D
Aha do prdele nezroloval som. Mno divné to je :-D
KERNEL ULTRAS video channel >>>

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.