ࡱ> Sq^^^ ^ `$dbjbjss$4 ]T|WDDDbTT@>R>R>R8vRZ l fj4jjkM< _ _ _ _ _ _ _ $0n hp T` DC^nYCC` jkk % % % C*j:Dk_ % C_ % % ? ~3DA kf PXwK>Rt|@ K ,k 0l @ p q p 4A A p DB   % 7 ` ` m% l CCCCY:d:D NN^T v Pytonu  HYPERLINK "http://www.python.org/doc/current/lib/lib.html" http://www.python.org/doc/current/lib/lib.html - dokumentacija Pyton-a `tevila in izrazi (Pyton kot ra unalo) OperationResultNotesx + ysum of x and yx - ydifference of x and yx * yproduct of x and yx / yquotient of x and y(1)x // y(floored) quotient of x and y(5)x % yremainder of x / y(4)-xx negated+xx unchangedabs(x)absolute value or magnitude of xint(x)x converted to integer(2)long(x)x converted to long integer(2)float(x)x converted to floating pointcomplex(re,im)a complex number with real part re, imaginary part im. im defaults to zero.c.conjugate()conjugate of the complex number cdivmod(x, y)the pair (x // y, x % y)(3)(4)pow(x, y)x to the power yx ** yx to the power y a) Vse kar zapiemo za pozivnikom je vstopni podatek. >>> print "pozdravljen svet" pozivnik >>> vstopni podatek pozdravljen svet izstopni podatek >>> 5-2 3 >>> 5+2 7 >>> 5*3 15 >>> 5/2 e delimo cela atevila dobimo rezultat celo atevilo, zato napiaemo druga e: 2 >>> 5.0/2 Rezultat realnega atevila je vedno realno atevilo. 1.6666666666666667 >>> 5%2 Izra un ostanka celega atevila 1 b) Pyton upoateva ustrezen vrstni red izvajanja matemati nih operacij. >>> 2+5*3 17 >>> 2+(5*3) 17 >>> (2+5)*3 21 >>> ((2+5)*(1+9))+(2+3)*(1+4) 95 >>> chr(97) 'a' >>> divmod(12,5) ali (a / b, a % b) (2, 2) Spremenljivke Spremenljivka je koli ina, ki med izvajanjem programa spreminja svojo vrednost. Imena spremenljivk so na eloma poljubna, vendar se morajo za eti s rko (aumniki niso dovoljeni) in lahko vsebujejo rke (brez aumnikov), atevilke in pod rtaj. B2, b2, A_1, Radij, Obseg, P! so primerna. Pyton razlikuje med velikimi in malimi rkami. Zato sta prva in druga spremenljivka razli ni. V Pytonu uvedemo spremenljivko tako, da ji dolo imo vrednost. Pyton lo i velike in male rke. >>> 3+4 7 >>> a=3+4 >>> a 7 >>> b=(a+3)*2 >>> b 20 >>> a 7 >>> a,b (7, 20) >>> a,b=b,a >>> a,b (20, 7) Obrnjeno!!! >>> a=b=0 Spremenljivki imata enako vrednost >>> a,b (0, 0) >>> a=b=c Traceback (most recent call last): File "<interactive input>", line 1, in ? NameError: name 'c' is not defined Tolma  sintakti no napako hitro odkrije. >>> a=b=c=10 Med izvajanjem programa lahko spreminjamo vrednost. Lahko pa spreminjamo njen podatkovni tip (iz celega v realno atevilo). >>> a+b+c 30 >>> x=5 >>> y=4 >>> x+y 9 >>> a,b=10,55 >>> a+b 65 Python lo i velike in male rke. 2. Niz Niz je podatkovni tip, ki vsebuje enega ali ve  znakov. Niz je npr: priimek, ime telefonska atevilka& .Da niza ne zamenjamo s spremenljivko, ga v izrazih zapiaemo med narekovaji. Nize lahko zdru~ujemo v nov niz. Za zdru~evanje uporabimo +. >>> a+" "+b 'Miha Jamnik' >>> a+" "+b 'Miha Jamnik' >>> a+""+b 'MihaJamnik' Pyton obravnava niz kot tabelari no spremenljivko znakov. Prvi znak ima indeks 0, drugi mu sledijo po vrsti 1, 2, 3, ,,,Drugi znak niza torej nima indeksa 2, ampak 1. >>> a="Ljubljana" >>> a[0] 'L' >>> a[7] 'n' >>> print "koko's" koko's >>> z="a" "b" "c" >>> z 'abc' >>> m="Ljubljana" >>> m*3 'LjubljanaLjubljanaLjubljana' >>> len(m) 9 >>> m[4] 'l' >>> m[3:5] 'bl' >>> m[:4] 'Ljub' >>> m[:1] 'L' >>> m[:-1] 'Ljubljan' >>> m[-1],m[-2] ('a', 'n') >>> >>> napis= """Dober dan vsem skupaj""" >>> napis 'Dober dan vsem skupaj' >>> print napis Dober dan vsem skupaj >>> 3. Pyton knji~nica modulov Moduli omogo ajo uporabo atevilnih funkcij in podatkov, ki so zdru~eni v ve  modulih. Dodani so npr. vhodno izhodni moduli, modul za matemati ne izra une, ra unanje s asom & >>> sin(0.5) Traceback (most recent call last): File "<pyshell#1>", line 1, in ? sin(0.5) NameError: name  sin is not defined Modul, ki ga ~elimo uporabiti moramo najprej vklju iti v naae okolje. Knji~nica math: >>> import math >>> math.sin(0.5) 0.47942553860420301 ALI >>> from math import sin >>> sin(0.5) >>> math.sqrt(4) sqrt pomeni  EMBED Equation.3  = 2 2.0 >>> math.pow(3,3) pow pomeni: 33 = 27 27.0 >>> math.pow(2,3) pow pomeni: 23 = 8 8.0 >>> math.pi 3.1415926535897931 >>> math.e 2.7182818284590451 >>> Knji~nica datetime: >>>from datetime import date ali >>>import datetime >>> date.today() datetime.date(2006, 5, 7) Koliko dni ste stari? >>> r_dan=date(1995,9,23) >>> starost=date.today()-r_dan >>> starost.days 3879 Najprej smo uvedli novo spremenljivko r_dan, ki je nov objekt razreda date. Od njega je r_dan podedovala vse lastnosti in metode, vrednost pa smo spremenljivki opredelili v prvi vrstici. V drugi vrstici smo uvedli novo spremenljivko in izra unali njeno vrednost. V tretji vrstici pa smo vrednost spremenljivke izpisali v dnevih (days). Starost v letih ne pozna: >>> starost.years Traceback (most recent call last): File "<interactive input>", line 1, in ? AttributeError: 'datetime.timedelta' object has no attribute 'years' Katere pozna? >>> dir(starost) ['__abs__', '__add__', '__class__', '__delattr__', '__div__', '__doc__', '__eq__', '__floordiv__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmul__', '__rsub__', '__setattr__', '__str__', '__sub__', 'days', 'max', 'microseconds', 'min', 'resolution', 'seconds'] 4. Logi ne vrednosti >>> not not 5 True >>> not 5 False >>> <, <=, >, >=, ==, <>, !=, is, is not, in, not in x | y, x  y, x & y (po bitih or, xor, and) x << n, x >> n (pomik) 5. Seznami >>> a=["Nova Gorica"] >>> b = ['b', 'bod', 3, [['x', 1], '3+4'], a, 7.5] >>> b ['b', 'bod', 3, [['x', 1], '3+4'], ['Nova Gorica'], 7.5] >>> b[4], b[3], b[-1] (['Nova Gorica'], [['x', 1], '3+4'], 7.5) >>> b[1:3] ['bod', 3] >>> len(b) 6 e ne veste katerega tipa so podatki, uporabite ukaz type. Primeri: >>> type("Hello, World!") >>> type (17) >>> type(3.2) >>> type("17") >>> type("3.2") When you type a large integer, you might be tempted to use commas between groups of three digits, as in 1,000,000. This is not a legal integer in Python, but it is legal: >>> print 1,000,000 1 0 0 Type conversion Python provides a collection of built-in functions that convert values from one type to another. The int function takes any value and converts it to an integer, if possible, or complains otherwise: >>> int("32") 32 >>> int("Hello") ValueError: invalid literal for int(): Hello int can also convert floating-point values to integers, but remember that it truncates the fractional part: >>> int(3.99999) 3 >>> int(-2.3) -2 The float function converts integers and strings to floating-point numbers: >>> float(32) 32.0 >>> float("3.14159") 3.14159 Finally, the str function converts to type string: >>> str(32) '32' >>> str(3.14149) '3.14149' The string '\t' represents a tab character. 6. Operacije (se nadaljuje) OperationMeaningNotes<strictly less than<=less than or equal>strictly greater than>=greater than or equal==equal!=not equal(1)<>not equal(1)isobject identityis notnegated object identity (1) <> and != are alternate spellings for the same operator. != is the preferred spelling; <> is obsolescent. L.append(X), L.sort(), L.index(X), L.reverse(), del L[i:j] >>> a=['nova', 'gorica'] >>> b=['b', 'bcd', 3, [['3',1], '3+4'], a, 7.5] >>> a.reverse() >>> b ['b', 'bcd', 3, [['3', 1], '3+4'], ['gorica', 'nova'], 7.5] >>> b.index(7.5), b.index(a) (5, 4) >>> del b[3:5] >>> b ['b', 'bcd', 3, 7.5] >>> b.sort() >>> b [3, 7.5, 'b', 'bcd'] >>> range(4) [0, 1, 2, 3] >>> range(5,11) [5, 6, 7, 8, 9, 10] >>> range(7, 20, 3) korak = 3 [7, 10, 13, 16, 19] >>> range(1,10,1) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(3,-10,-1) [3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> a=[1, [2,3]] >>> b=a >>> c=[1, [2,3]] >>> a==b, a==c, a is b, a is c (True, True, True, False) Krmilni stavki Stavek nadaljujemo v novo vrsto z \ Tudi vsebina [ ] se lahko razteza ez ve  vrstic. Ve  stavkov v vrstici lo imo s ; >>> a = 3; b = 4 >>> a 3 # ozna uje vrsti no pojasnilo Program V okolju Active Pyton odpremo z ukazom File>New>Pyton Script. Uporabimo urejevalnik besedil in napiaimo pozdrav_py: print "Pozdravljen svet!"Sedaj po~enimo program s pomo jo interpreterja Python. Ra unalnik bi moral izpisati Pozdravljen svet! Kadarkoli ~elimo v kakaen del programa vstaviti kakano obvestilo ali kakano drugo besedilo, uporabimo tako ozna evanje niza z narekovaji (string literal). Sicer bi Python mislil, da je tako besedilo del programske kode. Popravimo vrstico v naaem programu tako, da bo lahko program isto asno izpisal ve  stvari. Napiaimo na primer print "Pozdravljen," , "svet!" in program spet po~enimo. Dobili bi enak izpis, ki pa je sedaj sestavljen iz dveh nizov. e torej ~elimo izpis ve  stvari, jih enostavno lo imo z vejicami. Python avtomatsko vstavi med posamezne elemente presledek. `tevila (in spremenljivke) Sedaj nekj o interakciji uporabnika s programom. Tvorimo datoteko z imenom vsota.py, ki naj ima naslednjo obliko: a=input() b=input() print "a + b =", a+b Vtipkati moramo atevilo, pritisnemo Enter. Izpis na zaslonu ra unalnika bo imel obliko, podobno naslednji: 2 3 a + b = 5 Spet za nimo obravnavo programa od vrha navzdol, tako kot bi to delal Pythonov interpreter: a=input() S to vrstico preberemo uporabnikov vnos in to vnesemo v spremenljivko z imenom "a". Spremenljivke so za asna mesta v pomnilniku ra unalnika, kamor lahko shranimo kakane podatke. Imena spremenljivk so skoraj poljubna (ve  o pravilih imenovanja spremenljivk bomo spoznali kasneje). Spremenljivko naredimo tako, da njenemu imenu priredimo neko vrednost. Tako na primer bi z vrstico stevilo = 2 priredili vrednost 2 spremenljivki z imenom "stevilo". "stevilo" bi lahko kasneje uporabili v programu, kadarkoli bi se sklicevali na to vrednost. e bi imeli vrstico: print number bi dobili izpis 2 V naaem programu smo uporabili vgrajeno funkcijo "input" , e bi ~elili od uporabnika dobiti neko vrednost. Funkcije so akcije, ki za naa program znajo nekaj narediti. Funkcija z imenom "input" aka na uporabnika, da vtipka neko vrednost in to vrednost funkcija posreduje programu. e ho emo, da Python izvede to akcijo, moramo to funkcijo poklicati. Funkcijo pokli emo z njenim imenom, temu pa sledita oklepaja. V naaem primeru imamo zato vrstico: a=input() Python najprej pokli e funkcijo "input", ta pa vrne vrednost, recimo 2. tako Nato se vrstica ovrednoti, kot e bi bilo v njej: a=2 Tako smo sedaj dobili spremenljivko z imenom "a" in z vrednostjo 2. Tako obnaanje se ponovi e z vrstico: b=input() Tu je funkcija "input" spet klicana, vrne pa tokrat na primer vrednost 3. Sedaj tako dobimo e spremenljivko z imenom "b" z vrednostjo 3. Zadnja vrstica print "a + b =", a+b ima ~e znano besedo "print", ki izpiae dva elementa. Najprej napiae niz "a + b=". Naslednji element ni med narekovaji, zato ga Python interpretira kot kodo v jeziku Python. a+b razpozna z naslednjim pomenom: "seatej vrednost, shranjeno v "a", k vrednosti, shranjeni v "b" in vrni rezultat". Tako, e je vrednost "a" enaka 2 in "b" enaka 3, tedaj je ta vrstica programa v bistvu ekvivalentna vrstici print "a + b =", 5 ki bi izpisala to, kar pri akujemo. Program lahko spremenimo tako, da bo bolj uporabniko prijazen. Poskusimo naslednje spremembe v izpis_vsote.py:  print print "vsota2.py: Program za sestevanje dveh stevil" print "Vpisi vrednost za a:", a = input() print "Vpisi vrednost za b:", b = input() print a, "+", b, "=", a+b Prvi stavek print se zdi nekoliko odve en, vendar pove Pythonu, da naj izpiae prazno vrstico. Tako bo med prejanjimi in novimi izpisi ena prazna vrstica in bo tako vse skupaj bolj pregledno., kot je bolj pregleden navaden tekst, e med odstavki uporabljamo prazne vrstice. Opazimo lahko tudi vejice na koncu vrstic, kot na primer print "Vpisi vrednost za a",Vejica na koncu, ne da bi ji kaj sledilo, pove Pythonu, da ~elimo v dani izpisni vrstici ae kaj napisati. Sam po sebi bi se namre  naslednji izpis za el v novi vrstici. V naaem primeru sicer ne mislimo v isti vrstici napisati ni esar, bo pa v nadaljevanju vrstice zapisano to, kar bomo vnaaali preko tipkovnice. Izpis bo tako lepai in bolj jasen. Zadnja sprememba je zgolj kozmeti na. Izpisujemo vrednosti za "a" in "b" tako, da je izpis bolj smiseln. Nariite diagram poteka in napiite program, ki prebere dve celi tevili, zamenja njuni vrednosti med seboj in ju izpie menjava_vrednosti.py  INCLUDEPICTURE "http://www.zrsss.si/maja/apjhtm/diagr/Dia_07.gif" \* MERGEFORMATINET  Preberi ceno v tolarjih in menjalniaki te aj v evrih ter izra unaj ceno v evrih tecaj.py!       Iz podanih dimenzij prostora in cene beljenja za m2 izra unaj ceno beljenja vsega prostora beljenje.py.       print "Izracun cene beljenja za podani prostor!" c=input("cena beljenja na kv.meter:") print "cena beljenja na kvadratni meter je:",c d=input("dolzina prostora v metrih::") print"dolzina prostora je:",d,"metrov" s=input("sirina prostora v metrih:") print"sirina prostora je:",s,"metrov" v=input("visina prostora v metrih:") print"visina prostora je:",v,"metrov" cena=(2*d*v+2*s*v+d*s)*c print"cena beljenja je:",cena V trikotniku izra unaj kote, viaine, ploa ino, obseg, polmer o rtanega kroga in polmer v rtanega kroga, e poznaa dol~ine stranic trikotnik.py Namig: Ploa ino trikotnika izra unamo s pomo jo Heronovega obrazca. Ta pravi, da je kvadrat ploa ine trikotnika s stranicami a, b in c enak s(s-a)(s-b)(s-c), kjer je s = (a+b+c)/2 polovi ni obseg trikotnika. Vemo, da je ploa ina enaka polmeru v rtanega kroga, pomno~enemu s polovi nim obsegom, pa tudi etrtini produkta dol~in stranic, deljenega s polmerom o rtanega kroga. Pri izra unu kotov upoatevamo, da je tangens polovi nega kota nasproti poljubne stranice enak kvocientu med polmerom v rtanega kroga in razliko med polovi nim obsegom in dol~ino te stranice.                   Program: print"program razreai trikotnik z dol~inami stranic v cm!" print " a, b, c - dolzine stranic" print "Vnos podatkov!" a=input("a=") print "Vnos stranice a:",a b=input("b=") print "Vnos stranice b:",b c=input("c=") print "Vnos stranice c:",c o=a+b+c s=o/2 import math p=math.sqrt(s*(s-a)*(s-b)*(s-c)) Rv=p/s # polmer vcrtanega kroga Ro=a*b*c/4/p # polmer ocrtanega kroga Va=2*p/a # Va, Vb, Vc - visine trikotnika Vb=2*p/b Vc=2*p/c kotA=2*math.atan(Rv/(s-a))*180/math.pi #izracun kotov v stopinjah kotB=2*math.atan(Rv/(s-b))*180/math.pi #izracun kotov v stopinjah kotC=2*math.atan(Rv/(s-c))*180/math.pi #izracun kotov v stopinjah print "ploscina trikotnika:", p print "obseg trikotnika:", o print "polmer vcrtanega kroga:", Rv print "polmer ocrtanega kroga:", Ro print "kot alfa meri:", kotA, "stopinj" print "kot beta meri:", kotB, "stopinj" print "kot gama meri:", kotC, "stopinj" print "visina na stranico a meri:", Va print "visina na stranico b meri:", Vb print "visina na stranico c meri:", Vc Aritmetika Kadar imamo v algoritmu vejitev, uporabimo v programu stavek if. V Pytonu ima obliko: if pogoj1: stavki1 # stavki 1 se izvedejo, e je pogoj izpolnjen [elif pogoj2: Stavki2 ... # stavki 2 se izvedejo, e je pogoj1 ni izpolnjen, pogoj 2 pa je else: stavki # stavki se izvedejo, e pogoj 1 in pogoj 2 nista izpolnjena Primer if_knjiga.py:          A=input("vpisi 1. stevilo: ") B=input("vpisi 2. stevilo: ") if A > B: C=A else: C=B print "C:", "=", C Stavek if nima posebnega znaka za konec. Tolma  Pyton vklju i vanj vse stavke, ki so umaknjeni, zato je umikanje pri njem in drugih podobnih stavkih obvezno. OperationMeaningNotes<strictly less than<=less than or equal>strictly greater than>=greater than or equal==equal!=not equal(1)<>not equal(1)isobject identityis notnegated object identity <> and != are alternate spellings for the same operator. != is the preferred spelling; <> is obsolescent. Resni na funkcionalnost programiranja se izka~e, ko uvedemo krmiljenje programskega teka. Krmilni stavki spreminjajo tok akcij v programu elif_aritm.py. Vzemimo primer print "arith.py: program za sestevanje ali odstevanje dveh stevil" print "Vnesi vrednost za a:", a = input() print "Vnesi vrednost za b:", b = input() print "Zelis sestevati ali odstevati?" print "Vnesi '+' za sestevanje, '-' za odstevanje" izbira = raw_input() if izbira=='+': print a, "+", b, "=", a+b elif izbira=='-': print a, "-", b, "=", a-b else: print "Napacna izbira" Vse do vrstice 8 nam je ~e precej znano. V vrstici 8 pa smo uvedli funkcijo "raw_input", ki je verjetno bolj uporabna od funkcije "input". "raw_input" vrne niz (zaporedje znakov) tako, kot smo ga vtipkali. e pa uporabimo funkcijo "input", pa Python interpretira naa vnos tako, kot e bi neposredno vnesli v program. Razlika med obema funkcijama je razvidna iz naslednjih zgledov: ena = input() ena = raw_input() e bi v obeh primerih vtipkali "1" in zatem pritisnili Return, bi dobili naslednji izpis ena = 1 ena = "1" e pa bi za naslednja dva stavka vtipkali "Janez" ime = input() ime = raw_input() bi dobili ime = Janez ime = "Janez" Prva vrstica je napaka, saj Python ne ve, kaj je to Janez. No, pa se povrnimo k programu. Naslednja vrstica je if izbira=='+': To zahteva od Pythona, da preveri, ali je vrednost "izbira" enaka nizu '+'. Pozor da dvojni ena aj. Takega uporabljamo, ker je navaden ena aj ~e uporabljen za dodeljevanje oziroma prirejanje vrednosti neki spremenljivki. Enojnemu ena aju pravimo tudi operator prirejanja. Dvojni ena aj pa je operator ennakosti, s pomo jo katerega preverjamo enakost med dvema vrednostima. Rezultat operacije enakosti je logi na vrednost (strokovno temu pravimo tudi " boolean"). Logi ne vrednosti so v ra unalniatvu ali "true" ali "false", v asih jih predstavljamo tudi kot 1 in 0. e je v naaem primeru "izbira" enaka '+' , je logi ni rezultat "true" oziroma 1. e pa smo vtipkali kaj drugega in zato izbira ni enaka '+', bo rezultat enak 0 (torej false). Naj za nadaljevanje obravnave naaega programa predpostavimo, da smo vtipkali '+'. Tedaj je zgornji izraz ekvivalenten: if 1: Za razlago, kaj se nato zgodi, si oglejmo sploano sintakso stavka if: if <logi na vrednost 1>: prvi blok stavkov.. elif <logi na vrednost 2>: drugi blok stavkov.. else: tretji blok stavkov.. e je <logi na vrednost 1> enaka true (1), bo Pyton izvedel stavke, ki so v <prvem bloku stavkov>. Sicer jih bo Python presko il do besede "elif" in tu preveril, ali je <logi na vrednost 2> enaka true. e je, bo Python izvedel stavke v <drugem bloku stavkov> in preostanek presko il. e pa tudi to ni true, bo Python presko il vse stavke do vrstice "else" in izvedel stavke v <tretjem bloku stavkov>. Ker je v naaem primeru prva logi na vrednost enaka 1, bo Python izvedel prvi blok stavkov. V naaem primeru je v tem bloku en sam stavek: print a, "+", b, "=", a+bKaj se s tem stavkom zgodi, lahko uganemo. Preostali stavki pa bodo presko eni. e bi vtipkali '-' , bi se namesto tega izvedel stavek print a, "-", b, "=", a-b e pa bi vnesli karkoli drugega, bi se izvedel stavek print "Napa na izbira" Povejmo ae kaj o stavku "if", ki je zelo prilagodljiv Tako "elif" kot "else" nista obvezna. Tako je minimalna oblika stavka "if" naslednja if <pogoj>: naredi toin "naredi to" bo izveden le, e je <pogoj> izpolnjen (je torej true). Stavek "else" kar pogosto uporabljamo skupaj s stavkim "if" (in ga ne moremo uporabljati samostojno). Imamo torej pogosto obliko: if <pogoj>: naredi to else: naredi ono "naredi ono" se izvede le, e je <pogojt> neizpolnjen (torej false). Verjetno ste ugotovili, kako je zamik stavkov v Pythonu pomemben. Z zamikom naka~emo Pythonu, kaj je to stav ni blok. Poglejmo si naslednji primer if_stavcni_blok_py: 1 print "Vnesi stevilo manjse od 10:" 2 stevilo = input() 3 if stevilo > 9: 4 print "Stevilo je preveliko!" 5 stevilo = 9 6 print "Stevilo sem avtomatsko popravil." 7 else: 8 print "Dobro si izbral" 9 print "Tvoje stevilo je", stevilo           Zamik v zgornjem programu je namenjen temu, da programer vidi, kako program deluje. Za la~ji komentar primera smo vrstice oatevil ili. Vrstice , oatevil ene od 4 do 6, ~e vizualno sodijo skupaj. Tako jih skupaj obravnava tudi interpreter Python. e v naaem primeru vtipkamo atevilo, ve je od 9, bo Python izvedel celotni blok zamaknjenih vrstic (4-6). Python kon a, ko se zamik zaklju i (pri stavku "else"). Python nato presko i blok, ki pada k "else" , in nadaljuje s stavkom za tem blokom (torej ko je naskednjega zamika konec (pri stavku "print" statement)). e pa je vneaeno atevilo manjae ali enako 9, Python presko i prvi blok stavkov, ki sodijo k stavku "if" , in izvede blok stavkov, ki sodijo k stavku "else". Ko zaklju i blok "else", nadaljuje z izvajanjem in torej izvedbo stavka "print". Izmed dveh atevil program ugotovi, katero je ve je primerjava_a_b.py      Druga uporabna razairitev stavka "if" je stavek "elif" kar je okrajaava za "else if". Zamislimo si, da ima naa program naslednji del kode: ... if username == "guest": print "Guest access granted. Some operations are not permitted." security_level = 0 else: if username == "administrator": print "System administrator access granted. No restrictions." security_level = 10 else: print "Normal user", username, "logged in. Good to see you." security_level = 1 ... Najprej opazimo gnezdenje stavka "if" znotraj bloka stavkov. To je povsem dopustno in celo pri akovano. Paziti moramo na zamike. e pa bi imeli ae ve  razredov uporabnikov, bi postalo zamikanje ~e kar neprakti no. "elif" nudi poenostavitev, saj lahko isto napiaemo bolj elegantno: ... if username == "guest": print "Guest access granted. Some operations are not permitted." security_level = 0 elif username == "administrator": print "System administrator access granted. No restrictions." security_level = 10 elif username == "operator": print "Operator access granted. User account management enabled." security_level = 2 elif username == "backup": print "Backup access granted. Tape device management enabled." security_level = 3 else: print "Normal user", username, "logged in. Good to see you." security_level = 1 ...e enkrat se spomnimo, da je "elif" v resnici okrajava za "else: if". Lahko uporabimo tudi kombinacijo else.. if, vendar bi morali paziti na pravilno uporabo oziroma gnezdenje zamikov. Ugotovi ali so tevila 2, 3, in 6 delitelji zbranega tevila: deljivost.py! Namig: Deljivost tevila n s tevilom k ugotovimo tako, da pogledamo, ali je ostanek n % k = 0                      print "Ugotovi ali je dano stevilo deljivo s tevili 2, 3 in 5)" a=input("Vnos stevila a:") print "stevilo a:",a if a%2==0: print "stevilo 2 je delitelj stevila",a else: print "stevilo 2 ni delitelj stevila",a; #podpicje - nadaljevanje programa if a%3==0: print "stevilo 3 je delitelj stevila",a #ce ni podpicja, se program na tistem mestu ustavi else: print "stevilo 3 ni delitelj stevila",a; if a%5==0: print "stevilo 5 je delitelj stevila",a else: print "stevilo 5 ni delitelj stevila",a Rezultat: Ugotovi ali je dano stevilo deljivo s atevili 2, 3 in 5) stevilo a: 234 stevilo 2 je delitelj stevila 234 stevilo 3 je delitelj stevila 234 stevilo 5 ni delitelj stevila 234 Ugotovi ali je prebrani znak rka (znak.py)? Namig: Znake lahko med seboj primerjamo. Vemo, da si rke sledijo zaporedoma in da je rka a manjaa od rke b. Zato za dani znak preverimo, ali je ve ji ali enak prvi rki ali enak zadnji rki abecede. Sestavi program, ki izra una polmer, e poznamo njegovo ploa ino. Preveri smiselnost vhodnega podatka, polmer.py Namig: Vhodni podatek je smiseln, e je nenegativen, saj nimamo krogov z negativno ploa ino.  Ugotovi, ali sta zadnji atevki prebranega atevila pri osnovi 10 enaki. e je atevilo negativno ali pa ima le eno atevko, izpiai obvestilo, stevki.py. Namig: Ko preberemo atevil, se najprej prepri amo, da je pozitivno in da ni manjae od 10. Nato s pomo jo funkcij % (ostanek pri deljenju) in / (kvocient) ugotovimo, ali sta zadnja in predzadnja atevka enaki in izpiaemo ustrezno besedilo. Glavni del reaitve je tako sestavljen iz zaporedja primerjav, ki jih opravimo s stavki if, in pripadajo ih izpisov.                     Preberi tri atevila in jih izpiai urejena po velikosti, velikost.py. Namig: `tevila preberemo v spremenljivke a, b, in c. S tremi primerjanji in morebitnimi zamenjavami poskrbimo, da je vrednost spremenljivke a ve je ali enaka vrednosti spremenljivke b, ta pa zopet ni manjaa od vrednosti v spremenljivki c. Na koncu atevila izpiaemo.                       Dane so dol~ine stranic trikotnika. Preveri ali obstaja trikotnik s takimi dol~inami stranic, stranice.py. Namig: Neizrojeni trikotnik z dol~inami stranic a, b, c obstaja natanko tedaj, ko so atevila a, b, in c pozitivna in velja c<a+b ter c>la-bl.             Napiai program, ki pretvori veliko rko v malo, pretvarjanje_crk.py: Namig: V reaitvi upoatevamo urejenost znakov. Tako je znak K v tabeli znakov enako oddaljeno od zanka A, kot je znak k oddaljen od znaka a. Zato moramo ordinalni vrednosti malega a priateti oddaljenost znaka od znaka A. Da ni te~av, prej preverimo, ali je prebrani znak res velika rka.              Napiai program, ki pretvorimo malo rko v veliko, pretvarjanje_crk_vv_velike.py:  10. Napiite program, ki ugotovi, ali je prebrano tevilo deljivo z dvema izbranima teviloma. Datoteko shranite pod imenom deljivost_dveh.py. Namig: V reitvi tudi preveri, ali je deljenje z deliteljema izvedljivo, Reitev:                  Napii program, ki ugotovi, ali je prebrano tevilo deljivo z dvema izbranima teviloma. Namig: V reitvi tudi preveri, ali je deljenje z deliteljema izvedljivo, deljivost_dveh.py.               V reaitvi smo si pomagali z dvema logi nima spremenljivkama. Tako kot v atevilske spremenljivke shranjujemo vmesne rezultate pri ra unih, da ji ni potrebno kasneje ponovno izra unavati, v spremenljivke tipa boolean shranimo izra unane logi ne vrednosti. V naaem primeru ta prihranek ni velik, pa  pa uporaba logi nih spremenljivk pove a preglednost programa in zmanjaa mo~nosti napake. Pogosto stavek; deliA = x %A==0; zapiemo: If x % A=0: deliA = true else: deliA=false  Si opravil? (zanke) Kadar imamo v algoritmu zanko, uporabljamo v programu stavek while ali for. V Pytonu ima stavek takno obliko: while pogoj: stavki1 # stavki1 se izvajajo, dokler je pogoj izpolnjen else: stavki2 # stavki2 se izvedejo na koncu zanke, ko pogoj ni ve  izpolnjen, razen e med stavki 1 ni bil uporabljen stavek break Primer while_knjiga.py:            print "Vnesi atevilo A in B" A=input() B=input() C=1 while not C>B: print "izpis a*c=", A*C C=C+1Rezultat za: npr.: A=3, B=5 _______________________________ >>> Vnesi tevilo A in B izpis a*c= 3 izpis a*c= 6 izpis a*c= 9 izpis a*c= 12 izpis a*c= 15Umikanje stavka while je obvezno, ker nima znaka za konec. Poleg not uporabimo e and in or. Stavek "if" je kar omejena oblika krmiljenja programa. Python ae vedno izvaja program tako, da se po njem premika naprej, linearno. V asih pa si ~elimo, da bi se nekateri stavki ve krat ponovili. Zato imamo zanke "while". Da bi dobili ob utek za zanke while, uporabimo Python interaktivno Natipkajmo naslednjo zanko (in ne pozabimo na zamike) while_preprost.py:            x = 0 while x < 10: print x x = x + 1 Stavek while je podoben stavku if v tem, da pri akuje logi no vrednost, kateri sledi dvopi je. V naaem primeru je logi na vrednost rezultat preverjanja, e je x manjai od 10. Dokler je x manjai od 10, bo Python izvajal naslednji blok stavkov (z izpisom x in njegovim pove evanjem). `tevne zanke so v programiranju kar pogoste. Primeri izpisa s tabulatorjem:  The string '\t' represents a tab character. Primer izpisa v vrstici. i = 1 while i <= 6: print 2*i, ' ', i = i + 1 print  Primer izpisa v vrstici. i = 1 while i <= 6: printMultiples(i) i = i + 1 Potevanka poljubnih tevil while_postevanka.py          Program, ki izpisuje Fibonaccijevo zaporedje: 1, 1, 2, 3, 5, 8, 13, (1+0. 1+1, 1+2, 2+3, 3+5,) fibonaccijevo_za.py                r=1 p=1 i=0 print "Koliko vrednoti mora izracunati?" k=input() print"Vnesi stevilo:",k while not i==k: print "izpis r:",r p=r-p r=r+p i=i+1 Nariite diagram poteka in napiite program, ki prebere dve tevili. Prvo tevilo izpie tolikokrat, kot je vrednost drugega tevila, izpis_stevil.py  INCLUDEPICTURE "http://www.zrsss.si/maja/apjhtm/diagr/Dia_05a.gif" \* MERGEFORMATINET  Kateri vrednosti zavzameta i in x? (Program je podan!) vrednost_x_y.py pow(x,y) vrne vrednost xy sqrt(x) vrne x2 ( EMBED Equation.3  -1)2 Nariaite diagram poteka in napiaite program, ki prebere in izpiae vsa cela atevila med prebranima celostevil nima vrednostima. Predpostavimo, da je prva prebrana celoatevil na vrednost manjaa od druge. vmes.py  INCLUDEPICTURE "http://www.zrsss.si/maja/apjhtm/diagr/Dia_06.gif" \* MERGEFORMATINET  Nariaite diagram poteka in napiaite program, ki prebere dve celoatevil ni vrednosti in izpiae vsa cela atevila med njima. cela_st_vmes.py  INCLUDEPICTURE "http://www.zrsss.si/maja/apjhtm/diagr/Dia_08.gif" \* MERGEFORMATINET  Druga zelo pogosta zanka so interakcije, ko ponavljamo neko akcijo, dokler uporabnik to ho e while_interakcija.py:               print "Vnaaaj z velikimi crkami NE toliko casa dokler ne prekine z DA" opravljeno="NE" #Pyton loci velike in male crke while opravljeno !="DA": print "SI OPRAVIL?" print "Vnesi DA ali NE" opravljeno=raw_input() if (opravljeno !="DA") and (opravljeno !="NE"): print "Izpii DA ali NE:" #PAZI ZAMIKE! print "Vnos je:",opravljeno opravljeno = "ne" while opravljeno != "da": print "Si opravil?" opravljeno = raw_input() if (opravljeno != "ne") and (opravljeno != "da"): print "napisi prosim da ali ne." Uvedli smo operator "!=" , ki pomeni "ni enako". Zato se bo ta zanka ponavljala toliko asa, dokler bo vrednost "opravljeno" razli na od "da". Lahko pa bi ta pogoj izrazili z naslednjo obliko while not opravljeno == "da":kar bi povzro ilo preverjanje, e je "opravljeno" enako "da" in bi vrnilo invertirano logi no vrednost rezultata. Da bi to bilo bolj jasno, lahko zgornjo vrstico zapiaemo tako while not (opravljeno == "da"): kar je jasno tako Pythonu kot programerjem. Oklepaji so koristen pripomo ek za dolo itev, kateri deli izraza sodijo skupaj. Uporabljamo jih v vrstici if (opravljeno != "ne") and (opravljeno != "da"): ker je to bolj jasno kot pa if opravljeno != "ne" and opravljeno != "da": Oklepaji postanejo ae posebej pomembni pri zamotanih izrazih, kjer postaja zdru~evanje operatorjev in njihovih izrazov nepregledno. Preden zapustimo zanke, omenimo ae neskon no zanko: while 1: print "Nikdar se ne bom ustavil!" Obi ajno je to programerska napaka (hroa , bug) Ko se ra unalniki "zaklenejo" oziroma "obesijo", je to pogosto zaradi neskon nih zank v slabo sestavljenih programih. V asih pa ~elimo napisati nekaj, kar izgleda kot neskon na zanka, pa v resnici to ni. Python nam nudi mo~nost "predhodnega" izstopa iz zanke z uporabo stavka "break" , kot v naslednjem primeru while_break.py while 1: print "Si opravil?" print "vnesi DA ali NE!" opravljeno=raw_input() print "Vnesel si:", opravljeno if opravljeno == "DA": break print "Dobro si opravil!" Rezultat: >>> Si opravil? vnesi DA ali NE! Vnesel si: NE Si opravil? vnesi DA ali NE! Vnesel si: DA Dobro si opravil! while 1: print "Si opravil?" opravljeno = raw_input() if opravljeno == "da": break print "Dobro, opravil si!" Ta program bi kro~il v zanki ve no, razen e ne vtipkamo "da", kar povzro i, da bo vrednost "opravljeno" enaka "da", kar povzro i, da se izvede stavek za stavkom "if", to pa je v naaem primeru "break". Po stavku "break" nadaljuje Python izvajanje stavka print "Dobro, opravil si!" Napiai program, ki izpiae vsa liha atevila z intervala a in b. Meji intervala sta podatka, liho_stevilo.py Namig: Vsako atevilo z intervala preverimo, ali je liho. e je, ga izpiaemo. Pregledovanje vseh atevil opravimo s pomo jo stavka while. Pred stavkom atevec postavimo na spodnjo mejo intervala. Pogoj za ustavitev zanke je, da atevec ae ni presko il spodnjo mejo intervala. Znotraj zanke preverimo lihost atevca, opravimo izpis, e je potrebno, in ga pove amo. (PROGRAM NE DELA  odd i= ?????)             Napiai program, ki izpiae vse ve kratnike atevila 3 z intervala med a in b. V vsaki vrstici naj bo izpisanih po deset ve kratnikov. Meji intervala sta podatka, veckratnik3.py. Namig: Najprej poia emo najmanjai ve kratnik atevila 3, ki le~i na izbranem intervalu. Nato v zanki while pove ujemo atevec s korakom 3 in izpisujemo ve kratnike. Pri tem v pomo~ni spremenljivki vodimo evidenco o tem, koliko atevil smo ~e izpisali v trenutni vrstici. Ko jih izpiaemo deset, sko imo v naslednjo in ustrezno popravimo pomo~no spremenljivko. Zanko ponavljamo, dokler atevec ne prekora i zgornje meje.                      print "program izpise veckratnike 3 z intervala med a in b" print "vnos spodnje meje - a" a=input("vnos spodnje meje a:") print "spodnja meja a:",a print "vnos zgornje meje - b" b=input("vnos zgornje meje b:") print "zgornja meja b:",b vrstica=10 k=3 j=0 print "veckratniki 3 so:" while not a%k==0: a=a+1 else: i=a while i<=b: if i==0: i=i+k else: print i,";", #izpis veckratnikov stevila 3 v vrsti (Pazi, vejica za izpis v vrsto!) i=i+k j=(j+1)%vrstica if j==0: print #izpis po 10 veckratnikov v vrsti Rezultat: program izpise veckratnike 3 z intervala med a in b vnos spodnje meje - a spodnja meja a: -23 vnos zgornje meje - b zgornja meja b: 44 veckratniki 3 so: -21 ; -18 ; -15 ; -12 ; -9 ; -6 ; -3 ; 3 ; 6 ; 9 ; 12 ; 15 ; 18 ; 21 ; 24 ; 27 ; 30 ; 33 ; 36 ; 39 ; 42 ; Izpiai prvih 10 atevil, ki so ve ja od a, so deljiva s 3 in niso deljiva s 7, 10_stevil.py. Komentar: Glavni del reaitve sestavlja zanko while, v kateri se spreminjata dva atevca. 1. te e po vseh celih atevilih od a naprej in se pri vsaki ponovitvi zanke pove a za ena. Drugi ateje, koliko atevil z iskano lastnostjo smo ~e naali. Ko 2. atevec dose~e vrednost 10, se zanka kon a.                      print "Poisce prvih deset stevil, vecjih od a, ki imajo predpisano lastnost!" print "Vnos zacetne vrednosti!" a=input("zacetna vrednosta:") print "zacetna vrednost a:",a koliko=10 deli=3 nedeli=7 j=0 i=a+1 print "stevila vecja od a=",a,"ki so deljiva s",deli," in ne s:", nedeli, "so:" while j0): print i,";", #ce i izpolnjuje pogoje ga izpisemo j=j+1 i=i+1 Rezultat: Poisce prvih deset stevil, vecjih od a, ki imajo predpisano lastnost! Vnos zacetne vrednosti! zacetna vrednost a: 13 stevila vecja od a= 13 ki so deljiva s 3 in ne s: 7 so: 15 ; 18 ; 24 ; 27 ; 30 ; 33 ; 36 ; 39 ; 45 ; 48 ; Beri cela atevila, dokler ne preberea atevila 0, in izra unaj njihovo povpre je, cela_st.py. Namig: Ker branje kon amo aele, ko preberemo atevilo 0, ne vemo vnaprej, koliko atevil bomo prebrali. Za izra un povpre ja prebranih atevil moramo vedeti, koliko atevil smo vnesli in kolikana je njihova vsota. Zadnje ni le ne smemo upoatevati. Pazi, da ne ra unaa tudi tedaj, ko je 0 edino vneseno atevilo.                         print "Izracun in izpis povprecja prebranih celih stevil!" x=1 #zanka se prvic izvede s=0 v=0.0 # decimalni zapis, zaradi izracuna povprecja z dec.vejico while x<>0: x=input("vnos stevila x:") print "Vnos stevila x:",x v=v+x s=s+1 s=s-1 if s==0: print "Vneseno ni bilo nobeno stevilo." else: p=v/s print "Povprecje prebranih",s,"stevil je:",p Rezultat: zracun in izpis povprecja prebranih celih stevil! Vnos stevila x: 5 Vnos stevila x: 3 Vnos stevila x: 2 Vnos stevila x: 0 Povprecje prebranih 3 stevil je: 3.33333333333 Izracun in izpis povprecja prebranih celih stevil! Vnos stevila x: 0 Vneseno ni bilo nobeno stevilo. Napiai program, ki izra una vsoto atevk prebranega celega atevila. Predznak atevila zanemari vsota_stevk.py. Namig: S pomo jo znaka % dobimo zadnjo atevko atevila. To priatejemo k trenutni vsoti atevk in s z deljenjem - / atevilu odre~emo zadnje atevilo. Postopek ponavljamo, dokler atevilo ne postane enako ni .               print "Izracun vsote stevk danega celega stevila." print "Vnos stevila" stevilo=input("Vnesi stevilo:") print "Vneseno je stevilo:",stevilo b=10 vsota=0 tekoci=abs(stevilo) while tekoci<>0: vsota=vsota+(tekoci%b) tekoci=tekoci/b print "Vsota stevk stevila", stevilo,"je",vsota Rezultat: Izracun vsote stevk danega celega stevila. Vnos stevila Vneseno je stevilo: 5437 Vsota stevk stevila 5437 je 19 Izracun vsote stevk danega celega stevila. Vnos stevila Vneseno je stevilo: -567 Vsota stevk stevila -567 je 18 Komentar: Z naaim programom lahko reaimo tudi nekoliko sploanejao nalogo. Z druga no izbiro konstante b dose~emo,da naaa reaitev izra una vsoto atevk prebranega atevila, zapisanega pri osnovi b. Sestavi program, ki bo naravno atevilo izpisal obrnjeno. Tako naj pri prebranem tevilu 12345 izpie 54321, obrni_st.py. Namig: Uporabi prirejeno reitev prejnje naloge.            print "Obrni stevilo!" print "vnesi stevilo." stevilo=input("Vnos stevila:") print "vneseno stevilo:",stevilo stevilo=abs(stevilo) print "Obrnjeno stevilo:" while stevilo<>0: stevka=stevilo%10 stevilo=stevilo/10 print stevka, Preveri, e je dano atevilo palindrom. Tako je atevilo 1221 palindrom, saj se prebere z leve enako kot z desne, atevilo 1234 pa ni palindrom.py. Namig: `tevil obrnemo in ga primerjamo z originalom. Obra anje si poglejmo na primeru: 12621 1 + 10*0 0 126 2 + 10*1 1 12 6 + 10*12 12 1 2 + 10*126 126 0 1 + 10*1262 12621 Komentar:Z absolutnimi vrednostmi delamo zato, da program pravilno deluje tudi za negativna tevila                         Rezultat: a)>>> Preveri, ce je stevilo palindrom. Vnesi stevilo. Stevilo 23432 je palindrom b) Preveri, ce je stevilo palindrom. Vnesi stevilo. Stevilo 23434 ni palindrom Vrednost eksponentne funkcije lahko izra unamo tako, da seatevamo lene vrste 1 + x +  EMBED Equation.3  +  EMBED Equation.3  + & +  EMBED Equation.3  + & To po nemo toliko asa, dokler se nova delna vsota ne razlikuje ve  od prejanje. Tako izra unaj exp(x) exp.py. Namig: Naslednji len v vrsti dobimo iz prejanejga tako, da ga pomno~imo z x in delimo z njegovo zaporedno atevilko:  EMBED Equation.3  =  EMBED Equation.3  *  EMBED Equation.3  Komentar: V reaitvi smo vrednost eksponentne funkcije, ki smo jo dobili po naaem postopku, primerjali z vrednostjo, ki jo vrne vgrajena funkcija, exp. Za pozitivno x  e se vrednosti ujemata, pri po absolutni vrednosti nekoliko ve jih negativnih x-ih pa pride do velikih razlik. Naa na in ra unanja za take x-e ni primeren, ker leni vrste spreminjajo predznak in so lahko precej veliki, kon ni rezultat pa je zelo majhen. Bistveno boljae obnaaanje dose~emo, e pri negativnih x-ih vrednost funkcije izra unamo iz zveze exp(-x) =  EMBED Equation.3  . Od poznavanja vhodnega podatka x lahko od tod ocenimo, koliko ponovitev zanke je potrebnih, da se ra un kon a.                     print "Eksponentna funkcija" print "Vnos tocke, v kateri racunamo vrednost." x=input("vnos tocke x:") print "Vnesena tocka je",x vs=1 #delna vsota clen=x #tekoci clen vrste n=1 #njegova stevilka while (vs+clen) <> vs: vs=vs + clen n = n + 1 clen = clen * x / n print "Izracunana vrednost delne vsote:",vs Rezultat: Eksponentna funkcija Vnos tocke, v kateri racunamo vrednost. Vnesena tocka je 1 Izracunana vrednost delne vsote: 2 Eksponentna funkcija Vnos tocke, v kateri racunamo vrednost. Vnesena tocka je 2 Izracunana vrednost delne vsote: 6 Eksponentna funkcija Vnos tocke, v kateri racunamo vrednost. Vnesena tocka je 3 Izracunana vrednost delne vsote: 16 Seznami Morda si ~e ugotovil, da Python razpozna stvari, ki spadajo v razli ne razrede podatkov (tipe podatkov). Doslej smo spoznali: INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT tevila INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Cela tevila (Integers): 1, 456, -789 INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Realna tevila (Floating-point): 1.23, 12.3, 123.0 INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Dolga cela tevila (Long integers): 123456789012345678901234L INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Nize (Strings) INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Med dvojnimi narekovaji : "Niz je niz" INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Med enojnimi narekovaji: 'ne glede na narekovaje"' INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Ne pa med takimi: `to pa ni niz` as je, da spoznamo tretji tip, ki je zelo pripraven za zdru~evanje podatkov v skupine. To je seznam (list) podatkov Sezname piaemo z znakom "[" na za etku in znakom "]" na koncu, med posameznimi vrednostmi pa je vejica. Posamezne vrednosti so lahko poljubnega tipa. Na primer: [1, 2, 3] ["To", "je", 'primer', 'seznama'] Ali pa primeri z meanimi podatki: ["ena", 2, "deset", -23] [2, "na", 8, "potenco je", 256] Lahko vsebujejo tudi druge sezname: ["seznami", ["so", "zabavni"]] ["gnezdenje", ["vec", ["seznamov", ["nas"], "lahko"], "zmede"], "."] Imamo lahko celo prazne sezname: [] Mimogrede, prazne sezname interpretiramo z logi no vrednostjo false. Morda se spraaujea, kako bi take sezname uporabljal? Po akaj, najprej moramo vedeti, da lahko dostopamo do posameznih elementov seznama tako, da za imenom seznama uporabimo oglate oklepaje "[]"'. Na primer: a = ["to", "je", "uporabno"] print a[0] # bi izpisalo to print a[1] # bi izpisalo je print a[2] # bi izpisalo uporabno print a[3] # to pa bila napaka a[1] = "ni" # Posamezne elemente lahko spreminjamo print a # izpise ["to", "ni", "uporabno"]Seznami so vedno oatevil eni za enai z ni . e bi seznam imel 7 elementov, bi zadnji imel atevilko 6. Hmm, spraaujea, kaj pomenijo znaki #? S tem nakazujemo komentarje. Python ignorira vse, kar v dani vrstici sledi znaku # (razen, e je # znotraj nekega niza). Komentarje piaemo zato, da razlo~imo, kaj naa program po ne. Dobri programerji svoje programe vedno primerno komentirajo. Kako bi torej lahko uporabil naslednji seznam: znaki # - nakazujemo komentarje SeznanNakupov=['mleko', "kruh", 'sir', 'salama', 0] index=0 # index bo kazal na stvar v seznamu # ki jo pravkar uporabljamo while SeznamNakupov[index] != 0: # Ko pridemo do 0, smo opravili print "Kupiti moras", SeznamNakupov[index], "!" index=index+1 # korak na naslednjo stvar print "To je vse." V tem seznamu smo uporabili marker ("0"), da z njim ozna imo konec seznama. To seveda ni najbolj elegantno. Zato je as, da spoznamo eno od pripravnih funkcij, vgrajenih v Pythonu. Dol~ino seznama dobimo s funkcijo "len". Na primer: len(["a", "seznam"]) # vrne 2 velikSeznam = [1,2,3,4,5,6,7,8,9] dolzina = len(velikSeznam) # zato bo dolzina = 9 primer: strings.py primer: strings_char.py primer: strings_abc.py  fruit = "banana" letter = fruit[1] print letter Reitev: a The following example: strings_abc.py shows how to use concatenation and a for loop to generate an abecedarian series. "Abecedarian" refers to a series or list in which the elements appear in alphabetical order. For example, in Robert McCloskey's book Make Way for Ducklings, the names of the ducklings are Jack, Kack, Lack, Mack, Nack, Ouack, Pack, and Quack. This loop outputs these names in order: Primer: strings_for_count, preteje tevilo 'a' v besedi banana. fruit = "banana" count = 0 for char in fruit: if char == 'a': count = count + 1 print count Reitev: >>> 3 Primer len, len.py.  ali Sedaj lahko neelegantni program polepamo seznam_nakupov.py:  SeznamNakupov=['mleko', "kruh", 'sir', 'salama'] index=0 # index bo kazal na stvar v seznamu # ki jo pravkar uporabljamo while index < len(SeznamNakupov): print "Kupiti mora", SeznamNakupov[index], "!" index=index+1 # korak na naslednjo stvar print "To je vse.Seznam lahko tudi podaljujemo z dodajanjem vrednosti. To storimo s funkcijo append append.py.: a=[1, 2, 3] a.append(4) print a # would bi izpisalo [1, 2, 3, 4]REZULTAT: >>> [1, 2, 3, 4] as je za krajao nalogo: Napiai program, ki ra una Fibonaccijevo zaporedje. Za ni s seznamom, ki vsebuje 1, 1 Razairjaj seznam v skladu z definicijo Fibonaccijevega zaporedja: Fib[n] = Fib[n-1] + Fib[n-2]Program naj vpraaa uporabnika, koliko vrednosti naj izra una. Nato pa uporabimo zanko "while" za airjenje seznama, dokler ne dobimo dovolj vrednosti. Kon no izpiaimo rezultirajo i seznam. Da bo bolj jasno, Fibonaccijevo zaporedje poteka tako: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... For OperationResultNotesx in sTrue if an item of s is equal to x, else False(1)x not in sFalse if an item of s is equal to x, else True(1)s + tthe concatenation of s and t(6)s * n , n * sn shallow copies of s concatenated(2)s[i]i'th item of s, origin 0(3)s[i:j]slice of s from i to j(3), (4)s[i:j:k]slice of s from i to j with step k(3), (5)len(s)length of smin(s)smallest item of smax(s)largest item of s Stavek for ima obliko for i in s: stavki1 # stavki1 se izvajajo dokler je index i v okviru tabelari ne spremenljivke s else: stavki2 # stavki se izvedejo na koncu zanke, razen, e med stavki1 ni bil uporabljen stavek break, V asih je uporaba zanke "while" za iteracije preko vseh elementov seznama malo neprakti na. }ivljenje bo la~je, e uporabimo drugo obliko krmilnega stavka, ki mu pravimo zanka "for", ki deluje na naslednji na in: for_dnevi.py teden=['ponedeljek','torek','sreda','cetrtek','petek','sobota','nedelja'] print "Dnevi v tednu so: " for dan in teden: print dan, ",", print Rezultat: Dnevi v tednu so: ponedeljek , torek , sreda , cetrtek , petek , sobota , nedelja , V tem primeru Python za vsako vrednost v seznamu "teden" priredi spremenljivki z imenom "dan" to vrednost in nato izvede stavke bloka, ki sledi. Seveda lahko na ta na in uporabimo katerikoli seznam in za za asno spremenljivko uporabimo katerokoli ime. Izpiai angleako abecedo . V vsaki vrstici izpiai po 5 znakov, for_angl_abc.py.  Zanke "for"najbolj pogosto uporabljamo za sezname atevil. Python nam nudi funkcijo, ki avtomatsko tvori seznam atevil. To je funkcija "range" in ima le en parameter, ki pomeni dol~ino seznama. Na primer: for_range.py range(10) # tvori [0,1,2,3,4,5,6,7,8,9] for x in range(15): # ta zanka izpise 1 do 15 print x+1 for x in range(15): # ta zanka izpise 1 do 15 print x+1,",", Rezultat: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , ____________________________________________________________________ Izpii cela tevila med a in b. Komentar: For uporabljamo obi ajno, ko za zanko vnaprej vemo, kolikokrat se bo ponovila. e je za etna vrednost atevca stavka for manjaa od kon ne vrednosti, se jedro ne izvrai. Ro no izpiaite rezultate 1. in 2. programa 1. for_med_a_in_b.py  2. for_med1_a_in_b.py  Paziti moramo na naslednje: ni varno spreminjati seznam, preko katerega pravkar iterira zanka "for". Primer take slabe rabe je naslednji:: a = range(10) for stevilo in a: a[stevilo] = stevilo+1 Podobno kot zanko "while" lahko tudi zanko "for" pred asno zapustimo s stavkom "break". Zanka "for" ima tudi blok "else", ki se izvede, e ne uporabimo stavka "break". Primer, for_break.py: izbira = ['majhen','srednji','velik'] for velikost in izbira: print "Ali zelis", velikost, "kozarec vode?" odgovor = raw_input() if odgovor == 'da': break else: print "Tudi prav! Ne dam ti nic!" velikost="prazen" print "Izbral si", velikost, "kozarec vode." Rezultat 1 in 2.   Primer: range_list.py  horsemen = ["war", "famine", "pestilence", "death"] i = 0 while i < 4: print horsemen[i] i = i + 1 Ali - primer bolj nazornega izpisa, for_break1.py:   Vaja: for_break_ocena print "Ocenjevanje" ocena = ['2','3','4','5'] for znanje in ocena: print "Ali si se naucil za oceno", znanje, "?" print "Odgovori z da ali ne" odgovor = raw_input("znanje: 2,3,4, ali 5") if odgovor!='da': print "NE" elif odgovor=='da': print "DA" break else: print "Nauci se.", znanje="1" print "Svoje znanje si ocenil za oceno", znanje, "."   Zanke "for" in "while" lahko tudi gnezdimo (podobno, kot lahko znotraj stavka "if" vstavimo nek drug stavek "if""). Kot primer gnezdenja bi naslednji program na zaslon narisal s pomo jo zvezdic nek vzorec : for_gnezdenje.py for y in range(-10,10): for x in range(-10,10): if (x*x + y*y) < 90: print "*", else: print " ", printRezultat: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Opazimo, da smo tu funkciji "range" posredovali dva argumenta. as je, da s pomo jo referen nih priro nikov ugotovimo, kaj pomeni ta nenavadni primer uporabe funkcije "range". Referen ni priro nik najdemo na  HYPERLINK "http://www.python.org/" doma i strani Python, ko tam poia emo " HYPERLINK "http://docs.python.org/lib/lib.html" Library Reference". Poia imo sekcijo " HYPERLINK "http://docs.python.org/lib/built-in-funcs.html" Built-in Functions" (vgrajene funkcije). Tu poia imo funkcijo "range" in si preberimo vse o njej! Tu najdemo tudi druge vgrajene funkcije, ki smo jih doslej uporabili. Podatkovne tipe, ki smo jih uporabljali, pa najdemo v sekciji " HYPERLINK "http://docs.python.org/lib/types.html" Built-in Types". Poglej za primere:  HYPERLINK "http://wiki.python.org/moin/BeginnersGuide/Programmers" http://wiki.python.org/moin/BeginnersGuide/Programmers Izra unaj vsoto korenov prvih 20 naravnih atevil, for_koren.py Namig: Ker vemo, koliko korenov moramo seateti, bomo nalogo reaili z uporabo stavka for. `tevec v njem bo tekel od 1 do 20, znotraj zanke pa bomo k pomo~ni spremenljivki vsota priatevali korene iz atevca. Seveda moramo pred zanko spremenljivki vsota prirediti vrednost 0.  Izra unaj vsoto korenov naravnih atevil med a in b s korakom c, for1_koren.py.       Napiai program, ki poia e vse reaitve ena be  EMBED Equation.3  = a4 + b4 + c4. Pri tem je  EMBED Equation.3  atevilo, ki ga sestavljajo atevke a, b, c, for_enacba.py. Namig: `tevke a, b in c lahko zavzamejo vrednosti od 0 do 9. Pregledamo torej vse mo~ne izbire vrednosti za vse tri atevke in za vsako izbiro izra unamo, ali je reaitev.   Reaitev smo zgradili iz treh vgnezdenih stavkov for. V prvem izberemo vrednost atevke a. pri izbranem a-ju v drugem stavku for dolo imo vrednost b-ja, nato pa v tretjem ae vrednost c-ja. Tako se znotraj zank vrednosti atevk a, b, in c izbrane. S kratkim ra unom preverimo, ali izbrane vrednosti dolo ajo reaitev. Ko premialjujemo o pravilnosti reaitve, moramo preveriti, da pri ra unanju ne pride do prekora itve. V naai nalogi do nje ne pride. V razredu je n u encev. Ugotovi atevilo u encev, ki so manjai od 150 cm, visoki od 150 do 160 cm, od 160 do 170 cm, od 170 do 180 cm in ve ji od 180 cm, for_ucenci.py. Namig: najprej preberimo, koliko u encev je v razredu. Za vsako viaino bomo vodili svoj atevec. V stavku for preberimo viaino. V reaitvi smo se tudi odlo ili, kam atejemo u ence, ki so po viaini na meji med dvema skupinama.  Rezultat: >>> Vnesi stevilo ucencev v razredu stevilo ucencev v razredu: 5 vstavi visino 1 ucenca visina ucenca: 150 vstavi visino 2 ucenca visina ucenca: 140 vstavi visino 3 ucenca visina ucenca: 160 vstavi visino 4 ucenca visina ucenca: 160 vstavi visino 5 ucenca visina ucenca: 170 Stevilo ucencev, manjsih od 150 cm je: 1 Stevilo ucencev, visokih od 150 do 160 cm je: 1 Stevilo ucencev, visokih od 160 do 170 cm je: 2 Stevilo ucencev, visokih od 170 do 180 cm je: 1 Stevilo ucencev, vecjih od 180 cm je: 0 Izra unaj produkt naravnih atevil od 1 do n, fakulteta.py. Namig: produkt prvih n naravnih atevil izra unamo tako, da v zanki for, v kateri te e atevec od 1 do n, pomo~no spremenljivko mno~imo s trenutno vrednostjo atevca. Za etna vrednost pomo~ne spremenljivke je 1. Komentar: produktu prvih n naravnih atevil re emo fakulteta atevila n. print "Fakulteta." print "Vnesi n." n=input("Vnos n:") print "Stevilo n:",n f=1 for i in range(1,n+1): f=f*i print "fakulteta :",n,"! je",f Rezultat: >>> Vnesi n. Stevilo n: 5 fakulteta : 5 ! je 120 Izra un max atevila, for_max_stevilo.py. print "Izracun max stevila!" a=(5,7,122,23,45,1,6,3,23) m=a[0] for i in a: if m<i: m=i print m Rezultat: Izracun max stevila! >>> 122 Izra un min atevila, for_min_stevilo.py. print "Izracun min stevila!" a=(8,7,122,23,45,1,6,3,23) m=a[0] for i in a: if m>i: m=i print m Rezultat: Izracun min stevila! >>> 1 Izra unaj prvih k lenov Fibonaccijevega zaporedja. Naslednji len zaporedja je vsota prejanjih dveh: fn+2=fn + fn+1, za etna lena sta f1 in f2, pa sta podatka. Opazuj, kaj se dogaja s kvocienti dveh zaporednih lenov  EMBED Equation.3  in  EMBED Equation.3 , for_fibonacci.py Namig: Prva dva lena zaporedja in atevilo k preberimo. Nato s stavkom for, v katerem te e atevec od 3 do k, izra unamo naslednje lene in izpisujemo kvociente. Komentar: na teko em koraku vedno potrebujemo tri elemente zaporedja: novega in prejnja dva. Po izpisu moramo ustrezno popraviti vloge elementov. Rezultat: Izracun prvih clenov posplosenega Fibonaccijevega zaporedja. Vnos 1. clena fn. 1.fn: 3 Vnos 2. clena fn1. 2.fn1: 5 Koliko clenov zaporedja naj izracunam? Stevilo clenov: 8 3 . clen je: 8 , kvocienta pa sta: 1.6 , 0.625 4 . clen je: 13 , kvocienta pa sta: 1.625 , 0.615384615385 5 . clen je: 21 , kvocienta pa sta: 1.61538461538 , 0.619047619048 6 . clen je: 34 , kvocienta pa sta: 1.61904761905 , 0.617647058824 7 . clen je: 55 , kvocienta pa sta: 1.61764705882 , 0.618181818182 8 . clen je: 89 , kvocienta pa sta: 1.61818181818 , 0.61797752809 Izpii risbo, kot jo prikazuje slika: 1 * 2 ** 3 *** 4 **** 5 ***** Viina trikotnika naj bo podatek, for_zvezdice.py Namig: najprej v spremenljivko n preberemo tevilo vrstic, ki jih moramo izpisati. Nato s stavkom for, pri katerem te e atevec od 1 do n,izpisujemo vrstico za vrstico. Pri izpisu posamezne vrstice najprej izpiaemo atevec, nekaj presledkov in nato s stavkom for ae ustrezno atevilo zvezdic. Seveda ne smemo pozabiti na skok v novo vrstico.  Formalnosti Sedaj je as, da o stvareh, ki smo jih spoznali spregovorimo bolj formalno. Vsi jeziki imajo namre  neko sintakso (oziroma slovnico), ki definira na in, kako ra unalnik tolma i naao izvorno kodo. Slovnico jezika moramo poznati, e ~elimo z lahkoto in brez nepotrebnih napak razairjati podane primere ali programirati nove. Koda v jeziku Python ima v osnovi tri sestavine: vrednosti, izraze stavke. Vrednosti so lahko atevila, kot na primer 1, 2 ali 2011. Vrednosti so lahko tudi nizi, kot na primer "Pozdravljen", 'kako si' ali "Hvala lepa". Vrednosti so pravzaprav lahko kakraenkoli tip podatka, ki ga Python razpoznava (kot na primer seznami). Izrazi izra~ajo neko vrednost ali neko zamisel. Najbolj preprost izraz je vrednost enega literala Tako je 1izraz, prav tako sta izraza "To je niz"in ["a", "b", "c"] Preproste izraze lahko kombiniramo s pomo jo operatorjev in tako dobimo bolj komplicirane izraze. Imamo dve vrsti operatorjev: unarne in binarne. Unarni operatorji uporabljajo eno samo vrednost, kot na primer: - stevilo # vrne aritmeti no negatovno vrednost "stevila" - 1 # vrne -1 not a # vrne logi no invertirano vrednost a not 1 # vrne 0 not 0 # vrne 1 Binarni operatorji uporabljajo dve vrednosti, kot na primer: a + b # vrne vsoto a in b 1 + 2 # vrne 3 (1 plus 2) 'abc' + 'def' # vrne 'abcdef' a - b # vrne razliko a - b 1 - 2 # vrne - 1 (1 minus 2) 10 / 2 # vrne 5 (10 deljeno z 2) 10 * 2 # vrne 20 (10 krat 2) a and b # vrne logi ni AND logi nih vrednosti a, b 0 and 0 # vrne 0 0 and 1 # vrne 0 1 and 1 # vrne 1 a or b # vrne logi ni OR logi nih vrednosti a, b 0 or 0 # vrne 0 1 or 0 # vrne 1 1 or 1 # vrne 1 a == b # vrne 1 e je a enak b, sicer vrne 0 1 == 2 # vrne 0 "Pozdrav" == 'Pozdrav' # vrne 1 a > b # vrne 1 e je a ve ji od b, sicer vrne 0 10 > 5 # vrne 1 a < b # vrne 1 e je a manjai od b, sicer vrne 0 10 < 5 # vrne 0 Ko operator "vrne" vrednost, pomeni to, da Python nadomesti originalni izraz z bolj preprostim, ovrednotenim izrazom. Tako bo izraz 6 / 3 nadomea en z 2 ae preden bo uporabljen. Tudi drugi operatorji delujejo enako. Take nove izraze lahko kombiniramo z operatorji na enak na in, kot smo z operatorji kombinirali preproste izraze. 10 * 2 + 5 * 4 # vrne 20 + 20 kar vrne 40 Ko tako kombiniramo izraze, je v asih potrebno uporabiti oklepaje, s katerimi jasno povemo, kakano naj bo zaporedje operacij. Sicer bi lahko predpostavili, da je v prejanjem primeru Python ugotovil, da je 10 * 2 enako 20, nato 20 + 5 je 25, nato 25 * 4 je100, kar pa ni tisto, kar smo hoteli. Tako lahko bolj jasno zapiemo (10 * 2) + (5 * 4) kar prisili Python, da vzame najprej 10 * 2 in 5 * 4, ter nato oba vmesna rezultata seteje. Izrazi so imenitna stvar, vendar neuporabni brez stavkov. Stavki so programske vrstice, ki povedo Pythonu, da naj nekaj naredi. Eden najbolj preprostih stavkov je stavek print. Ta stavek pove Pythonu, da naj vzame vrednosti, ki slede besedici print in jih izpie na zaslon. print "hello", 10 * 2 # pove Pythonu, naj izpise na zaslonu hello 20 Prireditve so naslednja oblika stavkov. Z njimi povemo, da naj nekemu imenu priredi neko vrednost, kot na primer: ime = vrednost e je bila temu imenu ~e dodeljena neka vrednost, bo tako nadomea ena. e pa takega imena ae nismo uporabili, bo "tvorjeno" in mu bo dodeljena vrednost, izra~ena za ena ajem (znakom "="). Nekaj primerov: a = 1 # tvori spremenljivko z imenom a in vrednostjo 1 a = 'Pozdrav' # zamenja vrednost a s 'Pozdrav' b = [a, 2] # tvori spremenljivko b z vrednostjo ['Pozdrav', 2] b = ['a', 2] # nadomesti vrednost b z ['a', 2] Stavki prirejanja, stavek print in podobni so preprosti stavki. Stavki, ki potrebujejo ve  vrstic, so sestavljeni stavki. Vsi stavki za krmiljenje programskega poteka so sestavljeni stavki. Stavek if if pogoj: izvedi ta blok stavkov elif drug_pogoj: izvedi ta drugi blok stavkov else: izvedi te stavke je sestavljeni stavek, ki lahko v sebi vsebuje druge stavke. Podobno je s stavkoma while in for while pogoj: izvedi te stavke for ime in seznam: izvedi te stavke To je vsa zgradba programov v jeziku Python. Ti programi so seznami stavkov. Stavki povedo Pythonu, da naj nekaj naredi z izrazi. Izrazi pa so zapis neke informacije. Obdelava informacij pa je to, emur so programi namenjeni. Pa naj bo to program za ra unanje pla  ali pa ra unalniaka igrica. Funkcije Zelo pogosto imamo skupino stavkov, ki jo ve krat potrebujemo v naaem programu. te~ave z ve kratnim pisanjem enih in istih vrstic reai Python tako, da taki skupini oziroma bloku stavkov damo ime in se kasneje na to ime sklicujemo. Temu pravimo, da smo naredili funkcijo in na ta na in razairili slovar Pythona. S tem lahko piaemo tudi bolj obse~ne programe. Poskusimo sestaviti naslednji program fun_kvadrat.py: def kvadrat(x): rezultat = x * x return rezultat print "Ta program racuna kvadrate stevil." stevilo = 1 while stevilo != 0: print "Vnesi stevilo (ali vnesi 0 za koncanje):" stevilo = input() novoStevilo = kvadrat(stevilo) print stevilo, "na kvadrat je", novoStevilo print "Hvala za sodelovanje"Rezultat: Ta program racuna kvadrate stevil. Vnesi stevilo (ali vnesi 0 za koncanje): 2 na kvadrat je 4 Vnesi stevilo (ali vnesi 0 za koncanje): 4 na kvadrat je 16 Vnesi stevilo (ali vnesi 0 za koncanje): 0 na kvadrat je 0 Hvala za sodelovanje Komentar: Prva vrstica def kvadrat(x):Pove Pythonu, da definiramo novo funkcijo z imenom kvadrat in da bo ta funkcija imela en argument z imenom x. Argumenti so za asne spremenljivke, ki jih funkcija uporablja zato, da zapiae sploaen postopek na podatkih. Funkcijo uporabimo tako, da pokli emo njeno ime, kateremu sledita oklepaj in zaklepaj.. Med oklepajema piaemo argumente. e tako zapiaemo kvadrat(9) bi Python spremenljivko x nastavil na vrednost 9 in izvedel stavke, ki tvorijo funkcijo kvadrat. To je podobno zamenjavi. V naem primeru bi Python izvedel rezultat = x * x # tvori spremenljivko z imenom rezultat result and give it # in ji dodeli vrednost x * x, oziroma v nasem primeru 9 * 9  kar bi dodelilo spremenljivki rezultat vrednost 81. Sledi return rezultat, kar pove Pythonu, da naj izstopi iz funkcije, nadaljuje tam, kjer smo jo poklicali in vstavi vrednost rezultat na tem mestu funkcijskega klica. e smo torej rekli b = kvadrat(4) bi bilo to po izvedbi klicane funkcije isto kot b = 16 Izra un ploa ine pravokotnika s podanima stranicama, fun_def_pravokotnik.py print "izracun ploscine pravokotnika s podanima stranicama" def pravokotnik (x,y): z=x*y return z a=5 b=6 c=pravokotnik (a,b) print c Reaitev: >>> izracun ploscine pravokotnika s podanima stranicama 30 Izra un ploa ine kvadrata podane stranice, fun_def_kvadrat.py print "Izracun ploscine kvadrata dane starnice." def kvadrat (x): z=x*x return z a=5 c=kvadrat(a) print c Reitev: >> Izracun ploscine kvadrata dane stranice. 25 Vaja 10. a Izpis lihih tevil def liho(a): return a % 2 == 1 print filter(liho, range(10)) Rezultat: [1, 3, 5, 7, 9] Vaja 10. b Izpis kvadratov tevil od 0 do 9 (range 10) def sqr(a): return a**2 print map(sqr, range(10)) Rezultat: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] Vaja 10. c1 def kajVrnem(n): 11 = [[1]*x for x in range(1, n)] return 11 print kajVrnem(4) Izpie: [[1], [1, 1], [1, 1, 1]] Vaja 10. c2 def kajVrnem(n): 11 = [[1]*x for x in range(1, n)] 12 = map(len, 11) return 12 print kajVrnem(4) izpis: [1, 2, 3] Vaja 10. c3 def kajVrnem(n): 11 = [[1]*x for x in range(1, n)] 12 = map(len, 11) 13 = reduce(mul, 12) return 13 print kajVrnem(4) Izpis: 24 (1*2*3) Vaja 10 d def capwords(s): return " ".join([w.capitalize() for w in s.split()]) print capwords("Z Jezce cez cesto v Stozce po rozce") izpis: Z Jezce Cez Cesto V Stozce Po Rozce Fibonacci def fibo (n, a=1, b=1): for t in range(n): print a a, b = b, a+b fibo(10) `e o seznamih Nekaj o uporabi seznamov... Recimo, da imaa seznam in ~elia iz njega zbrisati en element. (Morda si ta element izbral in ga zato ~elia brisati). to lahko naredimo s stavkom del list[index], kot to ka~e naslednji primer, seznam_del.py: mojSeznam = [5, 3, 1, 9, 7] del mojSeznam[2] print mojSeznam # to bo izpisalo [5, 3, 9, 7] Reitev: iz seznama izbrisemo stevilko. >>> [5, 3, 9, 7] # elemente tejemo od 0 naprej. Stavek del izbrie iz seznama element na i-tem mestu, pri tem pa ne smemo pozabiti, da tejemo elemente v seznamih za enai s atevilko 0. Zato je v naaem primeru stavek del mylist[2] zbrisal enko in ne trojke., kot bi na hitro pomislili Seznami poznajo tudi metodo remove, ki je podobna stavku del, razen da briae v skladu z vrednostmi in ne indeksi. Uporabljamo jo na naslednji na in mojSeznam = [5, 3, 1, 9, 7] mojSeznam.remove(1) print mojSeznam # to bo izpisalo [5, 3, 9, 7] Reaitev: iz seznama izbrisemo stevilko. >>> [5, 3, 9, 7] Metoda remove zbriae prvi element v seznamu, ki ima enako vrednost kot podani argument. Tako mojSeznam.remove(1) odstrani prvi nastop 1 v seznamu z imenom mojSeznam. Algoritmi za sortiranje V nadaljevanju bomo potrebovali malo bolj resne programe, ki bodo od ra unalnika zahtevali ve  dela. Spomnimo se morda atevilk za ~reb tombole in si postavimo nalogo, da jih stresemo iz bobna in ro no uredimo po vrsti (seveda brez oatevil ene podloge kot pripomo ka). INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/sort1.gif" \* MERGEFORMAT Pred razvrstitvijo Po razvrstitvi e je atevilk veliko, si lahko zamislimo, da je delo zamudno. Podobno nalogo lahko damo ra unalniku, da na primer naklju no izbrana atevila, ki jih pomnimo v seznamu, razvrsti. V praksi poznamo ve  postopkov, ki jim ra unalniako re emo algoritmi sortiranja. Spodnji program vsebuje tri poznane algoritme in omogo a primerjavo njihove hitrosti. V tem programu smo uvedli nekaj zanimivih prijemov, ki jih bomo spoznali v nadaljevanju. (V rde i barvi so stavki ali elementi stavkov, ki omogo ajo uvoz in uporabo funkcij za naklju no tvorbo podatkov ( s funkcijo randint) in merjenje asa (s funkcijo clock)) from whrandom import randint # the standard random number module from time import clock # for timing different algorithms def bubble_sort(list): l=list[:] # create a slice-copy of the list for i in range(len(l)): # for every element [i] in the list for j in range(i+1,len(l)): # examine every element [j] after it if l[i]>l[j]: # and if they are "out of order" l[i],l[j]=l[j],l[i] # swap them return l def selection_sort(list): l=list[:] # create a copy of the list sorted=[] # this new list will hold the results while len(l): # while there are elements to sort... lowest=l[0] # create a variable to identify lowest for x in l: # and check every item in the list... if x 1: # then merging the halves return merge(merge_sort(l[len(l)/2:]),merge_sort(l[:len(l)/2])) else: return l def trial(func,list): # time how long it takes start = clock() # get starting time... list1 = func(list) # try the function... end = clock() # get the ending time... print " %6.2f"%(end - start,), # and print the total time it took print " size bubble selection merge" for size in range(50,1001,50): # we go from 50 to 1000 items to test list=[] for i in range(size): list.append(randint(0,size)) # and we fill the list with random #'s print "%5d"%(size,), trial(bubble_sort,list) # then we try each sort() on the list trial(selection_sort,list) trial(merge_sort,list) print INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/sort.gif" \* MERGEFORMAT  Rezultat: C:\Python24\lib\whrandom.py:38: DeprecationWarning: the whrandom module is deprecated; please use the random module DeprecationWarning) size bubble selection merge 50 0.00 0.00 0.00 100 0.01 0.01 0.01 150 0.03 0.01 0.01 200 0.05 0.02 0.02 250 0.08 0.03 0.02 300 0.13 0.05 0.03 350 0.15 0.06 0.04 400 0.19 0.08 0.04 450 0.25 0.10 0.05 500 0.30 0.13 0.05 550 0.37 0.15 0.06 600 0.44 0.19 0.09 650 0.52 0.25 0.08 700 0.62 0.28 0.08 750 0.74 0.31 0.08 800 0.75 0.32 0.09 850 0.90 0.39 0.11 900 1.09 0.47 0.11 950 1.24 0.50 0.11 1000 1.22 0.51 0.12 e o Pythonu Python je visoko modularen jezik, ki mu lahko ve amo funkcionalnost tako, da svojim programom dodajamo module, ki so jih napisali drugi programerji, lahko pa tudi mi sami. Precej takih modulov je ~e dodanih v samo osnovno distribucijo Pythona. e ho emo take module uporabiti, jih moramo uvoziti ( import). Uvoz modula omogo i Pythonu, da uporablja funkcije, ki so na voljo v tem modulu. Kaj modul je? Kratek odgovor na to je, da je modul tekstovna datoteka, ki vsebuje enega ali ve  Pythonovih stavkov oziroma definicij (funkcij in razredov). Ve ina modulov vsebuje tudi komentarje. Ko uvozimo modul, se njegovi stavki, ki niso vklju eni v razne definicije funkcij in razredov, izvedejo, Ti stavki lahko celo uvozijo druge module. Kakane module imamo na voljo? e nas zanima, kateri moduli so na voljo, si moramo ogledati priro nik o knji~nici modulov (  HYPERLINK "http://docs.python.org/lib/lib.html" Library Reference). Oglej si, kaj ta vsebuje. "Library Reference" je pisan v anglea ini, brez katere pri programiranju pa  ne gre. Organiziran je sekcije glede na funkcionalnost posameznih modulov. Sekcije so naslednje: INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Built-in: vgrajene funkcije, ki so vedno na voljo INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Python services: funkcije, povezane z notranjim delovanjem Pythona INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT String services: Funkcije za delo z nizi (contents of string variables) INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Miscellaneous: razli ne funkcije INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT Generic OS: to so servisi, ki omogo ajo pogovor s funkcijami operacijskega sistema INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/ballgreen.gif" \* MERGEFORMAT in tako naprej... Primer uporabe modulov Sedaj naj nas zanima, kako meriti as, ki je potreben za izvedbo neke procedure. Uporabili bomo modul time , ki je lociran v sekciji Generic OS. }elimo imeti tudi na voljo naklju no generirane vrednosti, s katerimi bi radi preiskuaali naae algoritme. Uporabimo torej ae modul random iz sekcije Miscellaneous services. Na ~e omenjenih straneh (library Reference) si lahko ogledamo podrobnosti o teh modulih. Preskusimo njihovo uporabo kar s Pythonovim interpreterjem in vtipkajmo: >>> import time >>> while 1: ... print time.clock() ... `tevila, ki jih vra a time.clock(), predstavljajo, koliko asa (merjeno v sekundah) te e naa program. (Program te e v neskon ni zanki, prekinemo ga s Ctrl-C) Torej lahko to funkcijo uporabljamo za to, da ugotovimo, koliko asa potrebuje program za izvedbo nekega dela. Poskusimo sedaj naslednje >>> import whrandom >>> while 1: ... print whrandom.random() ... Uporabili smo funkcijo, ki naklju no generira atevila. V asih nam to prav pride za tvorbo naklju nih podatkov. Opazimo ae stavek import, ki prebere funkcije iz ustrezne datoteke, ki vsebuje stavke v Pythonu. e na primer vtipkamo import timebo Python prebral datoteko z imenom "time.py" in dal na voljo vse funkcije in imena podatkov iz te datoteke. Tako dobimo na voljo funkcije time.altzone, time.asctime(), time.clock() itd. V asih ~elimo neko funkcijo zelo pogosto uporabljati in bi si ~eleli pisati le njeno ime, brez dolgo asnega navajanja modula, kateremu pripada. To dose~emo z malo spremenjenim stavkom za uvoz: >>> from time import clock >>> while 1: ... print clock() ...Tako smo iz modula time uvozili le funckijo clock, vendar ji pravimo sedaj le "clock" namesto "time.clock". Tak pristop je v asih pripraven, vendar moramo v tem primeru bolj paziti na imena, da ne bo zmeanjave. e bi namre  zatem kaj drugega definirali kot clock,bi to nadomestilo (povozilo) definicijo, ki smo jo prej naredili s from time import clock. Boljai na in za olajaanje ~ivljenja je tak, da funkcijo dodelimo neki spremenljivki, na primer: >>> import time >>> c = time.clock >>> while 1: ... print c() ... Tako smo tvorili spremenljivko z imenom "c" in ji dodelili vrednost funkcije "time.clock". Da, da, izgleda nenavadno, vendar Python obravnava funkcije enako kot podatke in jih lahko hranimo v spremenljivke ter jih kli emo z imeni spremenljivk. Na prejanji strani je bilo podanih ve  algoritmov sortiranja. Podani program naj bi omogo al primerjavo njihove hitrosti: V rde i barvi so stavki ali elementi stavkov, ki omogo ajo uvoz in uporabo funkcij za naklju no tvorbo podatkov ( s funkcijo randint) in merjenje asa (s funkcijo clock). from whrandom import randint # the standard random number module from time import clock # for timing different algorithms def bubble_sort(list): l=list[:] # create a slice-copy of the list for i in range(len(l)): # for every element [i] in the list for j in range(i+1,len(l)): # examine every element [j] after it if l[i]>l[j]: # and if they are "out of order" l[i],l[j]=l[j],l[i] # swap them return l def selection_sort(list): l=list[:] # create a copy of the list sorted=[] # this new list will hold the results while len(l): # while there are elements to sort... lowest=l[0] # create a variable to identify lowest for x in l: # and check every item in the list... if x>> size bubble selection 50 0.00337528931755 0.00172787323527 100 0.0122786555276 0.00573061660066 150 0.0276308860484 0.0197374247286 200 0.0706112089665 0.0209981994917 250 0.0775604161981 0.0421869259919 300 0.116955646598 0.0490956252818 350 0.189615719316 0.0750072984138 400 0.206924902467 0.107660331131 450 0.281544442101 0.114757043144 500 0.30273149241 0.130891495986 550 0.371812339278 0.181850765949 600 0.442385554589 0.19479319299 650 0.520886593129 0.219973488251 700 0.64844610139 0.26789633878 750 0.751980768506 0.314785538385 800 0.844329097692 0.3480872569 850 0.891530627496 0.368161316592 900 0.992564138738 0.433475204251 950 1.16969056123 0.537532842861 1000 1.29370827857 0.540854214712 Doma a naloga Program izboljaaj tako, da polepaaa izpis, ki naj bo poravnan. Oglej si priro nik HYPERLINK "http://docs.python.org/lib/lib.html"  Library Reference. V modulu String preatudiraj funkcije ljust, rjust in center. To so sicer funkcije za delo z nizi, mi pa moramo izpisovati atevila ( ase izvajanja). `tevila bo zato potrebno pretvoriti v niz. Uporabimo lahko vgrajeno (built in) funkcijo str, ki jo prav tako najdemo v priro niku. O datotekah Vsi dosedanji programi niso predvidevali pomnjenja podatkov, da bodo dostopni za kasnejao uporabo. e to ~elimo, moramo uporabiti datoteke. Python ima vgrajeno funkcijo za dostop do datoteke, pravimo ji open. Ta funkcija vrne podatkovni tip "file". Ti podatkovni tipi imajo metode, ki omogo ajo rokovanje z vsebino datoteke ( podobno, kot imajo seznami metode, kot sta append in sort za rokovanje z vsebino seznamov). Uporabljamo jih tako (rde e so ozna ene metode za delo z datotekami), datoteka.py: def branjeDatoteke(): print "Podaj ime datoteke, ki jo zeli brati: ", imeDatoteke = raw_input() datoteka = open(imeDatoteke,'r') vsebina = datoteka.read() print "-----------------------------------------------------------" print vsebina # crtkani vrstici nakazujeta # zacetek in konec izpisa vsebine datoteke print "-----------------------------------------------------------" def pisanjeDatoteke(): print "Vpisi besedilo, ki ga zelis pomniti v datoteki:" besedilo = raw_input() # tako beremo le eno vrstico besedila print "Podaj ime datoteke, v katero zelis vpisati besedilo: ", imeDatoteke = raw_input() datoteka = open(imeDatoteke,'w') datoteka.write(besedilo) print "Tako, zapisal sem v datoteko" print "Ta program dela z datotekami." opravljeno = 0 while not opravljeno: print "Izberi moznost:" print " 1) Branje datoteke" print " 2) Pisanje datoteke" print " 3) Konec" izbira = raw_input() # uporabljamo raw_input if izbira =='1': # ker je bolj fleksibilen branjeDatoteke() elif izbira=='2': pisanjeDatoteke() elif izbira=='3': opravljeno=1 else: print "Slaba izbira.Ponovi!" Reitev: >>> Ta program dela z datotekami. Izberi moznost: 1) Branje datoteke 2) Pisanje datoteke 3) Konec Vpisi besedilo, ki ga zelis pomniti v datoteki: Podaj ime datoteke, v katero zelis vpisati besedilo: Tako, zapisal sem v datoteko Izberi moznost: 1) Branje datoteke 2) Pisanje datoteke 3) Konec Podaj ime datoteke, ki jo zeli brati: ----------------------------------------------------------- Pazi, datoteka. ----------------------------------------------------------- Izberi moznost: 1) Branje datoteke 2) Pisanje datoteke 3) Konec Program uvaja v Python nov tip podatkov, ki mu pravimo file (in je seveda dokumentiran v  HYPERLINK "http://docs.python.org/lib/lib.html" Library Reference). Zaenkrat nas zanima le branje in pisanje datotek. Datoteke imajo metodo read(), ki vrne vsebino datoteke v obliki niza. e smo tako odprli datoteko kot spremenljivko z imenom "obvestilo", bi lahko uporabili stavek tekst = obvestilo.read()nato pa bi spremenljivka "tekst" vsebovala niz, ki predstavlja vsebino datoteke. Druga pomembna metoda je write(), ki sprejme niz kot edini argument funkcijskega klica in ga zapie v datoteko. tako bi lahko uporabili stavek obvestilo.write("tu vstavi kaksno besedilo") kar bi zapisalo "tu vstavi kaksno besedilo" v datoteko, ki jo predstavlja spremenljivka "obvestilo". In kako dobimo spremenljivko, ki predstavlja datoteko? Za to uporabimo vgrajeno (built-in) funkcijo open() (ki je tudi dokumentirana v  HYPERLINK "http://docs.python.org/lib/lib.html" Library Reference ). Tu opazimo, da je funkcija opisana kot open (filename[, mode[, bufsize]]) To pomeni, da funkcija open( ) zahteva en argument, s katerim navedemo ime datoteke, ki jo ~elimo odpreti. Oglati oklepaji "[]"' okrog naslednjih argumentov nakazujejo, da ti argumenti niso obvezni. e imamo drugi argument, pomeni ta na in ("mode"), morebitni tretji argument pa kot velikost medpomnilnika ("bufsize"). Tako lahko funkcijo uporabljamo na razli ne na ine: open("moj.dokument") # odpre datoteko "moj.dokument" za branje open("moj.dokument","w") # odpre isto datoteko za branje in pisanje open("moj.dokument","w",1000) # odpre isto datoteko za branje in pisanje # z velikostjo medpomnilnika 1000 bytov Klic open() vrne "file". e torej ~elimo uporabiti datoteko ( file), jo moramo shraniti v spremenljivko. To pa naredimo z dobrim starim prireditvenim stavkom mojaDatoteka = open("moj.dokument") # sedaj lahko uporabljamo "mojaDatoteka" za branje # datoteke z imenom "moj.dokument" Pa vse skupaj sestavimo v program, ki kopira datoteko: oldfile = open("moj.dokument","r") # brali bomo originalno datoteko newfile = open("moj.dokument.kopija","w") # in jo prepisovali v novo data = oldfile.read() newfile.write(data) # nova datoteka bo imela enako vsebino kot staraDoma a naloga: Spremeni zgornji program tako, da uporabnik vpiae ime originalne datoteke in njene kopije. Program lahko preskusia s kopiranjem svojih datotek v Pythonu. V nadaljevanju si s pomo jo priro nika ( HYPERLINK "http://docs.python.org/lib/lib.html" library Reference) poglej metodi readlines in writelines.. Ti metodi predstavljata posamezne vrstice datoteke kot lo ene nize v seznamu. Uporabi ti metodi tako, da sestavia program, ki shrani seznam imen, ta seznam imen prebere nazaj in kon no imena razvrsti (sortira). Namig: Reaitev najdea na naslednji strani. `tudijski primer: Seznam imen Program za ne s praznim seznamom imen. Na voljo nudi menu z ve  mo~nostmi: V seznam lahko vnaaamo nova imena, seznam lahko zapiaemo v datoteko z imenom "osebe". Seznam lahko z datoteke tudi preberemo. Trenutni seznam imen lahko tudi izpiaemo na zaslon. Rde e pobarvane so definicije funkcij za branje, pisanje in izpis seznama ter dodajanje imen v seznam. Zeleno pobarvani so klici teh funkcij, datoteka1.py def beriSeznam(): datoteka = open("osebe","r") seznam = datoteka.readlines() for i in range(len(seznam)): seznam[i] = seznam[i][:-1] return seznam def izpisOseb( seznam ): for ime in seznam: print ime def dodajIme(seznam): print "Vnesi novo ime" novoIme = raw_input() seznam.append(novoIme) def shraniSeznam( seznam): datoteka = open("osebe","w") for ime in seznam: datoteka.write(ime) datoteka.write('\n') # vsako ime v novi vrstici #--------------------------------------------------------- seznamOseb = [] izbira = 0 while izbira != 5: print "1) Beri datoteko" print "2) Izpis imen" print "3) Dodaj ime" print "4) Shrani seznam" print "5) Konec" izbira = input() if izbira == 1: seznamOseb = beriSeznam() elif izbira == 2: izpisOseb( seznamOseb ) elif izbira == 3: dodajIme(seznamOseb) elif izbira == 4: shraniSeznam( seznamOseb )  Reitev: >>> 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec Izboljava programa je lahko v tem, da uporabnik lahko pred pisanjem ali branjem datoteke pove njeno ime. Program bi bil tako bolj sploen, saj ne bi pisal oziroma bral vedno ene in iste datoteke. Za to izboljavo bi morali spremeniti funkcijo za branje in funkcijo za pisanje (spremembe so pobarvane rde e): def beriSeznam(): print "Vpisi ime datoteke za branje:" imeDatoteke = raw_input() datoteka = open(imeDatoteke,"r") seznam = datoteka.readlines() for i in range(len(seznam)): seznam[i] = seznam[i][:-1] return seznam def shraniSeznam( seznam): print "Vpisi ime datoteke za pisanje:" imeDatoteke = raw_input() datoteka = open(imeDatoteke,"w") for ime in seznam: datoteka.write(ime) datoteka.write('\n') # vsako ime v novi vrstici Popravljen program, datoteka2.py: def beriSeznam(): print "Vpisi ime datoteke za branje:" imeDatoteke = raw_input() datoteka = open(imeDatoteke,"r") seznam = datoteka.readlines() for i in range(len(seznam)): seznam[i] = seznam[i][:-1] return seznam def izpisOseb( seznam ): for ime in seznam: print ime def dodajIme(seznam): print "Vnesi novo ime" novoIme = raw_input() seznam.append(novoIme) def shraniSeznam( seznam): print "Vpisi ime datoteke za pisanje:" imeDatoteke = raw_input() datoteka = open(imeDatoteke,"w") for ime in seznam: datoteka.write(ime) datoteka.write('\n') # vsako ime v novi vrstici #--------------------------------------------------------- seznamOseb = [] izbira = 0 while izbira != 5: print "1) Beri datoteko" print "2) Izpis imen" print "3) Dodaj ime" print "4) Shrani seznam" print "5) Konec" izbira = input() if izbira == 1: seznamOseb = beriSeznam() elif izbira == 2: izpisOseb( seznamOseb ) elif izbira == 3: dodajIme(seznamOseb) elif izbira == 4: shraniSeznam( seznamOseb ) Reitev: >>> 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec Vnesi novo ime 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec Vnesi novo ime 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec anja lin 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec Vpisi ime datoteke za pisanje: 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec Vpisi ime datoteke za branje: 1) Beri datoteko 2) Izpis imen 3) Dodaj ime 4) Shrani seznam 5) Konec >>> Slovarji Slovarji (dictionaries) so podatkovni tipi podobno kot seznami (lists) z razliko, da naslavljajo vsebino s poljubnimi vrednostmi, ne pa z zaporedno atevilko, kar je zna ilno za sezname. Spomnimo se seznamov. Seznam si lahko predstavljamo kot preslikavo mno~ice atevil na mno~ico vrednosti. Vzemimo primer seznama z naslednjimi vrednostmi: "rdec" "zelen" "moder" Tedaj je seznam preslikava atevil 0,1,2 v te vrednosti 0 --> "rdec" 1 --> "zelen" 2 --> "moder" Slovarji so bolj sploana oblika tega koncepta. Slovar preslikava mno~ico klju ev v mno~ico vrednosti. V Pythonu izgleda to tako: { "ime" : "Janez Novak" , "starost" : 25, "telefon" : "555-6666", "naslov" : "Povsetova 138", "mesto" : "Ljubljana", "drzava" : "Slovenija", "zip" : "1000" } Ta slovar preslikava klju e (na levi) v vrednosti (na desni): "ime" --> "Janez Novak" "starost" --> 25 "telefon" --> "555-6666" "ulica" --> "Povsetova 138" "mesto" --> "Ljubljana" "drzava" --> "Slovenija" "zip" --> "1000" Slovarje uporabljamo podobno kot sezname, slovarji.py. naslov = { "ime" : "Janez Novak","mesto" : "Ljubljana", "naslov" : "Povsetova 138","ulica" : "Doljnjska cesta 5",} print naslov["ime"] #izpise "Janez Novak" print naslov["mesto"] #izpise "Ljubljana" print naslov["naslov"] # izpise "Dolenjska cesta 5" print naslov["ulica"] #izpise "Dolenjska cesta 5" Reitev: Janez Novak Ljubljana Povsetova 138 Dolenjska cesta 5 V slovar lahko vnaaamo nove vrednosti: naslov["zip"] = "2000" Slovarji so pripraven na in za sledenje objektom, ki imajo imenovane atribute (lastnosti), tako kot ljudje oziroma naslovi v zgornjih primerih. Lahko bi sicer uporabljali kar seznam za sledenje istim podatkom, kot na primer naslov = ["Povsetova 138", "Ljubljana", "Slovenija"] vendar bi morali paziti, kateri atribut je bil dodeljen v kateri oatevil eni "predal ek" seznama. Uporaba slovarja zmanjaa mo~nost loveake napake in tudi sicer olajaa delo programerju. Slovarji nudijo vrsto metod za rokovanje z njihovo vsebino. Metode so v bistvu funkcije, "prilepljene" na posamezen slovar. Seznam teh funkcij najdea v spletnem priro niku  HYPERLINK "http://docs.python.org/lib/lib.html" Library Reference. Metode uporabljamo na enak na in, kot na primer uporabljamo metodo "append" na seznamu ali metodo "read" na datoteki. Metoda "append" je ena od metod seznamov (lists), metoda "read" ena od metod datotek (files). e torej ho emo uporabiti slovarjevo metodo "keys" , bi morali napisati nekaj takega kljuci = naslov.keys() for kljuc in kljuci: print "Kljucu", kljuc, "slovarja ustreza atribut", naslov[kljuc]Naa program z imeni bi lahko dopolnili tako, da bi o vsakem posamezniku pomnili e druge podatke, ne le njegovo ime (tudi naslov, morda e-mail naslov itd). Namesto imen posameznikov bi v seznamu morali pomniti slovarje (torej celotno skupino podatkov o posameznikih). Kako bi morali predelati funkciji "dodajIme" in "izpisOseb" , prikazuje naslednja koda, slovarji1.py:????? def dodajIme( seznam ): novaOseba = {} print "Vpisi ime osebe" novaOseba["ime"] = raw_input() print "Vpisi ulico osebe", novaOseba["ime"] novaOseba["ulica"] = raw_input() print "Vnesi mesto osebe", novaOseba["ime"] novaOseba["mesto"] = raw_input() print "Vnesi drzavo osebe", novaOseba["ime"] novaOseba["drzava"] = raw_input() print "Vnesi postno stevilko osebe", novaOseba["oseba"] novaOseba["zip"] = raw_input() seznam.append(novaOseba) def izpisOseb( seznam ): for oseba in seznam: print oseba["ime"] print oseba["ulica"] print oseba["mesto"], ",", oseba["drzava"], oseba["zip"] print???????????????????????? def dodajIme( seznam ): novaOseba = {} print "Vpisi ime osebe" novaOseba["ime"] = raw_input() print "Vpisi ulico osebe" novaOseba["ulica"] = raw_input() print "Vnesi mesto osebe", novaOseba["mesto"] = raw_input() print "Vnesi drzavo osebe" novaOseba["drzava"] = raw_input() print "Vnesi osebo" novaOseba["zip"] = raw_input() seznam.append(novaOseba) def izpisOseb( seznam ): for oseba in seznam: print oseba["ime"] print oseba["ulica"] print oseba["mesto"] print oseba["drzava"] print oseba["zip"] izpis???? Te~ave se pojavijo, ko bi hoteli program tako spremeniti, da bi seznam slovarjev pomnili na datoteko in nato tak seznam slovarjev spet brali nazaj (doslej smo pomnili in brali le seznam imen, torej seznam nizov). Z dosedanjim znanjem bi to izvedli precej neelegantno. Nadaljevanje bo dalo pravi odgovor. O razredih Najprej nekaj o terminologiji. Programi tradicionalno vsebujejo spremenljivke in funkcije in pogosto uporabljamo eno skupino funkcij za delo z eno skupino podatkov, drugo skupino funkcij pa za obravnavo druge skupine podatkov. Objektno usmerjeno programiranje uvaja novo obliko podatkov, ki mu pravimo objekt. Ta vsebuje tako spremenljivke, kot tudi funkcije, ki delujejo na te spremenljivke. Poznamo ae nekaj - razred (class), ki je abstraktna definicija objekta, v resnici pa ne "obstaja". e ho emo uporabiti razred, moramo napraviti (vsaj en) njegov primerek (izvod oziroma instanco). Vsakemu takemu primerku (instanci) pravimo objekt. Razmialjaj tako: Koncept atevil je razred. 1, 2 in 3 so vsi primerki (instance) atevil in so torej posamezni objekti, ki spadajo v razred atevil. `e bolj jasno bo, e gremo h primerom: e ho emo uporabiti objekte, moramo najprej definirati "razred ( "class") objektov, iz katerih izhaja. V Pythonu naredimo to s stavkom class , izgleda pa to tako: class Oseba: ime = "Janez Novak" naslov = "Slovenska 120" mesto = "Ljubljana" drzava = "SLO" zip = "1000" email = "janez.novak@arnes.si" Ta razred vsebuje le podatke, vendar to ni narobe. Tak razred lahko uporabimo (je neka vrsta slovarja...): hisnik = Oseba() # tvorimo primerek osebe in # novi objekt shranimo pod spremenljivko hisnik print hisnik.ime # izpise "Janez Novak" print hisnik.email # izpise vrednost atributa "email" od hisnika hisnik.email = "hisnik@mss.si" # atributu dodelimo novo vrednost hisnik.drzava = "SI" # za hisnika spremenimo atribut drzava # tako se spremeni le atribut objekta hisnik # Ostali primerki oseb imajo nespremenjen atribut Doslej smo razred uporabljali kot slovar, vendar z drugo sintakso. Bolj zanimivo je, e dodamo "metode", ki so funkcije, specifi ne za objekt. class Vozilo: polozaj = 0 hitrost = 0 def premakni(self): self.polozaj = self.polozaj + self.hitrost def pospesuj(self, prirastek): self.hitrost = self.hitrost + prirastek Sedaj imamo v razredu metode. Te metode so kakor kakne druge funkcije, le da jim je dodan poseben argument - "self". Kako to deluje: golf = Vozilo() Vozilo.pospesuj(golf,10) while golf.polozaj < 1000: # premikaj vozilo, dokler ne pride tja... Vozilo.premakni(golf) Metodo razreda pokli emo z obliko "razred.metoda ( )". V naaem primeru uporabljamo Vozilo.pospesuj() in Vozilo.premakni(). Prvi argument, ki ga podamo, je instanca (primerek) vozila, ki ga uporabljamo, v nasem primeru je to golf. Druge argumente uporabljamo v skladu z definicijo posamezne funkcije. Obstaja krajai (in bolj pogost) na in klicanja metod, ki sodijo k nekemu objektu. Kli emo torej metodo objekta in ne metodo razreda.. golf = Vozilo() golf.pospesuj(10) # klice Vozilo.pospesuj(golf,10) while golf.polozaj < 1000: # premikaj vozilo, dokler ne pride tja... golf.premakni() # klice Vozilo.premakni(golf) Uporabimo torej obliko "objekt.metoda( )". Python sam interno preslika to kratko obliko klicanja metod v prej omenjeno daljo obliko. Kako nam vse to lahko koristi? Oglejmo si primer. Recimo, da piaemo igrico za dva igralca. Pomniti moramo imeni igralcev, njune to ke itd. Namesto, da bi imeli dve imeni igralcev, dve imeni to k itd, uvedemo en razred in tvorimo z njim dva primerka (dve instanci): class Igralec: ime = "" tocke = 0 bonus = 0 def racunajTocke(oseba): return oseba.tocke * oseba.bonus #----------------------------------------------------------------- igralec1 = Igralec() igralec1.ime = "Janko" igralec2 = Igralec() igralec2.ime = "Metka" konecIgre = 0 while not konecIgre: print igralec1.ime, "ima stevilo tock", igralec1.racunajTocke() print igralec2.ime, "ima stevilo tock", igralec2.racunajTocke() Tako bi igro zlahka razirili na 3, 4 ali ae ve  igralcev. Morda se vpraaaa. zakaj smo za imenom razreda, ko smo tvorili nov primerek razreda, napisali oklepaje. Zato, ker imajo vsi razredi posebno metodo z imenom "__init__" , ki jo Python pokli e, ko tvorimo nov primerek razreda (v ra unalniakem izrazoslovju pravimo taki metodi "konstruktor"). e te metode ne definiramo, jo Python sam definira kot funkcijo, ki ne naredi ni . Lahko pa jo sami eksplicitno definiramo in v njej zapiaemo kakano kodo, na primer: class Igralec: def __init__(noviIgralec,novoIme): noviIgralecr.ime=novoIme noviIgralec.tocke=0 noviIgralec.bonus=0 def izracunajTocke(oseba): return oseba.score * oseba.bonus #--------------------------------------------------- igralec1 = Igralec("Janko") igralec2 = Igralec("Metka") konecIgre = 0 while not konecIgre: print igralec1.ime, "ima stevilo tock", igralec1.racunajTocke() print igralec2.ime, "ima stevilo tock", igralec2.racunajTocke() `e vedno nisi prepri an o uporabnosti razredov in objektov? Spomni se nerodne uporabe metod "readlines" in"writelines" in skrbi za znake "end of line". Ali ne bi bilo lepo, e bi za take podrobnosti skrbel nekdo drug? Tu je reaitev: sestavimo svoj razred "File": class File: def __init__(self, filename, mode): self.filename = filename self.mode = mode self.file = open(filename, mode) def readlines(self): theLines = self.readlines() for lineNumber in range(len(theLines)): theLines[lineNumber] = theLines[lineNumber][0:-1] return theLines def writelines(self,newLines): for line in newLines: self.write(line) self.write('\n') Razred shranimo v datoteko, na primer z imenom "BetterFile.py". Sedaj lahko program, ki dela s  HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\Names_v1_0.html" seznamom imen, preoblikujemo: from BetterFile import File def izpisImen( seznam ): for ime in seznam: print ime def dodajIme( seznam ): print "Vnesi novo ime" novoIme = raw_input() seznam.append(novoIme) seznamOseb = [] izbira = 0 while izbira != 5: print "1) Beri datoteko" print "2) Izpis imen" print "3) Dodaj ime" print "4) Shrani seznam" print "5) Konec" choice = input() if izbira == 1: seznamOseb = File("osebe", "r").readlines() elif izbira == 2: izpisImen( seznamOseb ) elif izbira == 3: dodajIme( seznamOseb ) elif izbira == 4: File("osebe", "w").writelines( seznamOseb ) Vrstico File("osebe", "w").writelines(seznamOseb) Bi lahko zamenjali z izhodnaDatoteka = File("osebe", "w") izhodnadatoteka.writelines(seznamOseb) Obe kodi sta ekvivalentni. Klic "File()" vrne objekt. S tem objektom lahko delamo enako, kot z objekti, shranjenimi v spremenljivkah. Objekte torej lahko eksplicitno poimenujemo. Posvetimo se objektno usmerjenemu programiranju (OOP). Kot primer vzemimo program, ki potrebuje predstavitev kompleksnih tevil. Kompleksna tevila imajo dva dela: realni in imaginarni. Oba dela sta navadni tevili. Radi bi imeli mo~nost tvorbe kompleksnih atevil, na primer na naslednji na in: x = Complex(4.5, 1.9) Pri tem je 4.5 realni del in 1.9 je imaginarni del. Radi bi tudi dobili absolutno vrednost kompleksnega atevila abs_x = x.abs() Pri tem je absolutna vrednost definirana kot kvadratni koren vsote kvadratov realne in imaginarne komponente (podobno, kot velja c2 = a2 + b2). Da bi to lahko storili, moramo verjetno uvoziti (import) modul "math", kar bi omogo ilo dostop do funkcije "sqrt". (Oglej siLibrary Reference). Poleg tega ~elimo seatevati in odatevati kompleksna atevila. tako kot ka~e spodnji primer: y = Complex(-8.0, 2.3) z = x.minus(y) w = y.plus(z) if x.abs() != abs(): print "napaka!" "plus" jemlje drugo kompleksno atevilo kot argument in vra a tretje komleksno atevilo. Realni del tretjega atevila je enak vsoti realnih delov prvotnih dveh atevil. Imaginarni del tretjega atevila je enak vsoti imaginarnih delov prvotnih atevil. Podobno deluje "minus". Napiai torej modul, morda z imenom "Complex.py" in ga uporabi oziroma preveri v drugem programu (morda z imenom "testComplex.py"). Dedovanje Jasno, razredi izgledajo kar v redu, vendar na videz ne nudijo kaj ve  kot ~e omenjeni slovarji. Obstaja pa nekaj pomembnega, kar to podobnost razbije. To je dedovanje. Dedovanje deluje tako: Recimo, da programiramo igrico. V igrici predvidimo, da se branimo pred napadalci. Napadalci se med igro premikajo, streljajo krogle in so lahko ustreljeni. Ob zadetku se zdravje napadalcu poslaba. Vsak napadalec ima 10 nabojev (krogel). Napadalce predstavimo z razredom: class Napadalec: tip = "kakrsenkoli" def __init__(self, x, y): self.zdravje = 100 # vsak zacne s 100% zdravjem self.naboj = 10 # in 10 naboji self.x_polozaj = x self.y_polozaj = y def premakni(self, dx, dy): # dx and dy pove "kako dalec se premakne" self.x_polozaj = self.x_polozaj + dx self.y_polozaj = self.y_polozaj + dy def streljaj(self, smer): self.naboj = self.naboj - 1 igra.dodajKroglo(self.x_polozaj, self.y_polozaj, smer) # predpostavimo, da je "igra" objekt, tvorjen kje drugje def siZadet(self): self.zdravje = self.zdravje - 10 # au- boli!! - zdravje se poslabsa}e kar vidimo, da bo to zanimiva igrica! Vendar nekaj manjka. e uni ujemo ves as enake napadalce, bo stvar dolgo asna.Skuaajmo uvesti ve  vrst sovra~nikov. Vsi sovra~niki bodo podobni napadalcem. Vsak bo imel atevec ~ivljenj, vsak bo imel svoj polo~aj, vsak bo lahko streljal. V dolo enih vidikih pa se bodo razlikovali. Zato bomo vsakega novega sovra~nika izpeljali iz originalnega napadalca in pri tem uporabili takoimenovano dedovanje. Dedovanje omogo a tvorbo novega razreda tako, da se pri definiciji pomagamo z uporabo osnovnega razreda, vendar novemu razredu kaj dodamo. Poglejmo primer: class Konjenik(Napadalec): # ta napadalec bo torej hitrejsi tip = "konjenik" def premakni(self, dx, dy): self.x_polozaj = self.x_polozaj + 3*dx # konjenik se premika hitro self.y_polozaj = self.y_polozaj + 3*dy class Topnicar(Napadalec): # ta napadalec bo topnicar, opremljen z granatami type = "topnicar" def __init__(self, x, y): Napadalec.__init__(self, x, y) # inicializacija osnovnega razreda self.granate = 10 def izstreliGranato(self, smer): self.granate = self.granate - 1 igra.dodajGranato(self.x_polozaj, self.y_polozaj, smer) def siZadet(self): self.zdravje = self.zdravje - 5 # zadetek zascitenega topnicarja manj poskoduje Definiciji razreda Konjenik sledita oklepaja, v katerih je podan osnovni razred, iz katerega je izpeljan novi razred (Konjenik). To pomeni, da bo Konjenik imel vse podatkovne elemente in metode, ki so opisane v razredu Napadalec, vseboval pa bi lahko ae dodatne podatkove elemente in metode. V razredu Konjenik nismo dodali ni  novega, pa  pa smo nadomestili metodo premik() z drugo metodo. Ta, druga metoda je podobna prejanji, vendar se konjenik premika 3 krat hitreje od navadnega napadalca. Tank je prav tako izpeljan iz napadalca, vendar smo mu dodali rakete. Ker ~elimo, da bo vsak novi tank imel v za etku 10 raket, smo tvorili nov konstruktor (__init__), ki to naredi za nas. Ker smo nadomestili originalni konstruktor, ga moramo klicati eksplicitno, e naj bi se (originalni konstruktor) izvedel. Tanku smo dodali ae metodo za izstreljevanje raket. Kon no se lahko lotimo pisanja igrice. Na primer tako: from whrandom import random from Napadalci import * from mojaIgra import Igra sovrazniki = [] for i in range(100): x = random(100) y = random(100) sovrazniki.append(Napadalec(x, y)) for i in range(20): x = random(100) y = random(100) sovrazniki.append(Konjenik(x, y)) for i in range(10): x = random(100) y = random(100) sovrazniki.append(Topnicar(x, y)) igra = Igra() while not igra.konec(): for i in range(len(sovrazniki)): sovrazniki[i].streljaj(random(360)) if sovrazniki[i].tip == "topnicar": sovrazniki[i].izstreliGranato(random(360)) sovrazniki[1].premakni(random(10),random(10)) igra.nekajNaredi() igra.izpisRezultatov() Sedaj pa doma a naloga: Tvori razred Vozilo z naslednjimi lastnostmi in metodami: polozaj, hitrost. premakni pospesuj Tvori razred Letalo, izpeljan iz razreda Vozilo. Letalo naj ima naslednje dodatne lastnosti oziroma metode: zakrilca dvigniZakrilca spustiZakrilca Tvori razre Avto, izpeljan iz razreda Vozilo. Avto naj ima naslednjo dodatno metodo: pritisniZavoro Vse skupaj shrani v datoteko vozila.py. Nato sestavi preskusni program, ki naj izgleda pribli~no tako: from vozila import * cessna = Letalo(100,10,"gor") # polozaj 100, hitrost 10, zakrilca gor golf = Auto(100,-10) # polozaj 200, hitrost 80 print "letalo:", cessna.polozaj, cessna.zakrilca print "Avto:", golf.polozaj, golf.hitrost cessna.premik() avto.premik() cessna.spustiZakrilca() golf.pritisniZavoro() print "letalo:", cessna.polozaj, cessna.zakrilca print "Avto:", golf.polozaj, golf.hitrost Kam nas vse to pelje? Odgovor dobi kasneje, ko spoznamo osnove programiranja grafi nega uporabniakega vmesnika (GUI, Graphical User Interface). Sedaj je ~e as, da prej spoznamo, kako se reaevati iz napak, ki se pri programiranju nedvomno dogajajo. Oh, te napake! (o izjemah) Zanesljivo si ~e do~ivel med delovanjem svojih programov napake. Kot na primer, e ~elia odpreti neko datoteko, te pa ni. Ali pa bi program moral kaj deliti z ni , kar v ra unalniatvu ni dopustno. V tem poglavju bomo spoznali, kako naj program take obravnava bolj prizanesljivo, ne pa da se drasti no zaklju i. Take napake imenujemo v Pythonu izjeme (exceptions), saj predstavljajo izjeme glede na obi ajno obnaaanje programa. Ko pride do napake, spro~i Python izjemo, ki normalno pomeni, da naa program "umre". Lahko pa naredimo, da tak izjemen dogodek obravnavamo tako, kot to mi ho emo. Kako to storimo? Napiai naslednji program: imeDatoteke = raw_input( "Podaj ime datoteke: " ) datoteka = open( imeDatoteke ) print datoteka.read() print "To je vse." Sedaj po~eni program. Vpiai ime datoteke, ki ne obstaja Python se bo odzval z obvestilom o napako, morda tako: Traceback (innermost last): File "filetest.py", line 1, in ? IOError: (2, 'No such file or directory') V zadnji vrstici nam sporo a, da je ugotovil vhodno-izhodno napako ("IOError") in, ker ne ve kako nadaljevati, prekinja program. No, lahko sestavimo svoj program, ki bo "ulovil" to napako. Pythonu v tem primeru ni treba skrbeti zanjo. To naredimo tako, napake.py: imeDatoteke = raw_input( "Podaj ime datoteke: " ) try: datoteka = open( imeDatoteke ) print datoteka.read() except IOError: print "Imenovane datoteke ni", filename print "To je vse." Reitev: Dodamo datoteko iz mape npr: append.py in program jo odpre! a=[1,1] a.append(5) print a e datoteka ne obstaja izpiae: Imenovane datoteke ni Traceback (most recent call last): File "C:\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript exec codeObject in __main__.__dict__ File "D:\My Documents\Marjana\python\vaja\skripta\napake.py", line 6, in ? print "Imenovane datoteke ni", filename NameError: name 'filename' is not defined Preskusi ta program. e mu vtipkaa nesmiselno ime datoteke, bo Python izpisal obvestilo "Imenovane datoteke ni" in ne bo takoj prekinil programa. To se zgodi, ker v primeru, e uporabimo stavek try, Python poskuaa izvesti stavke v bloku stavkov za besedico "try". e pri tem ne pride do napake, presko i Python blok stavkov, ki sledi besedici "except". e pa bi prialo do napake, Python presko i preostale stavke v bloku stavkov. (V naaem primeru, e stavek "open" povzro i napako, presko i stavek "print". ) V primeru napake Python nato ae pogleda, ali se napaka ujema z napako, navedeno v stavku except (V naaem primeru z napako IOError). e ugotovi, da je to ta napaka, izvede blok stavkov, ki sledi stavku "except". Sicer ( e je napaka kakana druga) reagira nanjo na obi ajen na in (prekine program). Stavke "try...except" lahko gnezdimo drugega v drugem in tako lovimo razli ne vrste napak. Na primer: izvajaj = 1 while izvajaj: try: print "1) Prikazi sort.py" print "2) Prikazi osebe.py" print "3) Konec" izbira = input() if izbira == 1: try: print open("sort.py").rea( * L v x z ϽύϽxj_TD=5hEACJaJ hEA5\hb0|hEA5OJQJ\^JhEA5OJQJ^Jh5OJQJ^Jh--hh5OJQJ^J)hVhb0|B*CJOJQJ^JaJph$h1'hV0JCJOJQJ^JaJ8jh1'hVB*CJOJQJU^JaJph#hVB*CJOJQJ^JaJph,jhVB*CJOJQJU^JaJphh--h5OJQJ^Jhh5OJQJ^J$ * x z ulll $Ifgd)`kd1$$If4FQK"$6    34a $$Ifa$gd)gdEA & Fgdu/ 7$8$H$gdV$a$gd jb         ! " # $ % & ) * 7 8 = > ? C D E I J a b g h i m n o r s hEACJaJhEAhb0|hEAOJQJ^J$hb0|hEA0JCJOJQJ^JaJhb0|hEA0JOJQJ^JN   8^kd"$$IfFQK"$6    34a $Ifgd)^kd$$IfFQK"$6    34a # $ % + ? C ^kd$$IfFQK"$6    34a $Ifgd)C D K i m n t 8^kd$$IfFQK"$6    34a $Ifgd)^kd$$IfFQK"$6    34at ^kd$$IfFQK"$6    34a $Ifgd) 8^kd$$IfFQK"$6    34a $Ifgd)^kdu$$IfFQK"$6    34a    ! " ( ) * + , I J K S U V X Y z |        ! " # $ $hb0|hEA0JCJOJQJ^JaJhEACJaJhEAhb0|hEAOJQJ^Jhb0|hEA0JOJQJ^JN ^kdc$$IfFQK"$6    34a $Ifgd)   ! " + 8^kdQ$$IfFQK"$6    34a $Ifgd)^kd$$IfFQK"$6    34a+ I J K Z ^kd$$IfFQK"$6    34a $Ifgd) 8^kd$$IfFQK"$6    34a $Ifgd)^kd?$$IfFQK"$6    34a    # $ ^kd-$$IfFQK"$6    34a $Ifgd)$ % , = > ? 8^kd $$IfFQK"$6    34a $Ifgd)^kd$$IfFQK"$6    34a$ % & * + , - ; < = > ? @ A D v w x       $ ( / 1 wwmw____wUhnRDOJQJ^Jhu/hu/5OJQJ^JhsOJQJ^Jhu/OJQJ^Jhu/hu/OJQJ^JhF+OJQJ^JhF+hF+OJQJ^Jh9g OJQJ^Jhu/5OJQJ^JhEA5OJQJ^JhEAhb0|hEAOJQJ^J$hb0|hEA0JCJOJQJ^JaJhb0|hEA0JOJQJ^JhEACJaJ!? @ A w x       $ ' ( DF2^gd9g gdu/h^hgdu/gdEABDFX4Hl  "|oe|ZoPZhkzOJQJ^Jhkz5OJQJ^JhM#OJQJ^JhkzhkzOJQJ^Jhkzhkz5OJQJ^Jh9g h9g OJQJ^Jh9g h9g 5OJQJ^Jh9g OJQJ^Jhb0|OJQJ^Jh!OJQJ^JhnRDhnRDOJQJ^JhnRD5OJQJ^Jhu/hu/5OJQJ^Jhu/hu/OJQJ^Jhu/OJQJ^J24HNfl@NPRpRTFH h7$8$H$^hgdF+ & F7$8$H$gdF+gdkzgd9g gdu/"$&,.24:<>NPRTp68PRT FHXǺrdh h 5OJQJ^JhF+hOJQJ^JhF+OJQJ^JhZhF+5OJQJ^JhF+hF+OJQJ^JhF+5OJQJ^Jhb0|5OJQJ^Jhu/hOJQJ^JhOJQJ^JhkzhkzOJQJ^Jhkzhkz0JOJQJ^J$hkzhkz0JCJOJQJ^JaJ%HX\p|6hL7$8$H$^L`gds/ 7$8$H$gdT 7$8$H$gd X\pxz46HR| $.׸󡗉||nnhdehs/5OJQJ^JhThTOJQJ^JhThT5OJQJ^Jhb0|OJQJ^JhTOJQJ^Jhs/hs/OJQJ^Jhs/5OJQJ^Jhs/OJQJ^JhTOJQJ^JhTh 5OJQJ^Jh h 5OJQJ^Jh h OJQJ^J'.46FVfjl2Pf & FgdxE & Fgd#H 7$8$H$gdT 7$8$H$gdY 7$8$H$gds/.246fhjl&rd鶩ti[Q?#hxEhxE5CJ$OJQJ^JaJ$hxEOJQJ^JhZhs/5OJQJ^Jhb0|5OJQJ^JhV5OJQJ^Jhh#HhT5OJQJ^JhThT5OJQJ^JhTOJQJ^Jhs/hs/OJQJ^Jhs/hs/5OJQJ^JhYOJQJ^JhYhYOJQJ^JhYhY5OJQJ^Jhs/OJQJ^Jhdehs/OJQJ^J$*2Pf ")0HNhӻӱtgtgtgtSgtgt&jhDjOJQJU^JmHnHuhhOJQJ^Jhh5OJQJ^Jhs/OJQJ^Jh|Jh|JOJQJ^Jh|Jh|J5OJQJ^Jh.0OJQJ^JhxEOJQJ^JhxE5OJQJ^JhxEhxEOJQJ^JhxEhxE5OJQJ^Jhs/5CJ$OJQJ^JaJ$hxE5CJ$OJQJ^JaJ$ )0BHN`h & Fgd & Fgd#H & Fgd|J8P`yz{|} 0 2 4 @ H!J!̿̿~shs[QGh-X$OJQJ^Jh"OJQJ^Jh"h"OJQJ^Jh--h5OJQJ^Jh"5OJQJ^Jhh5OJQJ^Jhh5 hs/5hh.5OJQJ^Jh.5OJQJ^Jh.h#brOJQJ^Jh.h.OJQJ^Jh.h.5OJQJ^Jh5OJQJ^Jhh5OJQJ^JhhOJQJ^J.8P`vz{|2 4 !!!!6"H""" # 7$8$H$^ `gd#3 7$8$H$gd & Fgd#H & Fgd. & FgdJ!T!V!d!f!!!!!"""# #4#>#@#B#J#`#b###ƹԉyi^QCQhoJh#35OJQJ^Jhh#3OJQJ^JhB5OJQJ^JhBh#35>*OJQJ^JhBhB5>*OJQJ^JhBhB>*OJQJ^Jh#35OJQJ^JhhoJOJQJ^JhOJQJ^JhhOJQJ^Jh"h5OJQJ^Jh5OJQJ^Jh"h"OJQJ^Jh-X$OJQJ^Jh"OJQJ^J #@#B#b#####$$z$$$$.%6%8%:%R%x%%%% & Fgd?$ & FgdWe & Fgd#3 & Fgd#H 7$8$H$gd 7$8$H$^ `gd#3gdB#####$$$ $$$*$2$B$D$j$l$n$p$x$$$$־tfWBt8h'gOJQJ^J(j h'ghG!,5EHOJQJU^JjAH hG!,CJUVaJh'gh'g5OJQJ^J$jh'gh'g5OJQJU^Jhdhhdh5OJQJ^JhdhOJQJ^Jhdhh#35OJQJ^Jh#3h#3OJQJ^JhhOJQJ^JhoJh5OJQJ^JhhOJQJ^Jh3QhoJ5OJQJ^Jh3Qh3Q5OJQJ^J$$$$$$$$$$$$%% %"%$%,%.%0%4%8%:%Ż~pfYOffEhBOJQJ^JhWeOJQJ^JhWe5H*OJQJ^JhWeOJQJ^Jh#3hWe5OJQJ^JhdhhWe5OJQJ^JhWe5OJQJ^Jh#3hWeOJQJ^Jh#3OJQJ^Jh#3h#3OJQJ^Jh'gOJQJ^JhdhOJQJ^Jhdh5H*OJQJ^JhdhOJQJ^Jh#3hdh5OJQJ^Jhdh5OJQJ^J:%R%x%%%%%%%%%%%&(&8&9&=&J&c&²qfXJ=q=hdhhdhOJQJ^Jh3Qhdh5OJQJ^Jh3Qh3Q5OJQJ^Jh3Q5OJQJ^Jhdhhdh5OJQJ^Jhdh5OJQJ^JhBhBOJQJ^JhBhdh>*OJQJ^JhB5>*OJQJ^JhBhB5>*OJQJ^JhBhB>*OJQJ^JhBOJQJ^Jh?$OJQJ^Jh?$h?$OJQJ^Jh?$h?$5OJQJ^J%%%%9&J&d&e&{&|&&&&&&'(,).)0)d)))*W*X* & Fgdqu & Fgddh & FgdBgdB & Fgd#3c&{&&&&&&&&&&&&''$')')&),).)0)d))V*X*f*,,,,,-ynahoPhoPOJQJ^JhQv*5OJQJ^JhoPhoP5OJQJ^JhQv*OJQJ^JhquhquOJQJ^Jhquhqu5OJQJ^JhVOJQJ^JhquOJQJ^JhY?hdh5OJQJ^JhdhhY?OJQJ^Jhdhhdh5OJQJ^JhdhhdhOJQJ^JhdhOJQJ^J X*f*w*,,,,,,,,-d----..2...//D//// & Fgdq~ 7$8$H$gdoP & Fgdqu--.....//D/////////////.020=0d0e000000㿲{qc{{T{ThFhF0JOJQJ^JhFhF5OJQJ^JhFOJQJ^JhFhFOJQJ^JhF5OJQJ^JhW$5OJQJ^Jhq~OJQJ^Jhn9vOJQJ^Jhq~hq~OJQJ^Jhn9vhq~5OJQJ^Jhq~5OJQJ^JhoP5OJQJ^Jhq~hq~5OJQJ^Jhq~hoP5OJQJ^J/////////////40=0W0d0e0s000000111gdFgdF & FgdF & Fgdq~0000000000000000000L1U111111111!2$22222222222222222C3T3U3W3X3f3g3j3o3t3333333333⺶զh.$hF0J5OJQJ^JhFhF0JOJQJ^JhFhF0JOJQJ^JhFhFOJQJ^JhFhF0JOJQJ^JhFhF0JOJQJ^JA122C3k3333!4Q4}4~44444444 $$Ifa$gdT & Fgdq~gdF33333344!4-4.4243444E4F4O4P4Q4R4\4`4n4q4|4}4~44444}rgYOhn9vOJQJ^Jhn9vhn9v5OJQJ^JhWZ5OJQJ^JhW$5OJQJ^Jh4hWZOJQJ^JhFOJQJ^Jh4h45OJQJ\^Jh4h40J5OJQJ^Jh4h4OJQJ^Jh4OJQJ^JhFhF0JOJQJ^Jh.$OJQJ^JhFhFOJQJ^JhFhF0JOJQJ^J4444444444455555%5&5(57585:5I5J5L5^5_5e555555555555555+6,6u6x6辯Ⱦ}h,h,OJQJ^Jh,h,5OJQJ^Jhn9vOJQJ^Jhn9vhn9vOJQJ^Jh Ih I0JOJQJ^Jh IOJQJ^Jh Ih IOJQJ^J$h Ih I0JCJOJQJ^JaJh ICJaJh Ih I5OJQJ\^J-44444447^kd: $$IfF*6    34a $IfgdT`kd $$If4F*6    34a4444444^kd $$IfF*6    34a $IfgdT45555558^kd $$IfF*6    34a $IfgdT^kd( $$IfF*6    34a5$5%5&5)53575^kd$$IfF*6    34a $IfgdT7585;5E5I5J5M58^kd$$IfF*6    34a $IfgdT^kd$$IfF*6    34aM5]5^5_5f5~55^kd{$$IfF*6    34a $IfgdT555555+6,6E6u666666zzzzzzz & Fgd, 7$8$H$gdn9v & Fgd Igd I & Fgdq~^kd$$IfF*6    34ax666666666666777777%7)7*7?7@7A7M7N7Z7[7\7l777777777777777R8T8V88889ڜhkphkpOJQJ^Jhkphkp5OJQJ^JhkpOJQJ^Jh[6hkp5OJQJ^Jh[65OJQJ^Jh[6h[65OJQJ^Jh,h[6OJQJ^Jh,OJQJ^Jh,h,OJQJ^Jh[6h,5OJQJ^J26666777%7+7@7A7N7[7\7l7777777777T8V8x88 & Fgdkp & Fgd,88899 9>9@99.:P:\:`:b:::::::::::<;>;;gd fgd f 7$8$H$gd@j & Fgd,99 9<9>9@99999999999::(:,:^:`:b:f:n:p::::::::::ضxm_heDmheDm5OJQJ^Jhb0|5OJQJ^Jh>sOJQJ^J$hZh@j5B*OJQJ^Jphh@jB*OJQJ^Jph$h@jh@j5B*OJQJ^Jph!h@jh@jB*OJQJ^Jph!h@j5B*OJQJ\^Jph'h@jh@j5B*OJQJ\^Jphh@jOJQJ^Jhn9vOJQJ^J"::::;<;>;;;;;;;;<<<<<<2===j>l>>˺rjr]S@@]$h fh f5B*OJQJ^Jphh fOJQJ^Jh fh fOJQJ^Jh fCJaJ h fh fCJOJQJ^JaJ)h fh fB* CJOJQJ^JaJph'hQhQ5>*B*OJQJ^JphhQB*OJQJ^Jph!h fh fB*OJQJ^Jphh fB* phheDmOJQJ^Jh)KGOJQJ^Jh@jOJQJ^JheDmh>s5OJQJ^J;;;<<~gd frkdi$$IfT  0 634abp $Ifgd1q<<<j>l>H??zq $Ifgd1qgd fgd f & Fgd,rkd$$IfT ` 0 634abp >"?H???@:@@6A8A:ApABBBTBVBǺ{dP{? h h CJOJQJ^JaJ'hQh 5>*B*OJQJ^Jph-hQh 56>*B*OJQJ]^Jph!h h B*OJQJ^Jph,h h >*B*CJOJQJ^JaJphh@jOJQJ^Jh fhxNOJQJ^Jh fh fOJQJ^J)h fh fB* CJOJQJ^JaJph!h fh fB*OJQJ^Jph$h fh f5B*OJQJ^Jph??8A:ApATBBxo $Ifgd1qgd gd  & Fgd,rkd$$IfT  0 634abp VBBBBBCCCCCCCClDDDDDDD.E4E6EFFNGGGGGHHH0HHIIIII@IBIDIFIHI̻̻̻p̻p̻*h h 56B*OJQJ]^Jph$h h 5B*OJQJ^Jphh B*OJQJ^Jph'h h 6B*OJQJ]^Jph!h h B*OJQJ^Jphh h OJQJ^J h h CJOJQJ^JaJ)h h B* CJOJQJ^JaJph,BBBCCw $Ifgd1qgd gd rkd$$IfT  0 634abp CCCCCClDDw $Ifgd1qgd gd rkd=$$IfT  0 634abp DDFGG| $Ifgd1qgd rkd$$IfT  0 634abp GGII| $Ifgd1qgd rkd$$IfT  0 634abp II@IFIs$-D`IfM gd1qgd rkd\$$If  0634abp FIHI LLL $Ifgd1qgd ckd$$IfT0 634abHIII"JJJ$KVKzKKLL LLLLLLLLLM*M8MxMMMMMMN)N-N>NgNhNDZ}p[DZ}pDZ)h h B*CJOJQJ^JaJphh h OJQJ^J)h h B* CJOJQJ^JaJph h h CJOJQJ^JaJh B*OJQJ^Jph*h h 56B*OJQJ]^Jph$h h 5B*OJQJ^Jph'h h 6B*OJQJ]^Jph!h h B*OJQJ^Jph#LLLLMM{r $Ifgd1qgd gd gd rkd$$IfT  0 634abp MMgNrN| $Ifgd1qgd rkd\$$IfT  0 634abp hNqNrNsNNNNN OO"O#OPPhPlPnPPPP0QZQ^QzQQQQRR@R̻̻u̻bLb*h h 56B*OJQJ]^Jph$h h 5B*OJQJ^Jph!h h B* OJQJ^Jphh B*OJQJ^Jph$h h 5B*OJQJ^Jph'h h 6B*OJQJ]^Jph!h h B*OJQJ^Jphh h OJQJ^J h h CJOJQJ^JaJ)h h B* CJOJQJ^JaJphrNsN O#O| $Ifgd1qgd rkd$$IfT  0 634abp #O$OnP^QQ| $Ifgd1qgd rkd$$IfT  0 634abp QQFSnS| $Ifgd1qgd rkd{$$IfT  0 634abp @RBRFRRRRRFSHSlSnSpSrSSS!T"T?TBTPTRTVTƲƲơggYK7g'hQhQ5>*B*OJQJ^JphhQB*OJQJ^JphhE>B*OJQJ^Jph/jhE>B*OJQJU^JmHnHphuh h OJQJ^J)h h B* CJOJQJ^JaJph h h CJOJQJ^JaJ'h h 6B*OJQJ]^Jph!h h B*OJQJ^Jph$h h 5B*OJQJ^Jph*h h 56B*OJQJ]^JphnSpSSRTUy $Ifgd1qgd gd rkd0$$IfT  0 634abp VTWTUUUUVzVV,XXXzX|XXXXY[[\\$\%\(\\\\\ͼͩynfZQh:b5CJaJh:bh:b5CJaJh:bCJaJh:bh:bCJaJh:bB*OJQJ^Jphh B*OJQJ^Jph'h h 6B*OJQJ]^Jph$h h 5B*OJQJ^Jph!h h B*OJQJ^Jphh h OJQJ^J)h h B* CJOJQJ^JaJph h h CJOJQJ^JaJUUXzXX}t $Ifgd1qgd gd wkd$$If`  0634abp XXr[%\&\'\(\\]^^^^^^^gd1fgd rkd$$IfT  0 634abp \\\]]]]]]^^^^^^^^^^^^^^^^^¯wlկկկR2jh>*B*OJQJU^JmHnHphuhhCJaJ"jhCJUaJmHnHuh:bCJaJh/h/5>*CJaJh/CJaJhCJaJ%jh5CJUaJmHnHu%jhX5CJUaJmHnHuh:b5CJaJjOh:bUh:bjh:bUjh1fUmHnHu^^^^^^_________`?`n````a,aRakaaaa x[$\$gd qgd4%gd ^^^^B_D__________________ڼyeG:jh q5B*CJOJQJU^JaJmHnHphu&h495B*CJOJQJ^JaJph,hk3hk3>*B*CJOJQJ^JaJph/hk3hk35B*CJH*OJQJ^JaJph&hk35B*CJOJQJ^JaJph:jhk35B*CJOJQJU^JaJmHnHphu&h49>*B*CJOJQJ^JaJph!h h:bB*OJQJ^Jph_`>`n````a+aRajaaaaccc*c,c麦{gR>&htz5B*CJOJQJ^JaJph)htzhtzB*CJOJQJ^JaJph&h]>*B*CJOJQJ^JaJph,h]h]>*B*CJOJQJ^JaJph&h]5B*CJOJQJ^JaJph&hk35B*CJOJQJ^JaJph,h qhk35B*CJOJQJ^JaJph/ *h qh q5B*CJOJQJ^JaJph,h qh q5B*CJOJQJ^JaJphaaaaaaaac:dgggggggggggggggggg [$\$gdpSgd4%,cd\dpddddxgzgխwbbM9%&htz5B*CJOJQJ^JaJph&h"Z5B*CJOJQJ^JaJph)hx_h"ZB*CJOJQJ^JaJph)hx_hpSB*CJOJQJ^JaJph)hx_h^B*CJOJQJ^JaJph@jhx_h}w>*B*CJOJQJU^JaJmHnHphu&h]5B*CJOJQJ^JaJph&hpS5B*CJOJQJ^JaJph&ha5B*CJOJQJ^JaJph,haha5B*CJOJQJ^JaJphzggggggggggggggggggggggggggggggggggggggghշ{{{{g&h>*B*CJOJQJ^JaJph&h>*B*CJOJQJ^JaJph&h^>*B*CJOJQJ^JaJph&h49>*B*CJOJQJ^JaJph:jh}w>*B*CJOJQJU^JaJmHnHphu,haha5B*CJOJQJ^JaJph&hpS5B*CJOJQJ^JaJph'gggghxhhhi>iZiiiiii j,j]jjjjjkakkkk x[$\$gdgd4%hh?jCjDj]jqjujjjjjjkkEkFkakbkkkmmmթթvbN&h>*B*CJOJQJ^JaJph&h>*B*CJOJQJ^JaJph:jh5B*CJOJQJU^JaJmHnHphu)h56B*CJOJQJ^JaJph/hh56B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph,hh5B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJphkl*lRlzllllmmmm%m|mmHndnoooooooooo [$\$gd<*gd4% x[$\$gdm$m%mbmem|mmmmmmmFnTn^n`nlnxnznnnoo(o,ogUU>,h<*h<*5B*CJOJQJ^JaJph#h<*B*CJOJQJ^JaJph/h<*h<*5B*CJOJQJ]^JaJph)h<*6B*CJOJQJ]^JaJph/h<*h<*6B*CJOJQJ]^JaJph)h<*h<*B*CJOJQJ^JaJph&h<*5B*CJOJQJ^JaJph&h4%>*B*CJOJQJ^JaJph,h4%h4%>*B*CJOJQJ^JaJph,oooooooooooooooooooooooopppвuWCWCWCWCWCWC&h:5B*CJOJQJ^JaJph:jhPz5B*CJOJQJU^JaJmHnHphu)h<Sh<SB*CJOJQJ^JaJph&h<S5B*CJOJQJ^JaJph&h<*5B*CJOJQJ^JaJph:jh:5B*CJOJQJU^JaJmHnHphu,h<*h<*5B*CJOJQJ^JaJph/h<*h<*5B*CJOJQJ]^JaJphopp p pHpppppppprr'r-r $$Ifa$gd)gd4%-$d%d&d'dNOPQ[$\$gd<S-$d%d&d'dNOPQ[$\$gdSgd4%ppp pppppppppppppr-r.r췟qcUcE8h K-h K-OJQJ^Jh K-h K-5OJQJ\^Jhb0|B*OJQJ^Jphh<SB*OJQJ^Jph,h<*h:5B*CJOJQJ^JaJph, *hShSB*CJOJQJ^JaJph/ *hShS5B*CJOJQJ^JaJph,hShS5B*CJOJQJ^JaJph:jh:5B*CJOJQJU^JaJmHnHphu&h:5B*CJOJQJ^JaJph-r.r0rCrDrErHr7^kdC*$$IfF*6    34a $Ifgd)`kd)$$If4F*6    34a.r/rErGr]r^rwryrrrrrrrrrrrrrrrs1s3sOsQs`scsdsestttuuvhhQB*OJQJ^Jph$h}h4%5B*OJQJ^Jph!h4%h4%B*OJQJ^Jphhb0|B*OJQJ^Jph/jhwCB* OJQJU^JmHnHphuh K-B*OJQJ^Jphh K-h<SB*OJQJ^Jphh K-h K-OJQJ^J$h K-h K-0JCJOJQJ^JaJ#Hr[r\r]r_rurvr^kd*$$IfF*6    34a $Ifgd)vrwrzrrrrr8^kd+$$IfF*6    34a $Ifgd)^kd1+$$IfF*6    34arrrrrrr^kd,$$IfF*6    34a $Ifgd)rrrrrrr8^kd -$$IfF*6    34a $Ifgd)^kd,$$IfF*6    34arrrrrrr^kd-$$IfF*6    34a $Ifgd)rrrcsds2uPuBw~$-DIfM gd1q^gd K-gd4%^kd-$$IfF*6    34au,u0u2uPuZuduruvvvvvvww'w(wAwBwڰ|gPgPgPgPgPg? h4%h4%CJOJQJ^JaJ,hLh4%5B* CJOJQJ^JaJph)h4%h4%B* CJOJQJ^JaJph7jhwCB* CJOJQJU^JaJmHnHphu/jh0*B* OJQJU^JmHnHphu7jh B* CJOJQJU^JaJmHnHphuh<SB*OJQJ^Jph!h4%h4%B*OJQJ^Jph'hQhQ5>*B*OJQJ^JphBwCwEwFwGwylznzzz|pppkkpfgdb0|gd4% [$\$gdb0|gd4%~kdr.$$If  03634` abp BwCwDwEwGwx2x~xxxxxxxyyyyVybytyyyyjzlznz|zzʼʩʩʩʅr^rʅNhb0|5B*OJQJ^Jph'hwCh4%5>*B*OJQJ^Jph$h4%h4%>*B*OJQJ^JphhwCB*OJQJ^Jph*hwCh4%56B*OJQJ]^Jph$hwCh4%5B*OJQJ^Jphhb0|B*OJQJ^Jph!h4%h4%B*OJQJ^Jph/jh0*B* OJQJU^JmHnHphuh4%h4%OJQJ^Jzz2{4{6{8{{{{|||||4|||||||||}} }N}Z}}~~"~$~&~(~*~^~~~4HJ͸ͧͧ͸ͧr'hwCh4%5>*B*OJQJ^JphhwCB*OJQJ^Jph$hwCh4%5B*OJQJ^Jph!h4%h4%B*OJQJ^Jph)h4%h4%B*CJOJQJ^JaJphh4%h4%OJQJ^J)h4%h4%B* CJOJQJ^JaJph h4%h4%CJOJQJ^JaJ,z4{6{8{{|~l$-D`IfM gd1qgd4%gd4%ckd4/$$If0634ab$-DIfM gd1q||||||y$-DIfM gd1qgd4%gd4%gd4%ckd/$$If0634ab||||}n$-D`IfM gd1qgd4%gd4%rkd`0$$IfT  0 634abp }}} }~$~n$-DIfM gd1qgd4%gd4%rkd1$$IfT  0 634abp $~&~(~*~L}t $Ifgd1qgd4%gd4%gd4%rkd1$$IfT  0 634abp JLNxƁ΁ DȂ:ΊЊ˷˦˦˦˦˦˦˦˦ses˦˦˦hb0|B*OJQJ^Jphh4%h4%OJQJ^J)h4%h4%B* CJOJQJ^JaJph h4%h4%CJOJQJ^JaJ!h4%h4%B*OJQJ^Jph'hwCh4%5>*B*OJQJ^Jph$hwCh4%5B*OJQJ^Jph$hwChwC5B*OJQJ^JphhwCB*OJQJ^Jph'~ $Ifgd1qgd4%rkd2$$IfT  0 634abp Ί~ $Ifgd1qgd4%rkd43$$IfT  0 634abp LNPfŒČbBDF̎֎؎(V:<>ƐPѾѾѾіііl'h4%h4%6B*OJQJ]^Jph*h~:%h4%56B*OJQJ]^Jph$h~:%h4%5B*OJQJ^Jph)h4%h4%B* CJOJQJ^JaJph$hwCh4%5B*OJQJ^Jph!h4%h4%B*OJQJ^Jphh4%h4%OJQJ^J h4%h4%CJOJQJ^JaJ&N~ $Ifgd1qgd4%rkd3$$IfT  0 634abp NPŒ| $Ifgd1qgd4%rkd4$$IfT  0 634abp Dy $Ifgd1qgd4%gd4%rkdS5$$IfT  0 634abp DF<~ $Ifgd1qgd4%rkd6$$IfT  0 634abp <>R| $Ifgd1qgd4%rkd6$$IfT  0 634abp PR XYZؒ޹ybybQDh4%h4%OJQJ^J h4%h4%CJOJQJ^JaJ, *h0h4%B* CJOJQJ^JaJph,hYY#h4%5B* CJOJQJ^JaJph)h4%h4%B* CJOJQJ^JaJph'h=xh=x5>*B*OJQJ^Jph!h4%h4%B*OJQJ^Jph'hwCh4%5>*B*OJQJ^Jph$hwCh4%5B*OJQJ^Jphh<SB*OJQJ^Jph gd4%wkdr7$$IfX  0 634abp  @Ͼ簀r_$hwCh4%5B*OJQJ^JphhwCB*OJQJ^Jph/jh'B* OJQJU^JmHnHphu/jh'B*OJQJU^JmHnHphuh.s B*OJQJ^Jph!h4%h4%B*OJQJ^Jph/jh.s B* OJQJU^JmHnHphu/jh.s B*OJQJU^JmHnHphuz~gd4%gd4%ƕҕL֖Rdؘ(6ޙVxܨܚܨܨܨܨܨܨ܌tfR'h@ih@i5>*B*OJQJ^Jphh@iB*OJQJ^Jph/jh@iB*OJQJU^JmHnHphuh>B*OJQJ^Jphh48B*OJQJ^Jph$h48h4%5B*OJQJ^Jph$hwCh4%5B*OJQJ^JphhwCB*OJQJ^Jph!h4%h4%B*OJQJ^Jph$hwChwC5B*OJQJ^Jphxz|~Ě"rܛޛGHŭşr^rM8M)h4%h4%B* CJOJQJ^JaJph h4%h4%CJOJQJ^JaJ'h48h4%5>*B*OJQJ^Jph!h4%h4%B*OJQJ^Jphh;(B*OJQJ^Jphh@+B*OJQJ^Jphh>B*OJQJ^Jph/jh9B*OJQJU^JmHnHphuh<SB*OJQJ^Jph/jh>B*OJQJU^JmHnHphu'h@ih<S5>*B*OJQJ^JphšĚܛHI*ywkd'8$$IfY$g  08634abp $Ifgd1qgd4%HI)*+HqxʢѢ&Ѽ⩘t`L`&h9`5B*CJOJQJ^JaJph&hC5B*CJOJQJ^JaJph#hOYB*CJOJQJ^JaJphh<SB*phh@jOJQJ^J!h h4%B*OJQJ^Jph$h h4%5B*OJQJ^Jph)h4%h4%B* CJOJQJ^JaJph h4%h4%CJOJQJ^JaJ!h4%h4%B*OJQJ^Jphh4%h4%OJQJ^J*+6zuiiiiiiii [$\$gdOYgdYY# & Fgd,gd4%wkd8$$If"f  0u634abp &'456<NP[]mnlP>#hOYB*CJOJQJ^JaJph7jhwRB*CJOJQJU^JaJmHnHphu&h9`5B*CJOJQJ^JaJph)h9`hCB*CJOJQJ^JaJph/hhC5>*B*CJOJQJ^JaJph&hOY5B*CJOJQJ^JaJph&hC5B*CJOJQJ^JaJph,hh>*B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJphģȣɣˣ̣ͣΣңӣգ٣ۣޣѵљљљљ㇙㇙㇙㇙#h^2B*CJOJQJ^JaJph7jhRSB*CJOJQJU^JaJmHnHphu7jhCBB*CJOJQJU^JaJmHnHphu#hOYB*CJOJQJ^JaJph7jh19B*CJOJQJU^JaJmHnHphu*£ãģɣ̣Σӣ֣ףأ٣ܣݣޣ [$\$gdOYޣ.I^i[ať˥ x[$\$gdgdYY# [$\$gdOY.H^h̤Ԥ'(7[`ťʥɴnYnA/ *h""h[T5B*CJOJQJ^JaJph)h>oh[TB*CJOJQJ^JaJph,h>oh[T5B*CJOJQJ^JaJph/ *h[Th[T5B*CJOJQJ^JaJph,h[Th[T5B*CJOJQJ^JaJph)h[Th[TB*CJOJQJ^JaJphh[TB*ph#hOYB*CJOJQJ^JaJph7jh>oB*CJOJQJU^JaJmHnHphuvئ`bdfhjƧj(HLNR [$\$gd3PP$[$\$a$gdrZ B[$\$gd [$\$gd0dN [$\$gd>ogdgdYY#^jlħƧȧºxaT87jh2*B*CJOJQJU^JaJmHnHphuh>oh>o5B*ph,hzNThzNT5B*CJOJQJ^JaJph,hzNThzNT>*B*CJOJQJ^JaJph&hzNT5B*CJOJQJ^JaJph,h>oh>o5B*CJOJQJ^JaJphh>oB*ph&h>o5B*CJOJQJ^JaJph,hh5B*CJOJQJ^JaJph#hB*CJOJQJ^JaJph ȧީ2RVhjκmmmYB7hRh0dNB*ph,hRhR>*B*CJOJQJ^JaJph&hR5B*CJOJQJ^JaJph&h0dN5B*CJOJQJ^JaJph,h0dNh0dN5B*CJOJQJ^JaJphh>oh>oB*ph,h>oh>o5B*CJOJQJ^JaJph&h>o5B*CJOJQJ^JaJph)h>oh>oB*CJOJQJ^JaJph7jhjyB*CJOJQJU^JaJmHnHphujlz$(,0FJLRT\κy]yKC,,h+h+5B*CJOJQJ^JaJphh0dNB*ph#jh0dNB*UmHnHphu7jhRB*CJOJQJU^JaJmHnHphu#jhRB*UmHnHphu#jhVB*UmHnHphu#jhf,B*UmHnHphuh0dNh0dNB*ph&h0dN5B*CJOJQJ^JaJph)h0dNh0dNB*CJOJQJ^JaJph7jh0dNB*CJOJQJU^JaJmHnHphu \ԫfj|~dfhĭ영lXC.)hqhqB*CJOJQJ^JaJph)hqh+B*CJOJQJ^JaJph&hq5B*CJOJQJ^JaJph)h+h+B*CJOJQJ^JaJph,h+h+>*B*CJOJQJ^JaJph)hh3PPB*CJOJQJ^JaJph,hM hM >*B*CJOJQJ^JaJph&hM 5B*CJOJQJ^JaJph&h{Vi5B*CJOJQJ^JaJph&h+5B*CJOJQJ^JaJphFHJNPRTXZ\`dhlprtvxz|~«z^zz^zB^z^zB^zB^zz7jhB*CJOJQJU^JaJmHnHphu7jhj-B*CJOJQJU^JaJmHnHphu)h3PPh3PPB*CJOJQJ^JaJph7jh"/B*CJOJQJU^JaJmHnHphu,h+h+5B*CJOJQJ^JaJph&hH5B*CJOJQJ^JaJph,hqhq5B*CJOJQJ^JaJph#hqB*CJOJQJ^JaJphRVX\fhnpv| [$\$gd3PP¯βΖββΖΖ΄hΖLDh3PPB*ph7jhm DB*CJOJQJU^JaJmHnHphu7jh5B*CJOJQJU^JaJmHnHphu#jh+VB*UmHnHphu7jh+VB*CJOJQJU^JaJmHnHphu7jhj-B*CJOJQJU^JaJmHnHphu)h3PPh3PPB*CJOJQJ^JaJph7jh"/B*CJOJQJU^JaJmHnHphu¯įƯȯʯ̯ίЯԯ֯دگܯޯ [$\$gd>o [$\$gd3PP¯ίЯү ²ƲƱvbvK-K:jhlOj5B*CJOJQJU^JaJmHnHphu,hUshUs5B*CJOJQJ^JaJph&hUs5B*CJOJQJ^JaJph,h h >*B*CJOJQJ^JaJph&h 5B*CJOJQJ^JaJphhUsB*phhm DB*ph)hm Dhm DB*CJOJQJ^JaJph7jhm DB*CJOJQJU^JaJmHnHphu)hm DhB*CJOJQJ^JaJphhB*ph  IJƲ [$\$gdUs [$\$gd>oƲȲʲ̲вҲԲֲزܲ޲ "$(,.0268<>B˭ˏˏˏˏˏ˭˭xxxphm DB*ph,hUshm D5B*CJOJQJ^JaJph:jhB`@5B*CJOJQJU^JaJmHnHphu:jhlOj5B*CJOJQJU^JaJmHnHphu,hUshUs5B*CJOJQJ^JaJph:jh,W5B*CJOJQJU^JaJmHnHphu+ƲʲβвԲڲܲ$*,046:< [$\$gdUs<@BFJLNPRTVZ\^`bdfhjlnprtvx [$\$gdE [$\$gd>oBDFHTVX bǿyqiT@,&h>w5B*CJOJQJ^JaJph&hnw5B*CJOJQJ^JaJph)hN0|h B*CJOJQJ^JaJphh B*phhEB*ph)hEhEB*CJOJQJ^JaJph7jhEB*CJOJQJU^JaJmHnHphu)hEhNLB*CJOJQJ^JaJphhNLB*ph:jhNL5B*CJOJQJU^JaJmHnHphuhm DB*ph#jh,WB*UmHnHphu xz|~| [$\$gd>o [$\$gdEbxz|վqqZ>))hN0|h B*CJOJQJ^JaJph7jh8B*CJOJQJU^JaJmHnHphu,h*oh 5B*CJOJQJ^JaJph)h8h;(B*CJOJQJ^JaJph&h;(5B*CJOJQJ^JaJph#h;(B*CJOJQJ^JaJph#h*oB*CJOJQJ^JaJph,hnwh 5B*CJOJQJ^JaJph&h>w5B*CJOJQJ^JaJph,h>wh>w>*B*CJOJQJ^JaJph µĵȵ̵εеԵֵ޵99[$\$]9^9gdN0| [$\$gd>oĵƵȵʵеҵֵܵ޵ βΖΖΖΖΖΖΖ΁mV,h(_h(_>*B*CJOJQJ^JaJph&h(_5B*CJOJQJ^JaJph)hN0|hN0|B*CJOJQJ^JaJph7jhmk&B*CJOJQJU^JaJmHnHphu7jh8B*CJOJQJU^JaJmHnHphu)hN0|h B*CJOJQJ^JaJph7jhjB*CJOJQJU^JaJmHnHphu  9[$\$]9gd 99[$\$]9^9gdN0|Զض&,.08:FHïhS)hN0|hN0|B*CJOJQJ^JaJph7jh\B*CJOJQJU^JaJmHnHphu,h(_h(_5B*CJOJQJ^JaJph&h\5B*CJOJQJ^JaJph&h(_5B*CJOJQJ^JaJph)h(_h(_B*CJOJQJ^JaJph&hN0|5B*CJOJQJ^JaJph&h 5B*CJOJQJ^JaJph  "(*,.246:<BDFHLRVXZ99[$\$]9^9gdN0| "&.068<@HJLPRTXZ\bβΖΖΖΖΖΖΖΖ΄hV#h86 B*CJOJQJ^JaJph7jhO:B*CJOJQJU^JaJmHnHphu#hN0|B*CJOJQJ^JaJph7jhg[B*CJOJQJU^JaJmHnHphu7jh\B*CJOJQJU^JaJmHnHphu)hN0|hN0|B*CJOJQJ^JaJph7jh|yB*CJOJQJU^JaJmHnHphuZ^`bdfhjlnprtvxz|~9[$\$]9gd 99[$\$]9^9gdN0|bdĹ,-G®—qU@q.#hlTB*CJOJQJ^JaJph)hN0|hN0|B*CJOJQJ^JaJph7jh? B*CJOJQJU^JaJmHnHphu#hN0|B*CJOJQJ^JaJph&h >*B*CJOJQJ^JaJph,h(_h >*B*CJOJQJ^JaJph&h 5B*CJOJQJ^JaJph&h 5B*CJOJQJ^JaJph&hO:5B*CJOJQJ^JaJph)hN0|h86 B*CJOJQJ^JaJph !"#$%&'()*+,-./012399[$\$]9^9gdN0|3456789:;<=>?@ABCDEFGHغ",-99[$\$]9^9gdT"99[$\$]9^9gdN0|GHMSUVźκӺ׺غ޺!"#+-./02356ֿֿֿ֨cQ*B*CJOJQJ^JaJph,hhT">*B*CJOJQJ^JaJph,hlThT"5B*CJOJQJ^JaJph&hT"5B*CJOJQJ^JaJph)hN0|hlTB*CJOJQJ^JaJph-/1245789<ABEFHIJLNQSTVXYZ[ [$\$gdT"99[$\$]9^9gdT"69;<@ABDFGJKLMNPQRTUVW\^`abdflmtŻιιιιιιιιιιιvb&hlT5B*CJOJQJ^JaJph,hlThlT5B*CJOJQJ^JaJph&hT"5B*CJOJQJ^JaJph.jhT"CJOJQJU^JaJmHnHu)hDi3hT"B*CJOJQJ^JaJph7jhT"B*CJOJQJU^JaJmHnHphu)hN0|hT"B*CJOJQJ^JaJph [\_`cdghijklƻDHJNRTXZ^`bdnp99[$\$]9^9gdN0| [$\$gdT"Żƻ̻0:BDFJLNïmQ< <7jhB*CJOJQJU^JaJmHnHphu)hN0|hN0|B*CJOJQJ^JaJph7jht>FB*CJOJQJU^JaJmHnHphu,hlThlT5B*CJOJQJ^JaJph&hj1>*B*CJOJQJ^JaJph,hh>*B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph&hlT5B*CJOJQJ^JaJph)hlThlTB*CJOJQJ^JaJph&hN0|5B*CJOJQJ^JaJph NPTVZ\dhlnprt|~βΖ΁ePPPPPP)hDi3hDi3B*CJOJQJ^JaJph7jhDi3B*CJOJQJU^JaJmHnHphu)hDi3hN0|B*CJOJQJ^JaJph7jh}{UB*CJOJQJU^JaJmHnHphu7jhB*CJOJQJU^JaJmHnHphu)hN0|hN0|B*CJOJQJ^JaJph7jht>FB*CJOJQJU^JaJmHnHphuptvxz|Ŀƿ [$\$gd>o¿Ŀ:̷̷{g{S{;S/h,h,5>*B*CJOJQJ^JaJph&h,5B*CJOJQJ^JaJph&hDi35B*CJOJQJ^JaJph&h@o5B*CJOJQJ^JaJph&hq~}5B*CJOJQJ^JaJph&hZw5B*CJOJQJ^JaJph)hDi3hDi3B*CJOJQJ^JaJph7jh,B*CJOJQJU^JaJmHnHphu.jh,CJOJQJU^JaJmHnHuƿ(.;=>?@ABCDEFGHIJKLMNOPQR [$\$gd>o:;<^ajkno͸u`XP9+h6B*OJQJ^Jph,h0dNhYY#5B*CJOJQJ^JaJphhYY#B*phhoB*ph)hFhoB*CJOJQJ^JaJph)hohoB*CJOJQJ^JaJph,hoho5B*CJOJQJ^JaJph,hohDi35B*CJOJQJ^JaJph)hDi3hDi3B*CJOJQJ^JaJph7jhoB*CJOJQJU^JaJmHnHphu,hZwh,5B*CJOJQJ^JaJph RSTUVWXYZ[\]^_`abcdefghijkl [$\$gdF [$\$gd>olmno>D Lx^L`gd6xgd6gdYY# [$\$gd>o [$\$gdF >KLNȔ̶̥kXkkG!h6h6B*OJQJ^Jph$h656B*OJQJ]^Jph'h6h65B*OJQJ]^Jphh6B*OJQJ]^Jph*hN0|h656B*OJQJ]^Jph!hN0|h6B*OJQJ^Jph*h6h656B*OJQJ]^Jph$hN0|h65B*OJQJ^Jphh6B*OJQJ^Jph$h6h65B*OJQJ^Jph  3Lٵrrrh)$B*OJQJ^JphhXB*OJQJ^Jph' *hXh)$5B*OJQJ^Jph$ *hXh)$B*OJQJ^Jph!h)$h)$B*OJQJ^Jph$hjlhjl5B*OJQJ^Jphh6B*OJQJ^Jph/jh)$B*OJQJU^JmHnHphu'Pdx3LYfs x$IfgdX $IfgdYY# $Ifgd)$L8\`jl`||i|UD!h\+5>*B*OJQJ^Jph'h\+h\+5>*B*OJQJ^Jph$hYY#hYY#5B*OJQJ^Jph$hYY#hYY#5B*OJQJ^Jph!hYY#hYY#B*OJQJ^Jphh6B*OJQJ^Jph$hD5hD55B*OJQJ^JphhD5B*OJQJ^Jphh)$B*OJQJ^Jph!hXh)$B*OJQJ^Jph!hXhXB*OJQJ^JphgdYY#xkd9$$IfF0# t0644 la&ȳviX!hYY#hYY#B*OJQJ^JphhYY#hYY#OJQJ^J hYY#hYY#CJOJQJ^JaJ,hphYY#5B*CJOJQJ^JaJph33)hYY#hYY#B*CJOJQJ^JaJph)hYY#hYY#B*CJOJQJ^JaJph33!hYY#h\+B*OJQJ^Jph/jh\+B*OJQJU^JmHnHphuh\+B*OJQJ^Jph"()*D|rkd9$$IfT  0 634abp $IfgdTgdYY# &(2X\zƸzlTlC6hhOJQJ^J!hh`-B*OJQJ^Jph/jhB*OJQJU^JmHnHphuh`-B*OJQJ^JphhB*OJQJ^Jph$hh5B*OJQJ^Jph8jhh5B*OJQJU^JmHnHphuhhB*OJQJ^Jph!hYY#hYY#B*OJQJ^Jph*hYY#hYY#56B*OJQJ]^Jph$hYY#hYY#5B*OJQJ^Jph '(*+2Dck}~õwffwLww;!hu%hu%B*OJQJ^Jph2jhu%5B*OJQJU^JmHnHphu!hhB*OJQJ^JphhB*OJQJ^Jph$hh5B*OJQJ^Jph8jhh5B*OJQJU^JmHnHphuh`-B*OJQJ^Jph!hh`-B*OJQJ^Jphhh5OJQJ\^JhhOJQJ^Jhh0JOJQJ^JDJXlx~ gdYY#<gdu%<gd  !#İ||||n`RRhB*OJQJ^JphjhUmHnHuhD8B*OJQJ^JphhZkB*OJQJ^Jph/jh+jhB*OJQJU^JmHnHphuhhB*OJQJ^Jph'h+jhh+jh5>*B*OJQJ^Jphh+jhB*OJQJ^Jphh?6B*OJQJ^JphhB*OJQJ^Jph!hu%hB*OJQJ^Jph !"#$%&'()*+xgdZkgdYY##*+,˽v˽v˽vvvvvvvvhvhvhvhhB*OJQJ^Jph/jhB*OJQJU^JmHnHphuhhB*OJQJ^Jph$h3h35B*OJQJ^Jphh3B*OJQJ^JphhZkB*OJQJ^Jph/jhZkB*OJQJU^JmHnHphuh`-B*OJQJ^Jphh]B*OJQJ^Jph& "2IS]ghij^_`abcgd5KgdpgdYY#xgdZkfgijZ[\]_v|tpbO?h;(5B*OJQJ^Jph$ht2h;(5B*OJQJ^Jphh;(B*OJQJ^Jphh5Kj:hpUhpjhpUjheUmHnHuhyUhp5CJaJhyUhyU5CJaJhyUCJaJhphpCJaJhpB*OJQJ^JphhhB*OJQJ^Jph!hZkhhB*OJQJ^Jph!hZkhZkB*OJQJ^Jphcdefghijklmnopqrstuvgd;(gd5K ߽ߪ߽ߪ߃t\Lh;(B*H*OJQJ^Jph.jMhHoh;(B*EHOJQJU^JphjH h;(CJUVaJ$jh;(B*OJQJU^Jph'h xh;(5B*H*OJQJ^Jph$h xh;(5B*OJQJ^Jphjh;(UmHnHu'h xh;(5>*B*OJQJ^Jphh;(B*OJQJ^Jph$h]h;(5B*OJQJ^Jph "$&(*,.02468:<>@BDFHJLNPRgd5Kgd;(RzƺxtxlxaSEh0kB*OJQJ^JphhpB*OJQJ^Jphh5KhYeCJaJjOhYeUhYejhYeUjh|oUmHnHujh0kUmHnHuhYe5CJaJh5K5CJaJhz hz 5CJaJhz h5K5CJaJh5KCJaJh]h5K5CJaJh5Kh5KCJaJh;(CJaJ$hHoh;(B*H*OJQJ^JphRgdYY#gd5Kd~p~XG4$hhhYY#5B*OJQJ^Jph!hYY#hYY#B*OJQJ^Jph/jhsB*OJQJU^JmHnHphuhi%B*OJQJ^Jphh0kB*OJQJ^Jph)h:bh:bB*CJOJQJ^JaJphj!hhUhi%jhi%Uhi%h:bCJaJhi%hi%5CJaJhi%CJaJhi%hi%CJaJ"jhCJUaJmHnHuh:bB*OJQJ^Jphdfɹuuu[KKKKKh5B*OJQJ^Jph2jh5B*OJQJU^JmHnHphu2jhs5B*OJQJU^JmHnHphuhs5B*OJQJ^Jph2jh5B*OJQJU^JmHnHphuhYY#5B*OJQJ^Jph$hhhYY#5B*OJQJ^Jph'hhhh5>*B*OJQJ^Jphhh5B*OJQJ^Jph5(x$d%d&d'dNOPQgd ,&$d%d&d'dNOPQgd ,gdYY#XopyƵudVuHd3)hYY#hYY#B*CJOJQJ^JaJph33h$B*OJQJ^JphhB*OJQJ^Jph!hh`-B*OJQJ^Jphh`-B*OJQJ^Jph!h`-h`-B*OJQJ^JphhcB*OJQJ^Jph$ *hhB*OJQJ^Jph!hhB*OJQJ^Jphh5B*OJQJ^Jphh5B*OJQJ^Jph2jh5B*OJQJU^JmHnHphu7q $IfgdTgd`-(x$d%d&d'dNOPQgd`-(x$d%d&d'dNOPQgd , &,`jվՖxY;Y:hshYY#B*CJOJQJ^JaJehphr=hshYY#5B*CJOJQJ^JaJehphr!hYY#hYY#B*OJQJ^JphhYY#hYY#OJQJ^J hYY#hYY#CJOJQJ^JaJ,h`whYY#5B*CJOJQJ^JaJph3,h`whYY#5B*CJOJQJ^JaJph33)hYY#hYY#B*CJOJQJ^JaJph33)hYY#hYY#B*CJOJQJ^JaJph.lw $IfgdTgdYY#wkdn$$IfCb  0634abp  4J.0BjlnVp DFLv|BDϼϼϫtϼtϼϼϫt___)hYY#hYY#B*CJOJQJ^JaJph33hYY#hYY#OJQJ^J)hYY#hYY#B* CJOJQJ^JaJph)hYY#hYY#B*CJOJQJ^JaJph hYY#hYY#CJOJQJ^JaJ$hYY#hYY#5B*OJQJ^Jph!hYY#hYY#B*OJQJ^Jph= *hshYY#B*CJOJQJ^JaJehphr%ln| $IfgdTgdYY#rkd#$$IfT  0 634abp D| $IfgdTgdYY#rkd؃$$IfT  0 634abp Dw $IfgdTgdYY#wkd$$If-Z  0 634abp DFw $IfgdTgdYY#wkdB$$If-Z  0 634abp DFT|jpt ⺥x]B5hhYY#5B*OJQJ^Jehphr5hhYY#5B*OJQJ^Jehphrh$B*OJQJ^JphhgB*OJQJ^Jph hYY#hYY#CJOJQJ^JaJ)hYY#hYY#B*CJOJQJ^JaJph)hYY#hYY#B*CJOJQJ^JaJph33$hYY#hYY#5B*OJQJ^Jph!hYY#hYY#B*OJQJ^JphhYY#hYY#OJQJ^Jjlnprt}}}}}}}gdYY#gdYY#wkd$$IfV  0 634abp ( 0JUveveveP;P)hchYY#B*CJOJQJ^JaJph)hYY#hYY#B*CJOJQJ^JaJph33!hBhBB*OJQJ^Jph$hBhB5B*OJQJ^Jph'hBhB5>*B*OJQJ^Jphh'5B*OJQJ^Jph$h'h'5B*OJQJ^Jph!hYY#hYY#B*OJQJ^Jph$hYY#hYY#5B*OJQJ^Jph5hhYY#5B*OJQJ^Jehphr(X"0JUev: $IfgdT x[$\$gdB-x$d%d&d'dNOPQ[$\$gdB$9:;p 468<@կpկf^J&hc5B*CJOJQJ^JaJphh$B*phh@jOJQJ^J$hYY#hYY#5B*OJQJ^Jph!hYY#hYY#B*OJQJ^Jphh'B*OJQJ^JphhYY#hYY#OJQJ^J hYY#hYY#CJOJQJ^JaJ)hYY#hYY#B*CJOJQJ^JaJph3)hYY#hYY#B*CJOJQJ^JaJph33)hYY#hYY#B*CJOJQJ^JaJph:;<6w $IfgdTgdYY#wkd$$IfEU  0\ 634abp 68:<>@(,026:DJgdkEX & Fgd,rkda$$IfT  0 634abp $$&(wbwN7,hchc5B*CJOJQJ^JaJph&hs35B*CJOJQJ^JaJph)hchcB*CJOJQJ^JaJph&hc5B*CJOJQJ^JaJph,hchc>*B*CJOJQJ^JaJph:jhB>*B*CJOJQJU^JaJmHnHphu,hMhc5B*CJOJQJ^JaJph)hMhMB*CJOJQJ^JaJph&hM5B*CJOJQJ^JaJph (*,.2468:>BDHJLNPTVXZ\`bdfxβΖΖΖΖΖΖ΂mY&h$5B*CJOJQJ^JaJph)hhB*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph7jh[B*CJOJQJU^JaJmHnHphu7jhBB*CJOJQJU^JaJmHnHphu)hBh$B*CJOJQJ^JaJph7jhX= B*CJOJQJU^JaJmHnHphuJNVZ^`dhjlnprtvx $(.48DPT [$\$gdgdkEX8: "$&(*լՕy]A,y,],y)hBh$B*CJOJQJ^JaJph7jhGB*CJOJQJU^JaJmHnHphu7jhNB*CJOJQJU^JaJmHnHphu7jh?B*CJOJQJU^JaJmHnHphu,hh5B*CJOJQJ^JaJph&hY+5B*CJOJQJ^JaJph)hhB*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph,hh>*B*CJOJQJ^JaJph*,.02468:BDLNPRTV\^bdfhjlnptvxz|~ββΖzΖzΖΖzhzVzVVVVV#hBB*CJOJQJ^JaJph#h$B*CJOJQJ^JaJph7jhE}VB*CJOJQJU^JaJmHnHphu7jh0KB*CJOJQJU^JaJmHnHphu7jh?B*CJOJQJU^JaJmHnHphu)hBh$B*CJOJQJ^JaJph7jhNB*CJOJQJU^JaJmHnHphu T^flpvz~-Mg  <[$\$gdc%gdkEX~-L &/7RWdmnpǵǵǵǵ㵞nWn, *hCVhCVB*CJOJQJ^JaJph/ *hCVhCV5B*CJOJQJ^JaJph/ *hc%hc%5B*CJOJQJ^JaJph,hc%hc%5B*CJOJQJ^JaJph#hBB*CJOJQJ^JaJph7jh0KB*CJOJQJU^JaJmHnHphu7jhiB*CJOJQJU^JaJmHnHphu '8JX8BvwCHIJK <[$\$gdCVgdkEX <[$\$gdc%8ABuvGHսիnnnWC1#hiB*CJOJQJ^JaJph&hi5B*CJOJQJ^JaJph,hCVhB5B*CJOJQJ^JaJph&hCV5B*CJOJQJ^JaJph,hCVhCV5B*CJOJQJ^JaJph#hBB*CJOJQJ^JaJph#hCVB*CJOJQJ^JaJph/ *hc%hc%5B*CJOJQJ^JaJph,hc%hc%5B*CJOJQJ^JaJph&hc%5B*CJOJQJ^JaJph  "$xZxCxZxxZxxZxZx,h 43h 435B*CJOJQJ^JaJph:jhu5B*CJOJQJU^JaJmHnHphu&h 435B*CJOJQJ^JaJph:jh 435B*CJOJQJU^JaJmHnHphu,h%bhB>*B*CJOJQJ^JaJph&h%b5B*CJOJQJ^JaJph&h%b>*B*CJOJQJ^JaJph,h 43h 43>*B*CJOJQJ^JaJph "&*268>DFLNTXZbhn <[$\$gdecgdkEX$&(*0248<>@BFHJNRTVZ`bdfhlptΰΰΒ~~jV&h%b5B*CJOJQJ^JaJph&hu5B*CJOJQJ^JaJph&h4h55B*CJOJQJ^JaJph:jh4h55B*CJOJQJU^JaJmHnHphu:jh 435B*CJOJQJU^JaJmHnHphu:jhu5B*CJOJQJU^JaJmHnHphu&h 435B*CJOJQJ^JaJphnprtvxz|~0Nlv}SakugdkEX <[$\$gdec0Mjktuf麨pYE&hP/5B*CJOJQJ^JaJph,hP/hP/5B*CJOJQJ^JaJph#hB*CJOJQJ^JaJph&hec5B*CJOJQJ^JaJph#hBB*CJOJQJ^JaJph#hecB*CJOJQJ^JaJph,hechB5B*CJOJQJ^JaJph/ *hhec5B*CJOJQJ^JaJph,hechec5B*CJOJQJ^JaJphuJ~ [$\$gdP/gdkEX <[$\$gdecf|~ӼvbDb&bvb&:jh2Y5B*CJOJQJU^JaJmHnHphu:jh~5B*CJOJQJU^JaJmHnHphu&h'5B*CJOJQJ^JaJph:jht_5B*CJOJQJU^JaJmHnHphu&h5B*CJOJQJ^JaJph&hP/5B*CJOJQJ^JaJph,hP/hP/>*B*CJOJQJ^JaJph,hP/h5B*CJOJQJ^JaJph)hP/hP/B*CJOJQJ^JaJph   "#$')*+-/0234589:;EΰΰΒΰΰΒΰΰΰΰ~ΰΰΰΰΰΰΰΰΰ&h2Y5B*CJOJQJ^JaJph:jh~5B*CJOJQJU^JaJmHnHphu:jh2Y5B*CJOJQJU^JaJmHnHphu&h'5B*CJOJQJ^JaJph:jht_5B*CJOJQJU^JaJmHnHphu*   !"$()+./12 #[$\$gd2Y [$\$gdP/24678:<=>?@ABCDE.8BHQ <[$\$gd' [$\$gdP/EHP}dѺygZB/ *h3h35B*CJOJQJ^JaJphh_L4h3OJQJ^J#hB*CJOJQJ^JaJph#h'B*CJOJQJ^JaJph,hP/h'5B*CJOJQJ^JaJph/ *hGh'5B*CJOJQJ^JaJph,h3h35B*CJOJQJ^JaJph/ *hGh35B*CJOJQJ^JaJph,h'h'5B*CJOJQJ^JaJphQ}@dPt & Fe<^egd_L4 e<^egd_L4h<[$\$^hgd_L4 <[$\$gd3gd_L4gdkEX [$\$gdP/ <[$\$gd'~~gS>',hGhG>*B*CJOJQJ^JaJph)hGhGB*CJOJQJ^JaJph&hG5B*CJOJQJ^JaJph,hGhG5B*CJOJQJ^JaJph#hB*CJOJQJ^JaJphh_L4hOJQJ^Jh_L4h_L4OJQJ^J,h3h_L45B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph,h3h35B*CJOJQJ^JaJph&h35B*CJOJQJ^JaJph 6:>BHNTV`dhlrv| [$\$gdGgdkEX468:<>@BDFHJLNPRV^`bdfhjlprw[wwwwwwwwI#h}B*CJOJQJ^JaJph7jh[B*CJOJQJU^JaJmHnHphu7jhcB*CJOJQJU^JaJmHnHphu#hB*CJOJQJ^JaJph7jh B*CJOJQJU^JaJmHnHphu,hGhG5B*CJOJQJ^JaJph&hG5B*CJOJQJ^JaJph&hG>*B*CJOJQJ^JaJphrtvz|~"` !&5fop Q R  ѵўtg]gtK#hv B*CJOJQJ^JaJphh}OJQJ^Jh}h}OJQJ^J#hB*CJOJQJ^JaJph/ *hp`h}5B*CJOJQJ^JaJph,h}h}5B*CJOJQJ^JaJph7jh[B*CJOJQJU^JaJmHnHphu#h}B*CJOJQJ^JaJph7jhcB*CJOJQJU^JaJmHnHphu"b"6fp gd} & Fe<^egd} e<^egd} <[$\$gd}gdkEX  2 Q R t v x z | ~      = p r t y { }      gdkEXe<[$\$^egd} r t   0 ; < = > D p ìq\>',h=Kh=K>*B*CJOJQJ^JaJph:jh#|>*B*CJOJQJU^JaJmHnHphu)h=Khv B*CJOJQJ^JaJph#h ,(B*CJOJQJ^JaJph)h=Kh=KB*CJOJQJ^JaJph&h=K5B*CJOJQJ^JaJph,h=Kh=K5B*CJOJQJ^JaJph#hv B*CJOJQJ^JaJph,hv hv 5B*CJOJQJ^JaJph&hv 5B*CJOJQJ^JaJph p q r s t v x y z { | } ~                ˯cQ#hH_B*CJOJQJ^JaJph:jhH_>*B*CJOJQJU^JaJmHnHphu7jhSB*CJOJQJU^JaJmHnHphu#hv B*CJOJQJ^JaJph7jh#|B*CJOJQJU^JaJmHnHphu,h=Kh=K5B*CJOJQJ^JaJph:jh#|5B*CJOJQJU^JaJmHnHphu         . @ V m       h[$\$^hgdH_ & F[$\$gdH_ [$\$gdH_ <[$\$gdH_gdkEX        . ? D U Z l    鷟vaO8,hH_hH_>*B*CJOJQJ^JaJph#hH_B*CJOJQJ^JaJph)hH_hH_B*CJOJQJ^JaJph,hH_hH_5B*CJOJQJ^JaJph#hv B*CJOJQJ^JaJph/ *h $hH_5B*CJOJQJ^JaJph:jhH_5B*CJOJQJU^JaJmHnHphu&hH_5B*CJOJQJ^JaJph,h $hH_5B*CJOJQJ^JaJph789Bïdddddddddddddd7jhQB*CJOJQJU^JaJmHnHphu,h%h%5B*CJOJQJ^JaJph/h%h%5>*B*CJOJQJ^JaJph&h%5B*CJOJQJ^JaJph&hH_5B*CJOJQJ^JaJph#hH_B*CJOJQJ^JaJph,hH_hH_5B*CJOJQJ^JaJph#$89 [$\$gdH_ [$\$gd% h[$\$^hgdH_ [$\$gdH_,0?C홇uaJaJa,hZ0h I5B*CJOJQJ^JaJph&h I5B*CJOJQJ^JaJph#h IB*CJOJQJ^JaJph#hH_B*CJOJQJ^JaJph7jhkB*CJOJQJU^JaJmHnHphu7jhrB*CJOJQJU^JaJmHnHphu7jhQB*CJOJQJU^JaJmHnHphu#hQB*CJOJQJ^JaJph,?^_ <[$\$gd I [$\$gd I [$\$gdH_C]^_bñt`L4L/jh05B*CJOJQJU^JaJph&h05B*CJOJQJ^JaJph&h ]5B*CJOJQJ^JaJph,h0h05B*CJOJQJ^JaJph&hQf5B*CJOJQJ^JaJph#h ]B*CJOJQJ^JaJph#hH_B*CJOJQJ^JaJph#h IB*CJOJQJ^JaJph&h I5B*CJOJQJ^JaJph,hZ0h I5B*CJOJQJ^JaJphX68"$ [$\$gd ] [$\$gdH_  "HJLNXζq]@9jxh0hr~p5B*CJEHOJQJU^JaJph'jY6,H hr~p5CJKHUV\aJ9jGh0hr~p5B*CJEHOJQJU^JaJph'j$6,H hr~p5CJKHUV\aJ&h05B*CJOJQJ^JaJph/jh05B*CJOJQJU^JaJph9jh0h05B*CJEHOJQJU^JaJph'j5,H h05CJKHUV\aJX$&(,2468F$&LNPRXZñؚnQ9/jh5B*CJOJQJU^JaJph9jhr~ph5B*CJEHOJQJU^JaJph'j7,H h5CJKHUV\aJ/jhr~p5B*CJOJQJU^JaJph,hr~phr~p>*B*CJOJQJ^JaJph#h"B*CJOJQJ^JaJph)h"h"B*CJOJQJ^JaJph&h"5B*CJOJQJ^JaJph&hr~p5B*CJOJQJ^JaJphZ0ػr^F2&h 5B*CJOJQJ^JaJph/hh5>*B*CJOJQJ^JaJph&hr~p5B*CJOJQJ^JaJph9jUh0h5B*CJEHOJQJU^JaJph'jw7,H h5CJKHUV\aJ/jh5B*CJOJQJU^JaJph9j$h0h5B*CJEHOJQJU^JaJph'jY6,H h5CJKHUV\aJ&h5B*CJOJQJ^JaJph$   &(048<@DHNPTZ` [$\$gd ]0n ج{dH6H6#h ]B*CJOJQJ^JaJph7jh&B*CJOJQJU^JaJmHnHphu,hh 5B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph9jh h 5B*CJEHOJQJU^JaJph'j8,H h 5CJKHUV\aJ/jh 5B*CJOJQJU^JaJph&h 5B*CJOJQJ^JaJph&hN5B*CJOJQJ^JaJph  $(.02468:<>@BDFHLPRTXZ^bdj?Bz|ǵ㵞rr&h&5B*CJOJQJ^JaJph/ *h@;Xh@;X5B*CJOJQJ^JaJph,h@;Xh@;X5B*CJOJQJ^JaJph#h ]B*CJOJQJ^JaJph7jh&B*CJOJQJU^JaJmHnHphu7jhwMB*CJOJQJU^JaJmHnHphu,`bfhj6Po   *Re <[$\$gd` <[$\$gd@;X [$\$gd ]  й~j~j~XP?!hkEXhkEXB*OJQJ^JphhkEXB*ph#hH_B*CJOJQJ^JaJph&h`5B*CJOJQJ^JaJph,h`h`5B*CJOJQJ^JaJph#h`B*CJOJQJ^JaJph#h ]B*CJOJQJ^JaJph,h@;Xh ]5B*CJOJQJ^JaJph,h@;Xh@;X5B*CJOJQJ^JaJph/ *h@;Xh@;X5B*CJOJQJ^JaJph$t [$\$gd ] <[$\$gd` _ !9"##&G&H&o&`rkd$$IfT  0 634abp $Ifgdw~dgdkEX^gdkEX^gdkEXgdkEXgdkEX   S T U V W ^ _ `        !!!!!R!S!!!!!!!ƸƢƸƌƸvƸ`*jhkEXhkEXB*OJQJU^Jph*j?hkEXhkEXB*OJQJU^Jph*jhkEXhkEXB*OJQJU^Jph*jǗhkEXhkEXB*OJQJU^JphhT"B*OJQJ^Jph*jhkEXhkEXB*OJQJU^Jph!hkEXhkEXB*OJQJ^Jph$h' hkEX5B*OJQJ^Jph!!!!&"'"(")"*"8"9":"""""""""""""-#.#v#w#x#y#ĶĠčĶwĶaĶK*jhkEXhkEXB*OJQJU^Jph*j/hkEXhkEXB*OJQJU^Jph*jshkEXhkEXB*OJQJU^Jph$h' hkEX5B*OJQJ^Jph*jhkEXhkEXB*OJQJU^JphhT"B*OJQJ^Jph*jhkEXhkEXB*OJQJU^Jph!hkEXhkEXB*OJQJ^Jph'hkEXhkEX5B*OJQJ\^Jphy#z####$$$$%l%%%&&F&G&H&o&p&&&&&&&&5'6'7'I'X'Y'Z'\']'(|(ٸ٥ْْفl_فl_ْفl_ْفl_hkEXhkEXOJQJ^J)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJ$h' hkEX5B*OJQJ^Jph$h' hkEX5B*OJQJ^Jphh' B*OJQJ^Jph$hkEXhkEX7B*OJQJ^Jph!hkEXhkEXB*OJQJ^Jph*jhkEXhkEXB*OJQJU^Jph%o&&&&6'|gdkEXrkd\$$IfT  0 634abp $Ifgdw~d6'7'Y']'w $Ifgdw~dgdkEXwkd$$IfX d  0634abp ]'^'((((((()**+y $Ifgdw~dgdkEXgdkEXrkd$$IfT  0 634abp |(~(((((T)f)n))))) * * *****<*A*G*W*Y*^*d*ĶĕĕĶĕĕĶĄoZoEoZo)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB*CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJ$h' hkEX5B*OJQJ^JphhaB*OJQJ^Jphh' B*OJQJ^Jph!hkEXhkEXB*OJQJ^Jph*h hkEX56B*OJQJ]^Jph'hkEXhkEX6B*OJQJ]^Jphd*t*v*{************+++,4,8,:,^,r,~,,,,,,,,,--F/ꯢ~p~~~p~]~$h%$OhkEX5B*OJQJ^Jphh%$OB*OJQJ^Jph$h%$OhkEX5B*OJQJ^Jph!hkEXhkEXB*OJQJ^JphhkEXhkEXOJQJ^J hkEXhkEXCJOJQJ^JaJ)hkEXhkEXB*CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph#++:,,./1y $Ifgdw~dgdkEXwkd{$$If !e  0}634abp F/H/J/V/Z/\/`////0*000K0M0R0n0000000001ʹ횉t_t_tJt_tJt_tJt)hkEXhkEXB*CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJ!hkEXhkEXB*OJQJ^Jphh%$OB*OJQJ^Jph!h%$Oh%$OB*OJQJ^Jph$h%$Oh%$O5B*OJQJ^Jphh%$O5B*OJQJ^Jph$h%$Oh%$O5B*OJQJ^Jph11j3)4w $Ifgdw~dgdkEXwkd0$$If$i  0634abp 111*12,23 323H3N3P3j3l3r333444(4)4*4+434=4ϼ⫖ll^K$haha5B*OJQJ^JphhaB*OJQJ^Jph)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB*CJOJQJ^JaJph3 hkEXhkEXCJOJQJ^JaJ$hvhkEX5B*OJQJ^Jph3$hvhkEX5B*OJQJ^Jph!hkEXhkEXB*OJQJ^JphhkEXhkEXOJQJ^J)4*4~4444444N666yrhra<gdbH $a$gdbHgdkEXgda<gdawkd$$If"f  0u634abp =4G4H4Q4`4f4o4}4~444444444445࿮wdTwLH8HhbH5B*OJQJ^JphhbHhbHhbH5ha5B*OJQJ^Jph$haha5B*OJQJ^Jph!hahaB*OJQJ^Jph/jh4B*OJQJU^JmHnHphuhaB*OJQJ^Jph!ha_ha_B*OJQJ^Jphha_5B*OJQJ^Jph!hOPhOPB*OJQJ^JphhOP5B*OJQJ^Jphh45B*OJQJ^Jph5 545B555M6N6U6666677 7777777ԯԜԎ{cU=/jh~dB*OJQJU^JmHnHphuh_KB*OJQJ^Jph/jhIGB*OJQJU^JmHnHphu$hIGhIG5B*OJQJ^JphhIGB*OJQJ^Jph$hbHhbH5B*OJQJ^Jph!hbHhbHB*OJQJ^Jph'hbHhbH5>*B*OJQJ^JphhbHB*OJQJ^Jph hbH6]hbHhbH5hbHhbHhbH0J5666666677777777"7#7$7%7&7'7(7)7*7+7,7-7k7m7gdkEX<gdbH7!7-7.7W7X7i7j7k7l7r7s777778ĶĕyhS>S>S)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJh B*OJQJ^Jphjh UmHnHuhkEXB*OJQJ^Jph$hChC5B*OJQJ^JphhCB*OJQJ^Jph!hkEXhkEXB*OJQJ^JphjhUmHnHuh_KB*OJQJ^Jphh~dB*OJQJ^Jphm7n7o7p7q7r7889J9wrgdkEXwkd$$If"g  0u634abp $Ifgdw~dgdkEX 8 888)8/8j888888888888888իՙ{jWjWjD4hL:5B*OJQJ^Jph3$hvhkEX5B*OJQJ^Jph3$hvhkEX5B*OJQJ^Jph!hkEXhkEXB*OJQJ^JphhkEXhkEXOJQJ^J hkEXhkEXCJOJQJ^JaJ#h)`B* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB*CJOJQJ^JaJph3)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB*CJOJQJ^JaJph8999999999$9)9I9J9K9T9U9п|gRE70 hL:hL:hL:B*OJQJ^JphhkEXhkEXOJQJ^J)hkEXhkEXB* CJOJQJ^JaJph)hkEXhkEXB*CJOJQJ^JaJph,hvhkEX5B*CJOJQJ^JaJph3,hvhkEX5B* CJOJQJ^JaJph)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJ!hkEXhkEXB*OJQJ^Jph$hvhkEX5B*OJQJ^JphhL:5OJQJ^JJ9K9f9::p$-D`IfM gdw~dgdkEXwkdO$$If c  0P634abp U9::::::f;h;;;;R<<=======> > > >>>̷̷̪̪ݗ̷̪wphYFY$h Ih I0JCJOJQJ^JaJh Ih I0JOJQJ^Jh ICJaJ h I5\h Ih I5OJQJ\^Jh7(B*phhIGB*ph$hvhkEX5B*OJQJ^JphhkEXhkEXOJQJ^J)hkEXhkEXB* CJOJQJ^JaJph hkEXhkEXCJOJQJ^JaJ!hkEXhkEXB*OJQJ^Jph!hL:hL:B*OJQJ^Jph::f;;| $Ifgdw~dgdkEXrkd$$IfT  0 634abp ;; ===u$-D`IfM gdw~dgdkEXrkd$$IfT  0 634abp =====> >{{{ $$Ifa$gdTgd7(rkdn$$IfT  0 634abp  > >>B>F>G>R>7^kd$$IfF6    34a $IfgdT`kd#$$If4F6    34a>>>&>'>4>5><>A>B>F>G>H>P>Q>R>W>f>g>t>u>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???? ? ? ? ? ?????#?$?%?.?/?0?1?2?h ICJaJh Ih Ih I0JOJQJ^J$h Ih I0JCJOJQJ^JaJh Ih IOJQJ^JNR>>>>>>>^kd$$IfF6    34a $IfgdT>>>>>>>8^kd$$IfF6    34a $IfgdT^kd$$IfF6    34a>????%?.?^kdy$$IfF6    34a $IfgdT.?/?8?[?d?e?l?8^kdg$$IfF6    34a $IfgdT^kd$$IfF6    34a2?3?4?5?6?7?A?B?H?I?M?N?Y?Z?[?d?e?i?j?k?v?w?x?y?z?~???????????????????@@@@@ŷhY.Z5B*OJQJ^Jph$hY.ZhY.Z5B*OJQJ^JphhY.ZB*OJQJ^Jphh IB*OJQJ^Jphh ICJaJh Ih Ih IOJQJ^Jh Ih I0JOJQJ^J$h Ih I0JCJOJQJ^JaJ0l?x?y?z????^kd$$IfF6    34a $IfgdT??????8^kd$$IfF6    34a $IfgdT^kdU$$IfF6    34a????8@@@AAJC5D $Ifgdq  <` gdY.Z9<^`9gdY.ZLu<^L`ugdY.Z<gdY.Zgd7( @@AABB.C0CHCJCCC D DDDD$D(D)D+D,D-D.D/D4DϾϰψssssaLaLas)h*(hmB* CJOJQJ^JaJph#hmB* CJOJQJ^JaJph)h*(h7(B*CJOJQJ^JaJph)h*(h7(B* CJOJQJ^JaJph$hmhm5B*OJQJ^JphhmB*OJQJ^Jph!h*(h7(B*OJQJ^Jph!h*(h7(B*OJQJ^JphhY.ZB*OJQJ^Jph!hY.ZhY.ZB*OJQJ^Jph4D5D6D7DADBDDDDDDDDEFFFFrGGGGGѽzzzlbXJ?XlhQ5OJQJ^JhQhQ5OJQJ^JhQOJQJ^JhY.ZOJQJ^JhQB*OJQJ^Jph$h h7(5B*OJQJ^Jph!h}/hmB*OJQJ^Jph!h}/h}/B*OJQJ^JphhmB*OJQJ^Jph'hmhm5>*B*OJQJ^Jph!h*(h7(B*OJQJ^Jphh*(h7(OJQJ^J h*(h7(CJOJQJ^JaJ5D6DADBDUDDDDFFFFGvlll  & F<gdQ <[$\$gdQgd}/gd7(rkdC$$If#  0#634abp GGNIIJJJrf <[$\$gde2,wkd$$If!  0!634abp $Ifgdq <[$\$gdQGGGGGG H.H>HHHHHHHHHI2I4I*B*OJQJ^Jphh}k;5B*OJQJ^JphhwB*OJQJ^JphhY.ZB*OJQJ^Jphh}k;B*OJQJ^Jphh|BB*OJQJ^Jphh UB*OJQJ^Jph'h Uh U5>*B*OJQJ^Jph!he2,he2,B*OJQJ^Jphhe2,B*OJQJ^JphJEJWJJJJJJJJJJJJJJJJKRMTMMM [$\$gd}k;gd7(-<$d %d &d 'd NOPQ[$\$gde2,MMMMMMMMMMMMN N N NNNNN˽ˀhWDW$h h7(5B*OJQJ^Jph!h*(h7(B*OJQJ^Jph/jhwB*OJQJU^JmHnHphuh}k;5B*OJQJ^Jph!he2,h}k;B*OJQJ^Jphjh}k;UmHnHuh}k;B*OJQJ^JphhwB*OJQJ^Jph$h}k;hw5B*OJQJ^Jphhw5B*OJQJ^Jph!hwhwB*OJQJ^JphMMMMMMMMM NNNNNNNNNNN $Ifgdqgd7( <[$\$gd}k;NNNNNNNNNNNN OPPLP^PPQ Q"Q$QpQvQQQQQ RRRꯢpppbOb$hh5B*OJQJ^JphhB*OJQJ^Jph$h h7(5B*OJQJ^JphhBB*OJQJ^Jph!h*(h7(B*OJQJ^Jphh*(h7(OJQJ^J h*(h7(CJOJQJ^JaJ)h*(h7(B*CJOJQJ^JaJph)h*(h7(B*CJOJQJ^JaJph3)h*(h7(B* CJOJQJ^JaJphNNNNP$QR| $Ifgdqgd7(rkd$$IfT  0 634abp RR,R1R2R6R;R@RrRwRRRRRRRRRRRRRķueUD!h/h/B*OJQJ^Jphh/5B*OJQJ^Jphh5B*OJQJ^JphhhB*OJQJ^Jph/jhB*OJQJU^JmHnHphuhB*OJQJ^Jphhk{B*OJQJ^Jphh*(h7(OJQJ^J h*(h7(CJOJQJ^JaJ)h*(h7(B* CJOJQJ^JaJph)h*(h7(B*CJOJQJ^JaJphRRRRRRRRRRRRRRR{{{{{{{{{{{{{ [$\$gdhwkdb$$Ifa  0,634abp RRRRRRRRRRJSKSLSMSNSOSPSQSRSSSSSSSSSSgd7(gdk{ [$\$gdhRRRRRRRRRS SSSSSS S(S)S+S0S=S>SISJSRSUSVSYSĵwdThh5B*OJQJ^Jph$hhhh5B*OJQJ^Jph$h/h/5B*OJQJ^Jphh/h/0JOJQJ^Jh/h/OJQJ^Jh/h/0JOJQJ^Jh/h/0JOJQJ^Jh5B*OJQJ^Jph2jh/5B*OJQJU^JmHnHphu!h/hB*OJQJ^JphYS^StSvSSSSSSSSSSSSSSS񯜄v^Fv8h+ B*OJQJ^Jph/jhB*OJQJU^JmHnHphu/jh+ B*OJQJU^JmHnHphuhB*OJQJ^Jph/jhhB*OJQJU^JmHnHphu$hhhh5B*OJQJ^Jph!h*(hhB*OJQJ^Jphhh5B*OJQJ^Jph$hhh5B*OJQJ^Jphhk{B*OJQJ^JphhhB*OJQJ^JphSSSSSSSSSSSSSSSSSSSSSS+TITvTTTTTxgd+ gd7(SSSSSSSJTuTTTTTU U$U%U'UUVVVVV̢̺̺̺̺̺pbO$hmhm5B*OJQJ^JphhmB*OJQJ^Jph$h h7(5B*OJQJ^Jph!h*(h7(B*OJQJ^Jphh+ B*OJQJ^Jph/jh+ B*OJQJU^JmHnHphu# *h+ h+ CJOJQJ^JaJ h+ h+ CJOJQJ^JaJh+ 5B*OJQJ^Jph$h+ h+ 5B*OJQJ^JphTTTTTU!U"U#U$U&UVVW $Ifgdqgd7(gd7(xgd+ VVVVVVVVVVVWW"WNW\WxWWWWWWWWW[\b]d]ꯢ}o^Ph B*OJQJ^Jph!h*(h7(B*OJQJ^Jphhp_B*OJQJ^Jph!hp_hp_B*OJQJ^Jph'hp_hp_5>*B*OJQJ^Jphh*(h7(OJQJ^J h*(h7(CJOJQJ^JaJ)h*(h7(B*CJOJQJ^JaJph3)h*(h7(B* CJOJQJ^JaJph)h*(h7(B*CJOJQJ^JaJphWWW[d]```|a}aXXPPP & Fgd,/$d %d &d 'd -DM NOPQgd gd7(rkd$$IfT  0 634abp d]]]]]^^@^B^^^^^^^n_p___```````````` a@aBaCaDaннннꡗ|h'jhm7h=OJQJU^Jh=h=OJQJ^Jjh=OJQJU^Jh@jOJQJ^Jh=OJQJ^J#h B*CJOJQJ^JaJph$h h7(0JCJOJQJ^JaJ2jh h7(B*CJOJQJU^JaJph)h h7(B*CJOJQJ^JaJph#Daza{a|a}adb|b~bb0c`cdddddede|eee´‚tg]S]I];h\h ^5OJQJ^JhuOJQJ^Jh"OJQJ^Jh ^OJQJ^JhkEXh@jOJQJ^Jjh ^UmHnHuh\h\OJQJ^JhEOJQJ^Jh\h\5>*OJQJ^Jh\5OJQJ^Jh\h\5OJQJ^Jh\OJQJ^Jh=h=OJQJ^Jh=OJQJ^Jjh=OJQJU^Jhm7h=0JOJQJ^J}a~aaaaaaaaaaaaa~bddddddddddddd & Fgd ^ & Fgd,ddddddddddddddddddddddddddddd & Fgd ^ddddddddeeeeeeeeeeeeeeeeeeeee & Fgd ^eeeeeeeef f.fHfLfXfZf`fbffffg g"g$gƼvl^lO<^%jhL-hL-EHOJQJU^Jj.H hL-CJUVaJjhL-OJQJU^JhL-OJQJ^J&jhB2bOJQJU^JmHnHu&jh{OJQJU^JmHnHuh{OJQJ^J&jh"OJQJU^JmHnHuh"OJQJ^Jh&65OJQJ^J)jh&65OJQJU^JmHnHuh\h ^5OJQJ^Jh ^5OJQJ^Jeeeeeeeeeeeeeeeeeeeeeeeeeeeef & Fgd ^fffff f f0f2f4f6f8f:ff@fBfDfFfHfNfPfRfTfVfXf\f^f`f & Fgd ^`fdfffhfjflfnfpfrftfvfxfzf|f~fffffffffffffff & Fgd ^ffhViXi\i^i`ibidifihijilinipiritixizi|i~iiiiiimm & Fgd ^$g,g.g6g8g@gBg\g^ggggggggghhTiViXiZitiviiii˸yeyey[MhxDhxD5OJQJ^JhxDOJQJ^J&jh:(OJQJU^JmHnHuh{OJQJ^JhL-hL-OJQJ^JhL-hL-5>*OJQJ^Jhg%hg%5OJQJ^Jhg%OJQJ^J%j+hL-hL-EHOJQJU^Jj.H hL-CJUVaJjhL-OJQJU^JhL-hL-H*OJQJ^JhL-OJQJ^JiiDjjmm(mZntnvnxnnoorotovop9p:pLpMpXppp{ppɿɡɍuk[Nh"aah"aaOJQJ^Jh"aah"aa5>*OJQJ^Jh"aaOJQJ^Jjh'vUmHnHuh'vOJQJ^Jh@jOJQJ^Jh`iOJQJ^JhFCghFCg5>*OJQJ^JhFCghFCg5OJQJ^JhFCgOJQJ^Jh{OJQJ^JhxDh{OJQJ^JhlD.OJQJ^JhxDOJQJ^JhxD5OJQJ^Jmmm m mmmmmmmmmm m"m$m&m(mxnvoppp p!p"p#p$p & Fgd ^$p%p&p'p(p)p*p+p,p-p.p/p0p1p2p3p4p5p6p7p8p9p:p;pp?p@p & Fgd ^@pApBpCpDpEpFpGpHpIpJpKpLpNpOpPpQpRpSpTpUpVpWpXpYpZp[p\p]p & Fgd ^]p^p_p`papbpcpdpepfpgphpipjpkplpmpnpoppp{ppppppq'q & Fgd"aa & Fgd ^pppprrr6s8sPsTs`sbssstuuuuuu&vRv\v͵åÊzpcYL>L>L *h h OJQJ^Jh h OJQJ^Jh OJQJ^Jhh&dOJQJ^Jh&dOJQJ^Jh&dh&d5>*OJQJ^Jhh5OJQJ^Jh5>*OJQJ^Jhh5>*OJQJ^Jh h5OJQJ^JhOJQJ^JhhOJQJ^Jh"aaOJQJ^Jh"aah"aaOJQJ^J *h"aah"aaOJQJ^J'q:qQqdq{qqqq.rrrTstuuuuuv&vTvhvvvvv  & F<gd {  & F<gd  & Fgd & Fgd"aa\vfvvvvvvvvvvvw\wwww"x.x0xFxxxxxyyy,y.y·}pbpbpRp}h]h]5>*OJQJ^J *h]h]OJQJ^Jh]h]OJQJ^Jh]5OJQJ^Jh]h]5OJQJ^Jh]OJQJ^Jh"aaOJQJ^Jh {h {OJQJ^Jh {5OJQJ^Jh {h {5OJQJ^Jh {OJQJ^Jh{1OJQJ^Jh h OJQJ^J *h h OJQJ^Jvvw w"w$w&w(w*w,w.w0w2w4w6w8w:ww@wBwDwFwHwJwLwNwPw & Fgd ^  & F<gd {PwRwTwVwXwZw\wwww"x0xHx`xxxxxxxxxx.yhyyyy  & F<gd1*  & F<gd] & Fgd ^yyyzzzBz|}}~~~~~~~~, & F<$d%d&d'dNOPQgd!b* & F$d%d&d'dNOPQgd!b & Fgd!b & Fgd ^  & F<gd1*.yzzzLzNz||,|.|0|2|:|<|b|d|f|h|l||||ŷŨŷņsi[QAh@^h@^5>*OJQJ^Jh"aaOJQJ^Jh=2h=25OJQJ^Jh=2OJQJ^J%jhuh@^EHOJQJU^Jj/H h@^CJUVaJ%j9huh@^EHOJQJU^Jj;/H h@^CJUVaJjhuOJQJU^JhuOJQJ^Jh]OJQJ^Jh1*h1*5>*OJQJ^Jh1*OJQJ^Jh1*h1*OJQJ^J|}"}}}}}}s~}~~~~~~~~~~~DEsu46wyрóђwiwiwiwiwiwiwiwiw_hSqOJQJ^J *h!bh!bOJQJ^Jh!bh!bOJQJ^Jh!bh!b5OJQJ^Jh!bOJQJ^Jh@^h"aaOJQJ^JhEf~OJQJ^Jh@^h@^5>*OJQJ^Jjh!bUmHnHuh"aaOJQJ^Jh@^h@^OJQJ^Jh@^h@^5OJQJ^Jh@^OJQJ^J!~~~~%7f'jҀրۀ"#܃ރ  & F<gd| & Fgd ^, & F<$d%d&d'dNOPQgd!bрҀ!"#)4BC6>܃ރ":†$Ὥ얈~veWeD$h3@hb0|5B*OJQJ^Jphh3@B*OJQJ^Jph!h3@hb0|B*OJQJ^Jphhb0|B*phh_DOJQJ^Jjh_DUmHnHuh|OJQJ^JhSqhSqOJQJ^JhSqhSq5>*OJQJ^Jh 5OJQJ^Jh#'5OJQJ^JhSqhSq5OJQJ^JhSq5OJQJ^JhSqOJQJ^JhTOJQJ^J    & F<gd| ":†&>N`T*0 $IfgdT & Fgdgdb0|gdb0|gdb0|  & F<gd| $&<>LN`rtԇ ~T`v~*,.02jlݹݨݗݗݗݹvrjrbrjrbrjrbhb0|CJaJhb0|B* phhb0|$hh3@5B*OJQJ^Jphh3@B*OJQJ^Jph!h3@hb0|B*OJQJ^Jph!hhb0|B*OJQJ^Jph'hhb0|5>*B*OJQJ^Jphh5B*OJQJ^Jph$h3@hb0|5B*OJQJ^Jphh3@5B*OJQJ^Jph&02j~ $IfgdTgdb0|rkd$$IfT  0 634abp | $IfgdTgdb0|rkd$$IfT  0 634abp X| $IfgdTgdb0|rkdU$$IfT  0 634abp ؋6XZňڌHLTZjnt|ԍ  FX~Ύ4HzƏǿǿǷǿǷǿǷǿϯӔӃӃǿǿǿǿǿǿǿǷ!hhb0|B*OJQJ^Jph$hh5B*OJQJ^JphhDFB*phhb0|CJaJhb0|B*phhb0|B* phhb0|B* phhb0|$hhb0|5B*OJQJ^Jph!h3@hb0|B*OJQJ^Jphhb0|B*ph3>| $IfgdTgdb0|rkd $$If#  0#634abp ƏΏ"*08HPV^nv|&*2BJNVfzđؑ*<Ē,<>@BHxJLVXZ\vxz|~8:<¯¯$hDFhb0|5B*OJQJ^Jph!hDFhb0|B*OJQJ^Jphhb0|B*phhb0|CJaJhb0|hb0|B*phhb0|B* phhb0|B* phE>@JX| $IfgdTgdb0|rkd$$If   0 634abp XZv|| $IfgdTgdb0|rkdt$$IfT  0 634abp |~:y $IfgdTgdb0|gdb0|rkd)$$IfT  0 634abp :<cw| $IfgdTgdb0|rkd$$If  0634abp <>cdvwxy͙Ιϙәԙ XhjlnRTprtv\|titXXt!h8Pmhb0|B*OJQJ^Jphhb0|6B* ]phhb0|B* phhb0|B*ph'hs<hb0|6B*OJQJ]^Jph$hs<hb0|5B*OJQJ^Jph*hs<hb0|56B*OJQJ]^Jph!hs<hb0|B*OJQJ^Jphhb0|CJaJhb0|B* phhb0|!hDFhb0|B*OJQJ^Jphhb0|B*ph"wxۘly $IfgdTgdb0|gdb0|rkd$$If  0634abp lnRrw $IfgdTgdb0|wkdH$$If c  0P634abp rt| $IfgdTgdb0|rkd$$IfT  0 634abp \^~ĝƝޝ$&^|žĞF(*-.0X\Šп{d{,h8Pmhb0|5B*CJOJQJ^JaJph)h8Pmhb0|B*CJOJQJ^JaJphhb0|B*ph'h8Pmhb0|6B*OJQJ]^Jph$h8Pmhb0|5B*OJQJ^Jph!h8Pmhb0|B*OJQJ^Jphhb0|B*phhb0|CJaJhb0|hb0|B* phhb0|B* phhb0|6B* ]ph!ž-w $IfgdTgdb0|wkd$$Ifr!d  0634abp 6y $IfgdTgdb0|gdb0|rkdg$$IfT  0 634abp  56789<ACbcde,Rp~d֤&6ƾƮʶƮʝzgzgzgzgzg$h8Pmh8Pm5B*OJQJ^Jph!h8Pmh8PmB*OJQJ^Jphh8PmB*phhQOJQJ^J!h8Pmhb0|B*OJQJ^Jphhb0|CJaJhb0|B* phhb0|B*phhb0|hb0|B*ph)h8Pmhb0|B*CJOJQJ^JaJph/h8Pmhb0|6B*CJOJQJ]^JaJph 678c| $IfgdTgdd9\rkd$$IfT  0 634abp cde,4nxsni` $IfgdTgd8Pmgd8Pmgd8Pm  & F<gd|gdb0|gdb0|rkd$$IfT  0 634abp 6H#$2458Z`mr$)QVmnoybdn{Ƹơm\NmhZB*OJQJ^Jph!hZhZB*OJQJ^Jph'hZhZ5>*B*OJQJ^Jphh8PmCJaJh8PmB*ph3h8PmB* phh8PmB*phh8Pm$hSfh}5B*OJQJ^Jphh}B*OJQJ^Jph!h8Pmh8PmB*OJQJ^Jph$h8Pmh8Pm5B*OJQJ^Jph*h8Pmh8Pm56B*OJQJ]^Jphnoyŧק`222-<$d%d&d'dNOPQ[$\$gdZ&$d%d&d'dNOPQgdZwkd$$If !e  0}634abp ק<Ncdn{ $IfgdT [$\$gdZ <[$\$gdZ-<$d%d&d'dNOPQ[$\$gdZ {|:0W_جެ3456pqwӭӑӑ~ӭh8Pm6B* ]phh8PmB* ph'h8Pmh8Pm6B*OJQJ]^Jphh8PmB*ph$hZh8Pm5B*OJQJ^Jph$hZh8Pm5B*OJQJ^Jph!h8Pmh8PmB*OJQJ^Jphh8PmCJaJh8PmB* phh8PmB*phh8Pm+~ $IfgdTgd8Pmrkd;$$IfT  0 634abp 4| $IfgdTgd8Pmrkd$$IfT  0 634abp 45pw $IfgdTgd8Pmwkd$$If#h  0634abp Nn| $IfgdTgd8PmrkdZ$$IfT  0 634abp &NPlnp֮خV,6@JZº²º²oaaaQhThT5>*OJQJ^J *hThTOJQJ^J&jhJOJQJU^JmHnHuhThTOJQJ^JhThT5OJQJ^JhTOJQJ^Jh_DOJQJ^Jh8PmCJaJh8PmB* phh8Pm!h8Pmh8PmB*OJQJ^Jph$hZh8Pm5B*OJQJ^Jph*hZh8Pm56B*OJQJ]^Jphnp֮| $IfgdTgd8Pmrkd$$IfT  0 634abp .B\dlxxxxxxxxx  & F<gdT  & F<gd|rkd$$IfT  0 634abp (.02468:<>@!+8<IQR[  & F<gdN_  & F<gd|  & F<gdT,.PR[aʲ˲(+4fϩϙϩϑxkkaxTaFh Dh.5OJQJ^Jh<h.OJQJ^Jh.OJQJ^JhWh.OJQJ^Jh.5OJQJ^JhWh.5OJQJ^Jh.B*phhN_hN_5>*OJQJ^JhN_hN_OJQJ^JhN_5OJQJ^JhN_hN_5OJQJ^JhN_OJQJ^Jh_DOJQJ^JhThTOJQJ^JhTh_D5>*OJQJ^J  & F<gdN_˲̲ٲ)*+efrͳγڳ۳gd.  & F<gdN_̳γ׳۳35;=UW`duzִ״ 1@CY\hk{}ШЍ鍚th@ h.5OJQJ^Jh.>*OJQJ^Jh*h.OJQJ^Jh*h.>*OJQJ^Jh|uh.OJQJ^JhQh.OJQJ^JhQh.5OJQJ^Jh.5OJQJ^JhWh.5OJQJ^Jh.OJQJ^Jh Dh.OJQJ^J-!45VWcduôĴִ״-C\jk}gd.@Dnp> nnU<0hThT0J5B*CJOJQJ^JaJph0hThT0J5B*CJOJQJ^JaJph$hThT5B*OJQJ^Jph!hThTB*OJQJ^JphhTB*phh.B*ph,h(Sh(S5B*CJOJQJ^JaJphh(SB*phh@ h.>*OJQJ^Jh.OJQJ^Jh@ h.OJQJ^Jh@ h.5OJQJ^Jh.5OJQJ^JBD2^h. $Ifgd5gdTgd(SgdTgd. FJdhtƹ-./09hºغ*n0ɶײvɶ׊cv׶$hThT>*B*OJQJ^Jph'hThT5>*B*OJQJ^JphhTB*phhTCJaJhTB* phhTB*phhTB* phhT$hThT5B*OJQJ^JphhTB*OJQJ^Jph!hThTB*OJQJ^Jph-hThT0JB*CJOJQJ^JaJph!./9X"}t $Ifgd5gdTgdTwkdy$$IfX d  0634abp 0<>jp", 2ƲמƉyqiaS?'hThT5>*B*OJQJ^JphhTB*OJQJ^JphhTCJaJhTB* phhTB*phhTB*ph3hTB* phhT!hThTB*OJQJ^Jph'hThT5>*B*OJQJ^Jph'hThT6B*OJQJ]^Jph!hThTB*OJQJ^Jph$hThT5B*OJQJ^Jph*hThT56B*OJQJ]^Jph3 2p {{ttoeeeee  & F<gdN_gdT<gdap <[$\$gdTwkd.$$If!f  0634abp 2ȿ`lϾjSj?5+h< |OJQJ^JhN_OJQJ^J'hThT6B*OJQJ]^Jph-hThT0JB*CJOJQJ^JaJph3-hThT0JB*CJOJQJ^JaJph$hThT5B*OJQJ^Jph*hThT56B*OJQJ]^Jph3'hThT6B*OJQJ]^Jph3!hThTB*OJQJ^Jph!haphTB*OJQJ^JphhapB*OJQJ^Jph!haphapB*OJQJ^Jph  Jd@Bn $Ifgd5Kkd$$If0 !H!634a $Ifgd5gd< |gd< |  & F<gdN_Jdf@BFHJL~pbQ!h;rh;rB*OJQJ^Jphh;rB*OJQJ^Jphh< |B*OJQJ^Jph'h<h< |5>*B*OJQJ^Jph$h$Sh< |>*B*OJQJ^Jph$h< |h< |5B*OJQJ^Jphh< |CJaJh< |h< |5OJQJ^Jjh< |Uh< |hT"jh< |U!h< |h< |B*OJQJ^Jphh< |B*ph"*4".V)Yz "<\%JOTsνh< |B* phh< |B* phh< |B*phh< |B* ph!h< |h;rB*OJQJ^Jphh;rB*OJQJ^Jph!h;rh;rB*OJQJ^Jph$h;rh;r5B*OJQJ^Jph>6CE_} ,17@CIh(*Hm 36d &/5sw 3Hq  (M^h< |B* phh< |B* phh< |B* phh< |B*phh< |B* phU^adf)hmnoqrƾƱ樂zpf^h%B*phh%OJQJ^Jh\NOJQJ^Jh\Nh\NOJQJ^Jh< |5>*OJQJ^Jh\Nh\N5>*OJQJ^Jh\N5>*OJQJ^Jjh< |B*UphhT"B*phjh< |B*Uphh< |CJaJh< |h< |B* phh< |B* phh< |B*phh< |B* phno:Pnxxxnnnnnnn  & F<gd\N  & F<gdN_gd< |wkd$$If$h  0U634abp "@^|0Nl  & F<gd\NDR,@ $Ifgd5gd%^gd%\$gd%gd%gd%gd%  & F<gd\N*~RSbctcR!j@.h%h%OJQJU^J!j(h%h%OJQJU^J!j"h%h%OJQJU^Jh%h%OJQJ^JhT"OJQJ^J!jh%h%OJQJU^Jh%h%0JOJQJ^J*jh%h%B*OJQJU^Jphh%B*ph'h%h%6B*OJQJ]^Jph!h%h%B*OJQJ^Jph \^`bd  "@ᓋxx^3h%h%0J5B*CJOJQJ\^JaJph3$h%h%5B*OJQJ^Jphh%B*ph!h%h%B*OJQJ^Jph!jt?h%h%OJQJU^J!j9h%h%OJQJU^J!j3h%h%OJQJU^JhT"OJQJ^Jh%h%OJQJ^J!jh%h%OJQJU^JP".Ht&0>@BDrʱʞݚzraJ-hV)h%0JB*CJOJQJ^JaJph!hV)h%B*OJQJ^Jphh%B*phh%CJaJh%B*ph3h%B*phh%B* phh%$h%h%5B*OJQJ^Jph30h%h%0J5B*CJOJQJ^JaJph3$h%h%5B*OJQJ^Jph!h%h%B*OJQJ^Jph!h%h%B*OJQJ^Jph3@Bdf,| $Ifgd5gd%rkd0E$$IfT ` 0 634abp V^bf*,.0f2>@پٲ{fXٲhV)B*OJQJ^Jph)h;rh%B*CJOJQJ^JaJph-h;rh%0JB*CJOJQJ^JaJphh%CJaJh%B*ph3h%B*phh%B* phh%hV)B*phh%B*ph$hV)h%5B*OJQJ^Jph!hV)h%B*OJQJ^Jph)hV)h%B*CJOJQJ^JaJph ,.0}xo $Ifgd5gd%gd%gd%wkdE$$If!_ ` 0634abp ~ $Ifgd5gd%rkdF$$IfT  0 634abp btvF&2>V`z:DLfjl028fń|h%B*phh;rB*OJQJ^Jph-h;rh%0JB*CJOJQJ^JaJphh%CJaJh%B*phh%B* phh%$h;rh%5B*OJQJ^Jph*h;rh%56B*OJQJ]^Jph!h;rh%B*OJQJ^Jph0l0| $Ifgd5gd%rkdOG$$IfT ` 0 634abp | $Ifgd5gd%rkdH$$IfT ` 0 634abp ".QRiz &IRUXZr"%4dEktwz|Bfh%B* phh%B* phh%B* phh%B*phh%B*ph$h%h%>*B*OJQJ^Jph!h;rh%B*OJQJ^Jph$h%h%5B*OJQJ^Jph?f,Bk 125;=Z2W{ h!h!5B*CJaJphh!>*B*CJaJph h!hQU>*B*CJaJphh%CJaJh%h%B* phh%B*phh%B* phh%B* phh%B* phh%B*ph84bB}vvvvvvvvvvgd!gd%gd%wkdH$$If#h  0634abp BmFp            gd5gd5gd%gd%gdENgd!$&JLbnp  , 2      ֛ֈֈֈֈzldS!h5h5B*OJQJ^Jphh5B*phh5B*OJQJ^Jphh%B*OJQJ^Jph$hENh%5B*OJQJ^Jph*hENh%56B*OJQJ]^JphhENh%0JOJQJ^J*jhENh%B*OJQJU^Jph!hENh%B*OJQJ^Jphh%B*ph hENhQU5B*CJaJph   . H P R l  d       " , Z | ~     ೞ͆͆ugTA$hUh55B*OJQJ^Jph$hUhU5B*OJQJ^JphhUB*OJQJ^Jph!h8+h5B*OJQJ^Jph.h8+h50J56B*OJQJ]^Jph)h8+h5B*CJOJQJ^JaJph3h8+h50J6B*CJOJQJ]^JaJph$h8+h55B*OJQJ^Jph!h5h5B*OJQJ^Jphh8+B*OJQJ^Jph FJuy&Q6 5Ncd789:quκ|kX$h8+h55B*OJQJ^Jph!hth9bB*OJQJ^JphhtB*OJQJ^Jphh9bB*OJQJ^Jph!hthtB*OJQJ^Jph!ht5>*B*OJQJ^Jph'htht5>*B*OJQJ^Jph!h5h5B*OJQJ^Jphh5CJaJh5B* phh5B*phh5B* ph  0G_l~wwwwwwwwww<gdtgd5hkdnI$$If$h0634ab$-DIfM gd5 .;d+89:d $Ifgd5gd5<gdtFR\,dl:B!Hٷٞٷًهwًً^هwVًh5B*ph0hv%<h50J5B*CJOJQJ^JaJphh5CJaJh5B* phh5$hv%<h55B*OJQJ^Jph0h8+h50J5B*CJOJQJ^JaJph$h8+h55B*OJQJ^Jphh5h50JOJQJ^J!h5h5B*OJQJ^Jph*jh5h5B*OJQJU^Jph!~ $Ifgd5gd5rkdJ$$IfT  0 634abp w $Ifgd5gd5wkdJ$$If!_  0634abp *, Jb-VííÚkVÚNNNh5B* ph)hv%<h5B*CJOJQJ^JaJph-hv%<h50JB*CJOJQJ^JaJphh5B*phh5CJaJh5B* phh5h5h50JOJQJ^J*jh5h5B*OJQJU^Jph!h5h5B*OJQJ^Jph0hv%<h50J5B*CJOJQJ^JaJph$hv%<h55B*OJQJ^Jph"| $Ifgd5gd5rkdnK$$IfT ` 0 634abp !"#$)/ !!`!! "."/"0"h"l"""""H#x#y#$ $%%&&2&4&V&h&p&ʱʄʄu^-h5h50JB*CJOJQJ^JaJphh5h50JOJQJ^J*jh5h5B*OJQJU^Jph,hv%<h55B*CJOJQJ^JaJph0hv%<h50J5B*CJOJQJ^JaJph!h5h5B*OJQJ^Jphh5B*phh5CJaJh5h5B* phh5B* ph$"#!/"w $Ifgd5gd5wkd#L$$If$h  0U634abp /"0"h"y#u $Ifgd5gd5wkdL$$If(#g  0634abp y#z# $Z%&'(((+/}xxxslc $IfgdgHgdfgdfgd5gd5gd5wkdM$$If$h  0x634abp p&&0(<((((((()l****++++,׵ssseR?7hfB* ph$hUhf5B*OJQJ^Jph$hUhU5B*OJQJ^JphhUB*OJQJ^Jph$hehf5B*OJQJ^Jph!hfhfB*OJQJ^JphhfB*phh9bB*phhfB*OJQJ^Jphh5B*OJQJ^Jph'hv%<h55>*B*OJQJ^Jph!h5h5B*OJQJ^Jph-h5h50JB*CJOJQJ^JaJph, ,,,,,W-c-7.8.&/0/Q/Z////////////,0S0022t333u4444P5Q5R5ɵokhf$hehf5B*OJQJ^Jph!hehfB*OJQJ^Jph!hthtB*OJQJ^Jph!he5>*B*OJQJ^Jph'htht5>*B*OJQJ^JphhfB*OJQJ^JphhfCJaJhfB* phhfB*phhfB* phhfB*ph'////00#0,02Q5yyyyyp $IfgdgH<gdtgdfwkdBN$$IfY$g  08634abp Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5gd5wkdN$$IfY$g  08634abp R5`5a5u555999<<&<8<n<<<<<8=<=p=>±|rh`O*B*OJQJ^Jph'h9bh9b5>*B*OJQJ^Jph!h9bh9bB*OJQJ^JphhfB*OJQJ^Jph$h9bh9b5B*OJQJ^Jphh8B*OJQJ^Jphh9bB*OJQJ^Jph`5a5b555556%6F6i6{6|6666666 7%7&7A7l77777 <[$\$gd9bgd578X8h8s8888889919S9i9999999:!:.:?:H:W:  & F<gd9bgd% <[$\$gd9bW:h:v:::::::::::: ;;';8;A;`;q;;;;;;;;;  & F<gd9b;<<<< <"<$<&<8<>(?*?mrkdO$$IfT ` 0 634abp $IfgdgHgd gd   & F<gd9b >>&?(?*?,???@@@@f@@ AABBBBBCC CYDZD[D\DDDDDDDDD E+E@E[EnEsEyEEӲӲӤyh=0B* phh B* phh)>B* ph$hn>hn>5B*OJQJ^Jphhn>B*OJQJ^Jph$h-h 5B*OJQJ^Jphh B*OJQJ^Jph!h h B*OJQJ^Jphh B*phh CJaJh B* phh +*??@@ AB|rkdaP$$IfT ` 0 634abp $IfgdgHgd BBCZD| $IfgdgHgd rkdQ$$IfT  0 634abp ZD[DDE| $IfgdgHgd rkdQ$$IfT ` 0 634abp EEEEEEEEEEDFFFtFFFFFFFFGG H&HͿ{jWjOjAjWhn>B*OJQJ^Jphh B*ph$hn>h 5B*OJQJ^Jph!h h B*OJQJ^Jph!hn>h)>B*OJQJ^Jph!hn>hn>B*OJQJ^Jphh)>B*OJQJ^Jph'h)>h)>5>*B*OJQJ^Jphh=0B*OJQJ^Jphh CJaJh h B* phh B* phh)>h B* phh)>h)>B* phEEEEF"FFFFF{{{{r $IfgdgHgdn>gd wkdR$$If!f  0634abp FFGH I| $IfgdgHgd rkd5S$$IfT  0 634abp &H(H.H:HHH I III2IIIIKKBLDLfLhLLZMhMxMMMMNNOOO}PPPPƾƶݛ݅݅vcccc[ƶh B*ph33$h)>h 5B*OJQJ^Jphh h 0JOJQJ^J*jh h B*OJQJU^Jph$hn>h 5B*OJQJ^Jphh B*phh CJaJh B* phh $h h >*B*OJQJ^Jph!h h B*OJQJ^Jph!hn>h B*OJQJ^Jph# IIJNO}t $IfgdgHgd gd wkdS$$Ifc  0634abp OOPUQS{r $Ifgd [$\$gdgd rkdT$$If"  0F#634abp PPPP@QNQOQTQUQYQrQQSSSSSSrVVvXXdYYͽͭrjYF$hWchU"5B*OJQJ^Jph!hU"hU"B*OJQJ^JphhU"B*ph!h4%xh4%xB*OJQJ^Jphh4%xB*OJQJ^Jphh CJaJh B*phh B* phh h4%x5B*OJQJ^JphhQ-5B*OJQJ^Jph$h)>h 5B*OJQJ^JphhB*OJQJ^Jph!h h B*OJQJ^JphSSSTT3TVTtTTTTT"U:Uvvvvvvvvvvv <[$\$gd4%xgd wkdTU$$If!f  0634abp :U]UzUUUUUV>VtVVvXXdY\~]b^^$-DIfM gdgHgdU"gdU"gdU"gd  <[$\$gd4%xYYYYYYY:ZHZXZfZZZZZ[[4[V[[[[\$\(\D\J\X\\(]]]]]F^L^b^f^^^^^b_f_{______`ɶɥɡɡhU"B* phhU"B*phhU"CJaJhU"B* phhU"!hU"hU"B*OJQJ^Jph$hWchU">*B*OJQJ^Jph!hU"hU"B*OJQJ^Jph$hWchU"5B*OJQJ^Jph$hWchU"5B*OJQJ^Jph2^^b_=a$-DIfM gdgHgdU"ckd V$$IfT0 634ab`G`k`````a aa?aJaQa]agaab8bHbbb d d d dd(d*d|ddddd e%e&e'e(ef*f,fNfPfʷʷʩʘۘrrrrr$h/hU"5B*OJQJ^Jph$h/hU"5B*OJQJ^Jph!hjhU"B*OJQJ^Jphh/B*OJQJ^Jph$hWchU"5B*OJQJ^Jph!hjhU"B*OJQJ^JphhU"B*phhU"CJaJhU"hU"B* phhU"B* ph,=a>aab dn$-DIfM gdgHgdU"wkdV$$If(#g  0634abp  d dd&en$-DIfM gdgHgdU"wkdTW$$If<b  0634abp &e'ePinjw $IfgdgHgdU"wkd X$$If$h  0U634abp Pfghi iLiPiXiiij*B*OJQJ^Jph$h&hU"5B*OJQJ^Jph$hoGhU"5B*OJQJ^JphhU"CJaJhU"B* phhU"B* phhU"hU"B*ph$hoGhU"5B*OJQJ^Jphh/B*OJQJ^Jph!hjhU"B*OJQJ^Jph(njojnon$-DIfM gdgHgdU"wkdX$$If$h  0U634abp oosun$-DIfM gdgHgdU"wkdsY$$If(#g  0634abp uu x x xyn$-DIfM gdgHgdU"wkd(Z$$If(#g  0634abp vww x x x xxyyy z zQzRzSz`zazrzxzz_|}|}C}D}E}F}N}Q}Ϳk\TTTLhU"B*phhU"B*phhjhU"0JOJQJ^J0j[hT"hT"B*OJQJU^Jph*jhjhU"B*OJQJU^JphhU"CJaJhU"B* phhU"!hjhoGB*OJQJ^JphhoGB*OJQJ^JphhU"B*OJQJ^Jph$hjhU">*B*OJQJ^Jph!hjhU"B*OJQJ^JphyyrztzD}wn $IfgdgH $IfgdgHgdU"wkdZ$$If$h  0U634abp D}E}N}|}w $IfgdgHgdU"wkdY\$$If  0634abp Q}{}|}}}}}}}}} ~~~AWg~̀؁ĂƂȂЂ҂ڂ܂Blƃxڿڿڿڱڿڿڿڿڿڿڱړh OJQJ^J'hqUhU"5B*H*OJQJ^JphhqUB*OJQJ^Jph$hqUhU"5B*OJQJ^JphhU"B*ph!hjhU"B*OJQJ^JphhU"CJaJhU"hU"B* ph7|}}}}}s$-DIfM gdgHgdU"rkd]$$If  0L634abp }}~~p$-DIfM gdgHgdU"gdU"rkd]$$If  0[634abp s$-DIfM gdgHgdU"rkdx^$$IfT  0 634abp s$-DIfM gdgHgdU"rkd-_$$IfT  0 634abp ˆĈƈȈʈ̈Έxxxxxxxxxx  & F<gd9bgdU"gdU"rkd_$$IfT  0 634abp ΈЈ҈Ԉ5GɍʍKLe]]$a$gdz_wkd`$$If$h  0U634abp $Ifgd=gdz_gdz_gdz_  & F<gd9b ԈU%GKZ‹ً6_2jȍɍbtJSeiSln zƾƦݕ݇ƾƦy݇ƶhz_B*OJQJ^Jphhz_B*OJQJ^Jph!hz_hz_B*OJQJ^Jphhz_CJaJhz_B* phhz_B* phhz_B*phhz_$hz_hz_5B*OJQJ^Jph!hz_hz_B*OJQJ^Jphhz_B*phhz_OJQJ^J/LMNOPQRSe vqlgdz_gdz_wkdLa$$If$h  0U634abp $Ifgd=$a$gdz_   z&~rkdb$$If  0634abp $Ifgd=gdz_T֢6n£У`unprjxƭȭʭ̭6\`°İŽŽŽŽŽŽۡۆxh0 %B*OJQJ^Jph$hz_hz_>*B*OJQJ^Jphhz_B*ph!hz_hz_B*OJQJ^Jphh-hz_B* phhz_B* phh-B* phhz_B*OJQJ^Jph!hz_hz_B*OJQJ^Jphhz_B*phhz_CJaJhz_,&Ɵڟcm}T $Ifgd=gdz_ & Fdd[$\$gdz_ & Fdd[$\$gdz_ & Fdd[$\$gdz_gdz_nprtvxz|~}xxsssssssssgdz_gdz_ $a$gdz@wkdb$$If##  0'$634abp ,ȭʭi_ $a$gd7wkdkc$$If[  0 634abp $Ifgd=$a$gd7$a$gd7gdz_ϰ}t $Ifgd= $a$gd7wkd d$$If[ ` 0 634abp İͰϰѰ PWñѱV02B햅q^VHh7B*OJQJ^Jphhz_B*ph$h0 %h0 %6B*OJQJ^Jph'h0 %h0 %56B*OJQJ^Jph!h0 %h0 %B*OJQJ^Jphh0 %B*OJQJ^Jph'h0 %h0 %5>*B*OJQJ^Jphh0 %B*phhz_CJaJhz_B*phhz_B* phhz_!hz_hz_B*OJQJ^Jph$h0 %h0 %5B*OJQJ^Jph  ww$a$gd0 %$a$gd7wkdd$$If!f  0634abp VȲܴ0F8^| $Ifgd=gdz_ $ & F a$gd7 $ & F a$gd7$a$gd0 %$a$gd7DF68^fz zzzz{ {,|8||||0|Ёԁܻܻܻܻܷ܍|i|ahz@B* ph$h[hz@5B*OJQJ^Jph!h[hz@B*OJQJ^Jphhz@B*phhz_CJaJUhz_B*ph3hz_B*phhz_B* phhz_h7B*OJQJ^Jph$h7hz_5B*OJQJ^Jph!hz_hz_B*OJQJ^Jph$h0 %hz_5B*OJQJ^Jph$d() except IOError: print "datoteke sort.py ne morem odpreti" elif izbira == 2: try: print open("osebe.py").read() except IOError: print "Datoteke osebe.py ne morem odpreti" elif izbira == 3: izvajaj = 0 else: print "Slabo si izbral" except NameError: print "Tvoj vnos je bil napacen"Sedaj lahko svoje programe, ki si jih doslej sestavil, ustrezno poboljaaa. Po~eni programe in namerno vtipkaj napa ne podatke. Opazuj, kaj se zgodi (kakaen izpis dobia) in primerno dopolni programe. Lahko pa pogledaa "Library Reference" in pri funkcijah oziroma modulih, ki jih uporabljaa, ugotovia, kakane izjeme spro~ajo. GUI - Grafi ni uporabniaki vmesniki - osnove Sedaj se bomo lotili razvoja grafi nega uporabniakega vmesnika, takega z gumbi, drsniki in menuji. Najprej pa moramo narediti prostor, kamor bomo hranili naae programe v Pythonu. Naredi torej nov direktorij in mu morda daj ime "PYTHON". Sestavi naslednji preprost program, tkinter_okno.py: from Tkinter import * # za sestavljanje GUI (iz Tk toolkit) okno = Tk() # Glavno okno programa(to je takoimenovani widget) onaka = Label(okno, text="Pozdravljen svet!") # widget "Label", otrok widgeta okno oznaka.pack() # tako zahtevamo prikaz widgeta okno.mainloop() # sprozimo tek programa.Shrani ta program v datoteko "tkinter _pozdrav.py" in ga po~eni. Polek klasi nega konzolnega okna (v katerem obi ajno vidia izpise stavkov "print" in druga obvestila) bi se ti moralo prikazati ae majhno okno, kot ka ka~e spodnja slika: INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/pozdravljen.gif" \* MERGEFORMAT  Datoteko "tkinter_pozdrav.py" preimenuj v "tkinter_pozdrav.pyw" ,kar pomeni, da je to program tipa "Python for Windows". e ga po~enea, ne bo ve  (sedaj odve nega in grdega) konzolnega okna temve  le grafi no. Najprej povejmo kaj o pojmu "widget". "Widgeti" so komponente grafi nih uporabniakih vmesnikov. Gumbi so "widgeti". Oznake (labels) so "widgeti". Vsako okno je widget. Widgete delamo s primernimi orodji (toolkit), v svetu Python uporabljamo kot orodje takoimenovani Tk. V Pythonu obstaja modul za povezavo s Tk, imenuje pa se Tkinter. Zato smo najprej v prvi vrstici uvozili widgete iz modula Tkinter. Vsak widget je v modulu Tkinter predstavljen z ustreznim razredom. Tvorimo ga zato kakor druge objekte. Prvi widget, ki smo ga naredili, je osnovno okno programa. Naredimo ga tako: okno = Tk()Tako osnovno okno (root window) potrebuje vsak grafi ni uporabniaki vmesnik. V naaem primeru smo vanj hoteli zapisati obvestilo "Pozdravljen svet!". V ta namen smo uporabili widget "Label", po naae tekstovno oznako: oznaka = Label(okno, text="Pozdravljen svet!") Prvi argument konstruktorja je ime "o eta" tega widgeta. Povedati moramo namre , kam umestiti widget. To pa storimo tako, da povemo, kdo je "o e" tega widgeta. V naaem primeru smo hoteli oznako umestiti v glavno okno. Naslednji argument konstruktorja vsebuje besedilo, ki ga ~elimo prikazati. Isto asno uvaja nov na in klicanja funkcij: Namesto, da posredujemo argumente po polo~aju, omogo a Python posredovanje argumentov po imenu. Sledita konkretna primera obeh na inov: def deljenje(stevec,imenovalec): return stevec/imenovalec rezultat = deljenje(10,2) istiRezultat = deljenje(stevec=10,imenovalec=2)Python tudi omogo a definiranje privzetih (default) vrednosti za argumente. Zato lahko kli emo funkcije, ne da bi definirali vse parametre. Tako kot na primer: def stevilkaTelefona(drzava="+386",mesto,stevilka): return "(" + drzava + ") " + mesto + stevilka print stevilkaTelefona(mesto="01", stevilka="5556666") print stevilkaTelefona(drzava="+39", mesto="040", stevilka="2223333") V Tk je ogromno stvari, ki jih lahko dolo imo pri vsakem widgetu (velikost, barva polo~aj, smer, besedilo, povratne funkcije (callbacks), itd) in za ve ino nas niti ne zanimajo njihove vrednosti. Uporabljamo kar privzete (default) vrednosti. Tako so gumbi, okna in druge komponente pogosto kar sive barve. Zato smo v naaem primeru klicali konstruktor "Label ( )" le z enim imenovanim parametrom (text), saj nas zanima le to. V za etku, ko jih naredimo, so widgeti nevidni. Zato moramo uporabiti naslednjo vrstico: oznaka.pack()Metoda "pack" pove widgetu, da naj se pove a in pojavi. Pakiranje widgeta pomeni, da skuaa biti im manjai, vendar dovolj velik, da je njegova vsebina vidna. Tako ugotovi widget "oznaka", kako velik je tekst "Pozdravljen svet!" in svojo velikost postavi temu primerno. In zatem pove ae Tk-ju, da ~eli biti viden. V tem hipu je "oznaka" ae vedno nevidna, saj je njen o e ("okno") neviden. "okno" postane vidno aele, ko kli emo metodo "mainloop". To je funkcija, ki bo obravnavala izvajanje programa. Ve  o tem pa v naslednjem poglavju. GUI - izvajanje as je, da naredimo naslednji pou en program ek, katerega izgled prikazuje spodnja slika, tkinker_sestevanje.py: INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/vsota2.gif" \* MERGEFORMAT  Program omogo a uporabniku seatevanje dveh atevil. Tu je njegova zanimiva koda: from Tkinter import * def sestejVrednosti(): s.set(str(int(a.get()) + int(b.get()))) okno = Tk() okno.title("Program za sestevanje") a = Entry(okno) a.pack() plus = Label(okno, text="+") plus.pack() b = Entry(okno) b.pack() racunaj = Button(okno, text="Sestej", command=sestejVrednosti) racunaj.pack() s=StringVar() c=Label(okno,textvariable=s) c.pack() okno.mainloop()Morda droben nasvet: Shrani to kodo v datoteko "vsota2,py" in jo preskusi. Ko si zadovoljen (ko ni ve  potrebe po popravljanju morebitnih napak) preimenuj datoteko v  HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\PRIMERI\\vsota2.pyw" vsota2.pyw) from Tkinter import * def sestejVrednosti(): s.set(str(int(a.get()) + int(b.get()))) okno = Tk() okno.title("Program za sestevanje") a = Entry(okno) a.pack() plus = Label(okno, text="+") plus.pack() b=Entry(okno) b.pack() racunaj = Button(okno, text="Sestej", command=sestejVrednosti) racunaj.pack() s=StringVar() c=Label(okno,textvariable=s) c.pack() okno.mainloop() In sedaj komentar programa: za ne se s stavkom "import". Za trenutek ignorirajmo funkcijo "sestejVrednosti()", ki se ji bomo posvetili kasneje. Tudi naslednja vrstica, ki tvori osnovno (korensko, root) okno, nam je znana iz prejanjega primera. Se spomnia, da je v prejanem primeru kot naslov okna pisalo kar "th"? Ta napis lahko preprosto zamenjamo z uporabo okenske metode "title": okno.title("Program za sestevanje")V naaem primeru je okno premajhno, da bi ta naslov videl v celoti. e pa okno raztegnea, ga vidia. Uvajamo nov widget z imenom "Entry". Ta widget omogo a uporabniku vnos niza v majhen pravokotnik na zaslonu. V naaem primeru imamo dve taki komponenti: INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/vsota2Entry.gif" \* MERGEFORMAT  V sploanem imamo lahko takih komponent ae ve , Tako kot pri widgetu "Label" moramo tudi tu kot prvi parameter konstruktorja navesti, kdo je o e (oziroma vsebovalnik) te komponente. Za druge parametre konstruktorja nam ni mar: a = Entry(okno) a.pack() .......... b = Entry(okno) b.pack() Widgeta "label" nam ni potrebno pojasnjevati. Iz slike pa je razvidno, da vrstni red tvorbe teh komponent vpliva na to, kako so razporejene v naaem oknu, Sledi widget "Button" (po naae gumb). Gumbi so udovita stvar, saj dajejo uporabniku ob utek mo i: nanje lahko kliknea in nato se kaj zgodi. racunaj = Button(okno, text="Sestej", command=sestejVrednosti) racunaj.pack() Kot obi ajno, je pove parameter konstruktorja, kdo je o e (oziroma vsebovalnik) komponente. Sledita pa ae dva parametra, ki povesta, kakaen tekst naj piae na gumbu in kakana akcija (command) naj se izvede ob kliku na gumb. V parametru "command" zato navedemo kot argument ime funkcije. Spomnimo se, da smo pojasnili prav te funkcije za asno presko ili. Opazimo ae, da sami funkcije "sestejVrednosti" nikdar ne kli emo! Za to skrbi kar sam program oziroma to je tisto, kar se dogaja v metodi "mainloop".Grafi ne uporabniake vmesnike tipi no programiramo tako, da sami direktno ne kli emo funkcij, pa  pa uporabnik nekaj naredi (klik na gumb, vnos podatkov, premik miake ipd), modul "Tk" pa namesto nas poskrbi za klic ustrezne funkcije. Naslednja oznaka (Label) v naaem programu je nekaj posebnega. Tu naj bi namre  prialo do izpisa rezultata seatevanja: s=StringVar() c=Label(okno,textvariable=s) c.pack() Zato, namesto da dolo imo stati en tekst, tvorimo spremenljivko, ki je objekt iz razreda "StringVar". Oznako (v naaem primeru "c") tvorimo s to spremenljivko kot "textvariable". e se kasneje vsebina "textvariable" spremeni, se spremeni tekst oznake. To vsebino pa spreminja funkcija "sestejVrednosti". Oglejmo si sedaj funkcijo "sestejVrednosti". V njej spreminjamo vrednost spremenljivke "s" (ki je objekt!!) z metodo "set". Ta metoda ima kot edini argument novo vrednost niza. Sicer pa seatevanje v funkciji "sestejVrednosti" poteka tako: def sestejVrednosti(): s.set(str(int(a.get()) + int(b.get())))Najprej vzemimo to, kar smo vtipkali v obeh vhodnih okencih (widgetih "a" in "b"). Na teh objektih "Entry" zato uporabimo metodo "get". Metoda "get" objekta "Entry" vrne niz, torej tekst. Uporabiti moramo zato vgrajeno (built-in) funkcijo "int", ki pretvori ta niz v celoatevil no spremenljivko (integer). Pozor: ta metoda lahko povzro i izjemo (exception)!! Hmm,... Izvedemo obi ajno operacijo seatevanja. Z vgrajeno funkcijo "str" pretvorimo atevilo v niz, kar potrebuje ~e omenjena metoda "set" razreda StringVar.. In to je to! Ta preprosti in pou ni primer je dobro izhodia e za pripravo bolj zapletenih programov. Morda si ogledaa in preskusia ae naslednje primere: Preprost urejevalnik besedil ( HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\PRIMERI\\textEditor.pyw" texteditor.pyw) `e en primer urejevalnika ( HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\PRIMERI\\textEditor2.pyw" textEditor2.pyw), uporablja menu Primer adresarja ( HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\PRIMERI\\addressBook.pyw" addressBook.pyw) Datiteka: tkinter_addressbook.py from Tkinter import * class AddressBook: def show(self): self.name.set(self.people[self.position]['name']) self.phone.set(self.people[self.position]['phone']) def first(self): self.position=0 self.show() def last(self): self.position=len(self.people)-1 self.show() def quit(self): self.window.quit() def __init__(self): self.window = Tk() self.window.title('Address Book') nameframe = Frame(self.window) nameframe.pack(side=TOP) nameLabel = Label(nameframe, text="Name:") nameLabel.pack(side=LEFT) self.name=StringVar(); self.nameBox = Entry(nameframe, textvariable=self.name) self.nameBox.pack(side=RIGHT) phoneframe = Frame(self.window) phoneframe.pack(side=TOP) phoneLabel = Label(phoneframe, text="Phone:") phoneLabel.pack(side=LEFT) self.phone=StringVar(); self.phoneBox = Entry(phoneframe, textvariable=self.phone) self.phoneBox.pack(side=RIGHT) bframe = Frame(self.window) bframe.pack(side=BOTTOM) firstButton = Button(bframe, text="First", command=self.first) firstButton.pack(side=LEFT) prevButton = Button(bframe, text="Previous") prevButton.pack(side=LEFT) nextButton = Button(bframe, text="Next") nextButton.pack(side=LEFT) lastButton = Button(bframe, text="Last", command=self.last) lastButton.pack(side=LEFT) quitButton = Button(bframe, text="Quit", command=self.quit) quitButton.pack(side=RIGHT) self.people=[{'name':'Joan','phone':'123'}, {'name':'John','phone':'456'}, {'name':'Jean','phone':'789'},{'name':'janez','phone':'345'},{'name':'Ancka','phone':'545'}] self.position=0 self.show() def run(self): self.window.mainloop() AddressBook().run() Rezultat:  ??? ne dela previous in next Datoteka: tkinter: bind1.py. # File: bind1.py from Tkinter import * koren = Tk() # koren (root) graficne aplikacije def narediNekaj(dogodek): print "Kliknil si na", dogodek.x, dogodek.y okno = Frame(koren, width=100, height=100) okno.bind("<Button-1>", narediNekaj) okno.pack() koren.mainloop() Rezultat:  Datoteka: tkinter_texteditor1.py. from Tkinter import * from tkFileDialog import * def openfile(): name = askopenfilename() daFile = open(name,'r') text = daFile.read() editor.delete(1.0,END) editor.insert(END,text) def savefile(): filename = asksaveasfilename() aFile = open(filename,'w') text = editor.get(1.0,END) aFile.write(text) main = Tk() bframe = Frame(main) b1 = Button(bframe,text='Open',command=openfile) b2 = Button(bframe,text='Save As...',command=savefile) editor = Text(main) bframe.pack(side=TOP) b1.pack(side=LEFT) b2.pack(side=RIGHT) editor.pack(side=BOTTOM) main.mainloop() Rezultat:  Datoteka: tkinter_textedotor.py from Tkinter import * from tkFileDialog import * class TextEditor: def new(self): self.editor.delete(1.0,END) self.filename='' self.filemenu.entryconfig(2,state=DISABLED) self.window.title('Editor: New File') def open(self): self.filename = askopenfilename() if self.filename: daFile = open(self.filename,'r') text = daFile.read() self.editor.delete(1.0,END) self.editor.insert(END,text) self.filemenu.entryconfig(2,state=NORMAL) self.window.title('Editor: '+self.filename) def saveas(self): self.filename = asksaveasfilename() if self.filename: aFile = open(self.filename,'w') text = self.editor.get(1.0,END) aFile.write(text) self.filemenu.entryconfig(2,state=NORMAL) self.window.title('Editor: '+self.filename) def save(self): if self.filename: aFile = open(self.filename,'w') text = self.editor.get(1.0,END) aFile.write(text) else: self.saveas() def __init__(self): self.window = Tk() self.menubar = Menu() self.filemenu = Menu(tearoff=0) self.filemenu.add_command(label='New',command=self.new) self.filemenu.add_command(label='Open...',command=self.open) self.filemenu.add_command(label='Save',command=self.save,state=DISABLED) self.filemenu.add_command(label='Save As...',command=self.saveas) self.filemenu.add_separator() self.filemenu.add_command(label='Quit',command=self.window.quit) self.menubar.add(CASCADE,label='File',menu=self.filemenu) self.window.config(menu=self.menubar) self.ys=Scrollbar(self.window,orient=VERTICAL) self.editor = Text(self.window,yscrollcommand=self.ys.set,width=80,height=25) self.ys.config(command=self.editor.yview) self.editor.pack(side=LEFT) self.ys.pack(side=RIGHT,fill='y') self.window.title('Editor: New File') self.filename='' def go(self): self.window.mainloop() theproggie = TextEditor() theproggie.go() Reaitev:  Dogodki as je, da se poglobimo v filozofijo programiranja grafi nih uporabniakih vmesnikov.Pri istem tekstovno usmerjenem programiranju bo prialo do interakcije z uporabnikom, ko povemo programu, da naj aka na vnos s strani uporabnika. (tako smo na primer klicali funkcijo "raw_input()". V svetu GUI pa le naredimo vmesnik, ki nato aka na akcije uporabnika. In tu pridejo do izraza dogodki. Tvorba programov tipa GUI poteka v dveh korakih. Najprej naredimo grafi ni uporabniaki vmesnik (Graphical User Interface, krajae GUI) z uporabo najbolj primernih widgetov. Nato povemo programu (v primeru Pythona je to Tk), da naj vstopi v dogodkovno zanko, ki aka nastope dogodkov, te pa nato primerno obdela oziroma izvede ustrezno akcijo. Dogodki nastopajo, ko uporabnik kaj naredi, na primer klikne na gumb miake ali tipko tipkovnice. Da bi lahko prialo do odziva na dogodek, moramo povezati akcijo z dogodkom. Tkinter nudi u inkovit mehanizem za delo z dogodki. Za vsak widget lahko pove~emo (bind) Pythonove funkcije oziroma metode z dogodki na naslednji na in: widget.bind(dogodek, funkcija) e se dejanski dogodek ujema z dogodkom, navedenim v povezavi, kli e program funkcijo, kot argument funkcije pa podamo dogodek (ki je v bistvu poseben objekt z dolo enimi lastnostmi oziroma lani). Tu je primer, ko "lovimo" klike na okno: # File: bind1.py from Tkinter import * koren = Tk() # koren (root) grafi ne aplikacije def narediNekaj(dogodek): print "Kliknil si na", dogodek.x, dogodek.y okno = Frame(koren, width=100, height=100) okno.bind("<Button-1>", narediNekaj) frame.pack() koren.mainloop() V tem primeru smo uporabili okensko metodo "bind" za navezavo na odzivno (callback) funkcijo "narediNekaj" na dogodek tipa <Button-1>. INCLUDEPICTURE "../PYTHON/TUTORIALS/PYTHON/bind1.gif" \* MERGEFORMAT Po~eni program in ga preskusi.. Pojavi se okno. Kadarkoli kliknea z levim miajim gumbom na okno, se v konzolnem oknu izpiae nekaj takega: Kliknil si na 45 65 Program se nahaja v " HYPERLINK "file:///E:\\PYTHON\\TUTORIALS\\PYTHON\\PRIMERI\\bind1.pyw" bind1.pyw" . # File: bind1.py from Tkinter import * koren = Tk() # koren (root) graficne aplikacije def narediNekaj(dogodek): print "Kliknil si na", dogodek.x, dogodek.y okno = Frame(koren, width=100, height=100) okno.bind("<Button-1>", narediNekaj) okno.pack() koren.mainloop() DODATKI Python Naloge in reaitve Osnove programiranja 1. Write a program that asks two people for their names; stores the names in variables called name1 and name2; says hello to both of them. R: # A program for greeting people name1 = raw_input ("What is the first name? ") name2 = raw_input ("What is the second name? ") print "Hello, " + name1+ " and " + name2 + "! How are you?" 2. Write a script that asks a user for a number. The script adds 3 to that number. Then multiplies the result by 2, subtracts 4, subtracts twice the original number, adds 3, then prints the result. R: # Magically guessing a number number = input ("Please, type in a number: ") newresult = ((number + 3) * 2) - 4 finalresult = newresult - (2 * number) + 3 print "The result is", finalresult 3. Write a script that asks a user for a number. The script adds 3 to that number. Then multiplies the result by 2, subtracts 4, subtracts twice the original number, adds 3, then prints the result. R: # Magically guessing a number number = input ("Please, type in a number: ") number2 = number + 3 number2 = number2 * 2 number2 = number2 - 4 number2 = number2 - (2 * number) number2 = number2 + 3 print "The result is", number2 4. Write a script that asks a user for a number. The script adds 3 to that number. Then multiplies the result by 2, subtracts 4, subtracts twice the original number, adds 3, then prints the result. R: # Magically guessing a number number = input ("Please, type in a number: ") print "The result is", print ((number + 3) * 2) - 4 - (2 * number) + 3 Operatorji in stavek if 5. In analogy to the example, write a script that asks users for the temperature in F and prints the temperature in C. (Conversion: Celsius = (F - 32) * 5/9 ) R: # This program converts temperature from T to C F_temp = input ("Enter a temperature value in F ") C_temp = (F_temp - 32) * 5.0/9.0 print "Temperature:", F_temp, "F = ", C_temp, " C" 6. Write a python script that prints the following figure \ | / @ @ * \"""/ R: #!/usr/bin/env python # # This program prints a funny face print """ \t\\ | / \t @ @ \t * \t \\\"\"\"/ """ 7. Write a program that asks users for their favourite color. Create the following output (assuming "red" is the chosen color). Use "+" and "*". red red red red red red red red red red red red red red red red red red red red red red red red r1: #!/usr/bin/env python # # Favorite color color = raw_input ("Enter your favorite color ") color1 = (color + " ") * 10 color2 = color + (" " * 8) + color print color1 print color2 print color2 print color1 r2: 2. Version (This version will print a rectangle) #!/usr/bin/env python # # Favorite color color = raw_input ("Enter your favorite color ") color1 = (color + " ") * 10 white_space = " " * len(color) color2 = (color + " ") + ((white_space + " ") * 8) + color print color1 print color2 print color2 print color1 8. Modify the program so that it answers "That is great!" if the answer was "yes", "That is disappointing" if the answer was "no" and "That is not an answer to my question." otherwise. Use "if ... elif ... else ...". r: #!/usr/bin/env python # if statement answer = raw_input("Do you like Python? ") if answer == "yes": print "That is great!" elif answer == "no": print "That is disappointing!" else: print "That is not an answer to my question." Logi ni izrazi in objekti 9. Modify the program from above so that it asks users to "guess the lucky number". If the correct number is guessed the program stops, otherwise it continues forever. R: #!/usr/bin/env python # # guess the lucky number number = input("Guess the lucky number ") while number != 5: print "That is not the lucky number" number = input("Guess the lucky number ") 10. Modify the program so that it asks users whether they want to guess again each time. Use two variables, number for the number and answer for the answer to the question whether they want to continue guessing. The program stops if the user guesses the correct number or answers "no". (In other words, the program continues as long as a user has not answered "no" and has not guessed the correct number.) R: #!/usr/bin/env python # # while statement with 2 variables that can terminate the loop number = -1 again = "yes" while number != 5 and again != "no": number = input("Guess the lucky number: ") if number != 5: print "That is not the lucky number" again = raw_input("Would you like to guess again? ") 11. A counter: Write a program that asks five times to guess the lucky number. Use a while loop and a counter, such as ... The program asks for five guesses (no matter whether the correct number was guessed or not). If the correct number is guessed, the program outputs "Good guess!", otherwise it outputs "Try again!". After the fifth guess it stops and prints "Game over." R: #!/usr/bin/env python # # while statement with counter counter = 1 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" counter = counter +1 else: print "Game over" 12. break: In the previous example, insert "break" after the "Good guess!" print statement. "break" will terminate the while loop so that users do not have to continue guessing after they found the number. If the user does not guess the number at all print "Sorry but that was not very successful" (use "else" for this). #!/usr/bin/env python # # while statement with counter and break counter = 1 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" break counter = counter +1 else: print "Sorry but that was not very successful" 13. Counting hits: Modify the program again. This time the program continues even after the correct number was guessed but it counts how often the correct number was guessed. You'll need two counters: one for the while loop and another one for the number of correct guesses. After the while loop is finished, use an if statement to print either "You guessed the number ... times" or "The number was not guessed at all". R: #!/usr/bin/env python # # counting hits counter = 1 hits = 0 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" hits = hits + 1 counter = counter +1 if hits > 0: print "You guessed the number", hits, "times" else: print "The number was not guessed at all" 14. Modify the counter program from above using a for loop so that it asks the user for five guesses and then stops. Use "break" to terminate the for loop as soon as the correct number is guessed. R: #!/usr/bin/env python # # for statement # for counter in range(5): number = input("Guess the " + str(counter + 1) + ". number ") if number != 5: print "Try again." else: print "Good guess!" break 15. Optional exercise: print all multiples of 13 that are smaller than 100. Use the range function in the following manner: range(start, end, step) where "start" is the starting value of the counter, "end" is the end value and "step" is the amount by which the counter is increased each time. R: #!/usr/bin/env python # # multiples of 13 for counter in range(13,100,13): print counter Na rtovanje programa in krmilne strukture 16. Modify the program from above so that it asks users to "guess the lucky number". If the correct number is guessed the program stops, otherwise it continues forever. R: #!/usr/bin/env python # # guess the lucky number number = input("Guess the lucky number ") while number != 5: print "That is not the lucky number" number = input("Guess the lucky number ") 17. Modify the program so that it asks users whether they want to guess again each time. Use two variables, number for the number and answer for the answer to the question whether they want to continue guessing. The program stops if the user guesses the correct number or answers "no". (In other words, the program continues as long as a user has not answered "no" and has not guessed the correct number.) R: #!/usr/bin/env python # # while statement with 2 variables that can terminate the loop number = -1 again = "yes" while number != 5 and again != "no": number = input("Guess the lucky number: ") if number != 5: print "That is not the lucky number" again = raw_input("Would you like to guess again? ") 18. A counter: Write a program that asks five times to guess the lucky number. Use a while loop and a counter, such as ...The program asks for five guesses (no matter whether the correct number was guessed or not). If the correct number is guessed, the program outputs "Good guess!", otherwise it outputs "Try again!". After the fifth guess it stops and prints "Game over." R: #!/usr/bin/env python # # while statement with counter counter = 1 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" counter = counter +1 else: print "Game over" 20. break: In the previous example, insert "break" after the "Good guess!" print statement. "break" will terminate the while loop so that users do not have to continue guessing after they found the number. If the user does not guess the number at all print "Sorry but that was not very successful" (use "else" for this). R: #!/usr/bin/env python # # while statement with counter and break counter = 1 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" break counter = counter +1 else: print "Sorry but that was not very successful" 21. Counting hits: Modify the program again. This time the program continues even after the correct number was guessed but it counts how often the correct number was guessed. You'll need two counters: one for the while loop and another one for the number of correct guesses. After the while loop is finished, use an if statement to print either "You guessed the number ... times" or "The number was not guessed at all". R: #!/usr/bin/env python # # counting hits counter = 1 hits = 0 while counter <= 5: number = input("Guess the " + str(counter) + ". number ") if number != 5: print "Try again." else: print "Good guess!" hits = hits + 1 counter = counter +1 if hits > 0: print "You guessed the number", hits, "times" else: print "The number was not guessed at all" 21. Modify the counter program from above using a for loop so that it asks the user for five guesses and then stops. Use "break" to terminate the for loop as soon as the correct number is guessed. R: #!/usr/bin/env python # # for statement # for counter in range(5): number = input("Guess the " + str(counter + 1) + ". number ") if number != 5: print "Try again." else: print "Good guess!" break 22. Optional exercise: print all multiples of 13 that are smaller than 100. Use the range function in the following manner: range(start, end, step) where "start" is the starting value of the counter, "end" is the end value and "step" is the amount by which the counter is increased each time. #!/usr/bin/env python # # multiples of 13 for counter in range(13,100,13): print counter Seznami, slovarji, delo z datotekami 23. Create a list that contains the names of 5 students of this class. (Do not ask for input to do that, simply create the list.) Print the list. Ask the user to input one more name and append it to the list. Print the list. Ask a user to input a number. Print the name that has that number as index. Add "John Smith" and "Mary Miller to the beginning of the list (by using "+"). Print the list. #!/usr/bin/env python students = ["Paul Miller", "Kathy Jones", "Susan Smith", "John Doe", "James Black"] print "The following students are in the class:", students new_student = raw_input("Type the name of another student: ") students.append(new_student) print "The following students are in the class:", students number = input("Enter a number: ") print "The student number", number + 1, "is", students[number] students = ["John Smith", "Mary Miller"] + students print "The following students are in the class:", students 23. Continue with the script from 1.1): Print the list. Remove the last name from the list. Print the list. Ask a user to type a name. Check whether that name is in the list: if it is then delete it from the list. Otherwise add it at the end. Create a copy of the list in reverse order. Print the original list and the reverse list. #!/usr/bin/env python students = ["Paul Miller", "Kathy Jones", "Susan Smith", "John Doe", "James Black"] print "The following students are in the class:", students del students[-1] print "The following students are in the class:", students another_student = raw_input("Enter the name of a student to be added/deleted: ") if another_student in students: students.remove(another_student) else: students.append(another_student) print "The following students are in the class:", students more_students = students[:] more_students.reverse() print students print more_students 24. Use the list of student names from exercise 2.1): Create a for loop that prints for each student "hello student_name, how are you?" where student_name is replaced by the name of the student. #!/usr/bin/env python # students = ["Paul Miller", "Kathy Jones", "Susan Smith", "John Doe", "James Black"] for student in students: print "Hello", student + ", how are you?" 25. Optional: Use the list of student names from the previous exercise. Create a for loop that asks the user for every name whether they would like to keep the name or delete it. Delete the names which the user no longer wants. Hint: you cannot go through a list using a for loop and delete elements from the same list simulatenously because in that way the for loop will not reach all elements. You can either use a second copy of the list for the loop condition or you can use a second empty list to which you append the elements that the user does not want to delete. #!/usr/bin/env python # # first version students = ["Paul Miller", "Kathy Jones", "Susan Smith", "John Doe", "James Black"] new_students = students[:] for student in new_students: print "Do you want to keep student", student, "?" answer = raw_input ("yes/no ") if answer != "yes": students.remove(student) print students 26. Optional: Use the list of student names from the previous exercise. Create a for loop that asks the user for every name whether they would like to keep the name or delete it. Delete the names which the user no longer wants. Hint: you cannot go through a list using a for loop and delete elements from the same list simulatenously because in that way the for loop will not reach all elements. You can either use a second copy of the list for the loop condition or you can use a second empty list to which you append the elements that the user does not want to delete. #!/usr/bin/env python # # second version students = ["Paul Miller", "Kathy Jones", "Susan Smith", "John Doe", "James Black"] new_students = [] for student in students: print "Do you want to keep student", student, "?" answer = raw_input ("yes/no ") if answer == "yes": new_students.append(student) students = new_students print students 27. Modify the program so that the lines are printed in reverse order. #!/usr/bin/env python # # Program to read and print a file # file = open("alice.txt","r") text = file.readlines() file.close() text.reverse() for line in text: print line, print 28. Output to another file instead of the screen. First, let your script overwrite the output file, then change the script so that it appends the output to an existing file. file = open("alice.txt","r") text = file.readlines() file.close() file2 = open ("output.txt", "w") file2.writelines(text) file2.close file2 = open ("append.txt", "a") file2.writelines(text) file2.close 29. Modify the program so that each line is printed with a line number at the beginning. #!/usr/bin/env python # # Program to read and print a file # file = open("alice.txt","r") text = file.readlines() file.close() counter = 1 for line in text: print counter, line, counter = counter +1 print 30. Create a second dictionary (such as "age") and print its values as well. #!/usr/bin/env python # # a dictionary relatives ={"Lisa" : "daughter", "Bart" : "son", "Marge" : "mother", "Homer" : "father", "Santa" : "dog"} age ={"Lisa" : 8, "Bart" : 10, "Marge" : 35, "Homer" : 40, "Santa" : 2} for member in relatives.keys(): print member, "is a", relatives[member], "and is", age[member], \ "years old" CGI-1 31. Add a checkbox to the form (such as "Do you want milk? Yes/No") and a text area where customers can type in what kind of cake they would like to order. Change your cgi script so that it includes these in its reply, such as "you requested tea with milk", "sorry we are out of chocolate cake". The checkbox and text area must have distinct names in the form. You need a line with form.getvalue() in your cgi file for each name in your html form. #!/usr/bin/env python # ######### don't change the following three lines: ########### import cgi print "Content-Type: text/html\n" form = cgi.FieldStorage() ## add a form.getvalue for each of the names in your form: ## drink = form.getvalue("drink") milk = form.getvalue("milk") cake = form.getvalue("cake") ########## start of HTML code ########### print """ <html> <head> <title>What would you like to drink</title> </head> <body> <h4>Your drink: </h4><p> """ ############ end of HTML code ############# if drink == "tea": print "You requested tea" elif drink == "coffee": print "You requested coffee" elif drink == "hot chocolate": print "You requested hot chocolate" else: print "You need to select a drink!" if milk == "yes": print " with milk.<br>" else: print ".<br>" if cake: print "Sorry, we are out of", cake+ "." ########### start of HTML code ########### print """ <p>Thank you for your visit. Please come again. <p> </body></html> """ ############# end of HTML code ############## 32. Write an HTML file that does not contain a form but contains three links that send URLs with attached parameters "tea", "coffee", "hot chocolate" to the cgi file. <html> <head> <title>File that connects to a CGI program</title> </head> <body> <h3>What would you like to drink?</h3> <a href="http://shakti.lib.indiana.edu/~upriss/cgi/example1?drink=tea"> Tea</a> <br> <a href="http://shakti.lib.indiana.edu/~upriss/cgi/example1?drink=coffee"> Coffee</a> <br> <a href="http://shakti.lib.indiana.edu/~upriss/cgi/example1?drink=hot+chocolate"> Hot Chocolate</a> </body> Regularni izrazi 33. Retrieve all lines from alice.txt that do not contain "the ". Note: if you express "not" by using not keyword.search (line) then the line with print result.group(), ":", line, will produce an error message. (Because there is no result, therefore Python gets confused when you try to print it.) Therefore for this exercise you must use the first example that was given on the webpage. All other exercises can be done using the second example. R: #!/usr/bin/env python import re # open a file file = open("alice.txt","r") text = file.readlines() file.close() # searching the file content line by line: keyword = re.compile(r"the ") for line in text: if not keyword.search (line): print line, 34. Retrieve all lines that contain "the" with lower or upper case letters. #!/usr/bin/env python import re # open a file file = open("alice.txt","r") text = file.readlines() file.close() # searching the file content line by line: keyword = re.compile(r"the ", re.I) for line in text: result = keyword.search (line) if result: print result.group(), ":", line, 35. Retrieve lines that have two consecutive o's. #!/usr/bin/env python import re # open a file file = open("alice.txt","r") text = file.readlines() file.close() # searching the file content line by line: keyword = re.compile(r"oo") for line in text: result = keyword.search (line) if result: print result.group(), ":", line, 36. 2.2 Retrieve lines that contain a three letter string consisting of "s", then any character, then "e", such as "she". keyword = re.compile(r"s.e") --- 2.3 Retrieve lines with a three letter word that starts with s and ends with e. keyword = re.compile(r"\bs\we\b") --- 2.4 Retrieve lines that contain a word of any length that starts with s and ends with e. Modify this so that the word has at least four characters. Any length: keyword = re.compile(r"\bs\w*e\b") At least four characters: keyword = re.compile(r"\bs\w\w+e\b") --- 2.5 Retrieve lines that start with a. Retrieve lines that start with a and end with n. Start with a: keyword = re.compile(r"^a") Start with a and end with n: keyword = re.compile(r"^a.*n$") --- 2.6 Retrieve blank lines. Think of at least two ways of doing this. keyword = re.compile(r"^$") The second method uses "not" and thus cannot use the result.group() statement: # searching the file content line by line: keyword = re.compile(r".") for line in text: if not keyword.search(line): print line, --- 2.7 Retrieve lines that do not contain the blank space character. # searching the file content line by line: keyword = re.compile(r" ") for line in text: if not keyword.search(line): print line, --- 2.8 Retrieve lines that contain more than one blank space character. keyword = re.compile(r" .* ") --- 3 Add a few lines with numbers etc. to the end of the alice.txt file so that you can search for the following regular expressions: 3.1 an odd digit followed by an even digit (eg. 12 or 74) keyword = re.compile(r"[13579][02468]") --- 3.2 a letter followed by a non-letter followed by a number keyword = re.compile(r"[A-Za-z][^A-Za-z]\d") --- 3.3 a word that starts with an upper case letter keyword = re.compile(r"\b[A-Z]\w*\b") 37. the word "yes" in any combination of upper and lower cases letters keyword = re.compile(r"\byes\b", re.I) or keyword = re.compile(r"\b[Yy][Ee][Ss]\b") --- 3.5 one or more times the word "the" keyword = re.compile(r"(the )+") --- 3.6 a date in the form of one or two digits, a dot, one or two digits, a dot, two digits keyword = re.compile(r"\d\d?\.\d\d?\.\d\d") --- 3.7 a punctuation mark keyword = re.compile(r"[\.,\?\!:;]") 38. Write a script that asks users for their name, address and phone number. Test each input for accuracy, for example, there should be no letters in a phone number. A phone number should have a certain length. An address should have a certain format, etc. Ask the user to repeat the input in case your script identfies it as incorrect. #!/usr/bin/env python import re # the forbidden characters for names are: # characters that are not letters, spaces or . name_check = re.compile(r"[^A-Za-z\s\.]") name = raw_input ("Please, enter your name: ") while name_check.search(name): print "Please enter your name correctly!" name = raw_input ("Please, enter your name: ") # the forbidden characters for addresses are: # characters that are not word characters, spaces, "," or "." address_check = re.compile(r"[^\w\s\.,]") address = raw_input ("Please, enter your address: ") while address_check.search(address): print "Please enter your address correctly!" address = raw_input ("Please, enter your address: ") # the forbidden characters for phone numbers are: # characters that are not numbers, parentheses, spaces or hyphen phone_check = re.compile(r"[^0-9\s\-\(\)]") phone = raw_input ("Please, enter your phone: ") while phone_check.search(phone): print "Please enter your phone correctly!" phone = raw_input ("Please, enter your phone: ") 39. Write a regular expression that finds html tags in a file and prints them. #!/usr/bin/env python import re # open a file file = open("file.html","r") text = file.readlines() file.close() # searching the file content line by line: keyword = re.compile(r"<.+?>") for line in text: result = keyword.search (line) if result: print result.group(), ":", line, 40. Continue with the previous exercise but print the type of every html tag your script finds, such as html, body, title, a, br. #!/usr/bin/env python import re # open a file file = open("file.html","r") text = file.readlines() file.close() # searching the file content line by line: keyword = re.compile(r"<(.+?)>") for line in text: result = keyword.search (line) if result: print result.group(1), ":", line, 40. Optional: Print all lines in the alice.txt file so that the first and the last character in each line are switched. #!/usr/bin/env python import re # open a file file = open("alice.txt","r") text = file.readlines() file.close() # compiling the regular expression: keyword = re.compile(r"(.)(.*)(.)") for line in text: result = keyword.search (line) if result: print result.group(3) + result.group(2) + result.group(1) 41. Print all lines in the alice.txt file that contain two double characters. #!/usr/bin/env python import re # open a file file = open("alice.txt","r") text = file.readlines() file.close() # compiling the regular expression: keyword = re.compile(r"(.)\1(.*)(.)\3") for line in text: result = keyword.search (line) if result: print result.group() 41. Delete all words with more than 3 characters. # compiling the regular expression: keyword = re.compile(r"\b\w\w\w\w+\b") # searching the file content line by line: for line in text: print keyword.sub ("",line),     Naloge v Pythonu PAGE  stran  PAGE 141 od  NUMPAGES 159 Beri a, b Izpisi a, b start Izpis a, b start Vnesi a, b Vnesi + ali - Izbira = + Napacna izbira da ne Izbira = - Izpis a-b da ne Izpis a+b start Vnesi at If at >9 Izpiai at. prev. Izpiai dobro izbral Izpis tvoje atevilo je at da ne `t ! 9 `tevilo avtom. popravljeno stop Izpiai C c! B c! A A>B Beri A, B start da ne Izpiai x X ! 0 Stop C > B C ! C +1 Izpiai A*C C ! 1 Beri A, B START X ! X+1 X < 10 START Stop start Rezultat v Pyton-u: x= 1 x= 2 x= 3 x= 4 x= 5 x= 6 x= 7 x= 8 x= 9 Izpiae: Si opravil? Opravljeno = ne Vnesi opravljeno:da, ni opravljeno: ne If opravljeno da in ne Izpis da ali ne Dokler ni opravljeno stop da Rezultat: Koliko vrednoti mora izracunati? Vnesi stevilo: 5 izpis r: 1 izpis r: 1 izpis r: 2 izpis r: 3 izpis r: 5 start Vnaaaj z velikimi crkami NE toliko casa dokler ne prekinea z DA SI OPRAVIL? Vnesi DA ali NE Vnos je: NE SI OPRAVIL? Vnesi DA ali NE Vnos je: NE SI OPRAVIL? Vnesi DA ali NE Vnos je: DA R ! 1 P ! 1 I=I+1 Beri k (`t. Vrednosti) P = R - P R = R + P I = K DA NE IZPIS R STOP Pyton: print "Vnesi x:" x=input() print x print "Vnesi y:" y=input() print y st=1 while st<=y: print "X:",x st=st+1 Rezultat: Vnesi x: 4 Vnesi y: 3 X: 4 X: 4 X: 4 Pyton print "stevilo x mora biti manjse od y" print "vnesi x:" x=input() print x print "vnesi y:" y=input() print y y=y-1 while x<y: print "izpisi y:",y y=y-1 Rezultat: stevilo x mora biti manjse od y vnesi x: 3 vnesi y: 6 izpisi y: 5 izpisi y: 4 Pyton: print "Zamenaj vrednosti in ju izpiai!" print "vpisi x!" x=input() print "vpis x:",x print "vpisi y" y=input() print "vpis y:",y pm=x #pm pomozna stevilka x=y y=pm print "sedaj je x:",x print "sedaj je y:",y rezultat: Rezultat: >>> Zamenaj vrednosti in ju izpiai! vpisi x! vpis x: 1 vpisi y vpis y: 5 sedaj je x: 5 sedaj je y: 1 a=["kruh","mleko","sir", 0] index=0 while index < len(a): print "Kupiti moras:", a[index] index=index+1 print "To je vse!" Rezultat: Kupiti moras: kruh Kupiti moras: mleko Kupiti moras: sir Kupiti moras: 0 To je vse! print "vnesi x:" x=input() print "x=", x print "vnesi y:" y=input() print "y=", y if x>y: pm=x #pm je pomozno stevilo x=y y=pm else: print "nadaljuj!" y=y-1 while x<y: print "izpis y=",y y=y-1 print "izpisane se vse vmesne stevilke!" Rezultat: vnesi x: x= 5 vnesi y: y= 3 izpis y= 4 izpisane se vse vmesne stevilke! vnesi x: x= 3 vnesi y: y= 5 nadaljuj! izpis y= 4 izpisane se vse vmesne stevilke! start beri a,b a > b Izpis ve ji je a Izpis ve ji je b ne da Primerjava_a_b.py a=input("1.at.: ") print "a=",a b=input("2.at: ") print "b=",b if a>b: print "vecji je a: ",a else: print "vecji je b: ",b print "konec" Rezultat: a= 5 b= 8 vecji je b: 8 konec start Beri: a = Postevanka stevila, i = 1 i = i+1 i<=10 Izpis: a*i ne a=input ("Poatevanka atevila: ") print"Postevanka stevila:",a i=1 while (i<=10): print i*a, i=i+1 print "konec" Rezultat: Postevanka stevila: 5 5 10 15 20 25 30 35 40 45 50 konec Beri: stranice a, b, c start start Beri: C(ceno v sit)in T(te aj v EUR) A ! C/T Izpiai A stop print "Izracun cene izdelka v evrih!" c=input("vnos cene izdelka v SIT") print"cena izdelka v SIT:", c t=input("vnos menjaliskega tecaja ") print"menjalniski tecaj:", t #decimalno stevilo vnesi s piko a=c/t print "Cena v evrih je:", a rezultat: >>> Izracun cene izdelka v evrih! cena izdelka v SIT: 300 menjalniski tecaj: 239.6 Cena v evrih je: 1.25208681135 start Beri: C(ceno beljenja za m2), D (dolzina sobe), S (sirina sobe) in V (visina sobe) A=(2*D*V+2*S*V+S*D)*C Izpis cena (beljenja protora) stop Rezultat: >>> Izracun cene beljenja za podani prostor! cena beljenja na kvadratni meter je: 1000 dolzina prostora je: 5.7 metrov sirina prostora je: 4.6 metrov visina prostora je: 2.5 metrov cena beljenja je: 77720.0 start Beri stranice: a, b, c o ! a+b+c s ! o/2 p !  EMBED Equation.3  Rv ! p/s Ro! a*b*c/4/p Va ! 2*p/a Vb ! 2*p/b Vc ! 2*p/c Kot a ! 2*arctan (Rv/(s-a))*180/pi Kot a ! 2*arctan (Rv/(s-c))*180/pi Kot a ! 2*arctan (Rv/(s-b))*180/pi Izpis: ploa ina trikotnika (p), obseg trikotnika (o), polmer v rtanega kroga (Rv), polmer o rtanega kroga (Ro), kot alfa meri (kot A), kot beta meri (kot B), kot gama meri (kot C), viaina na stranico a (Va), Viaina na stranico b (Vb), viaina na stranico c (Vc) stop Komentar: Program ne preveri smiselnosti vnesenih dol~in stranic, tako da lahko pride do napa nega rezultata ali celo do poskusa izra una izraza, ki ga ne moremo izra unati (na primer do deljenja z ni lo ali pa do korenjenja negativnega atevila). Poia ite vhodne podatke, pri katerih pride do omenjenih napak. Kako prepre iti take napake, se bomo nau ili v nadaljevanju. Rezultat: program razreai trikotnik z dol~inami stranic v cm! a, b, c - dolzine stranic Vnos podatkov! Vnos stranice a: 5 Vnos stranice b: 6 Vnos stranice c: 8 ploscina trikotnika: 10.3923048454 obseg trikotnika: 19 polmer vcrtanega kroga: 1.15470053838 polmer ocrtanega kroga: 5.7735026919 kot alfa meri: 32.204227504 stopinj kot beta meri: 42.1034488707 stopinj kot gama meri: 98.2132107017 stopinj visina na stranico a meri: 4.15692193817 visina na stranico b meri: 3.46410161514 visina na stranico c meri: 2.59807621135 start Beri stevilo a If a%2=0 stevilo a je delitelj st. 2 stevilo a ni delitelj st. 2 If a%3=0 stevilo a je delitelj st. 3 stevilo a ni delitelj st. 3 If a%5=0 stevilo a ni delitelj st. 5 stop stevilo a je delitelj st. 5 da da da ne ne ne A%X= ostanek od delitelja X start Izpis: je znak If znak>'a' and znak <'z' or znak>'A' and znak <'Z' Izpis: ni znak Vnesi znak stop da da print "Ali je prebrani znak crka?" print "Vnesi znak!" a=raw_input("vnesi znak:") print "vnesel si:", a if (a>='a') and (a<='z') or (a>='A') and (a<='Z'): print "znak je crka",a else: print "znak ni crka, temvec stevilo",a rezultat: >>> Ali je prebrani znak crka? Vnesi znak! vnesel si: a znak je crka a Ali je pebrani znak crka? Vnesi znak! vnesel si: 3 znak ni crka, temvec stevilo 3 start Vnos ploa ine kroga if ploa ina >=0 Krog s ploa ino ne obstaja! Polmer !  EMBED Equation.3  Polmer kroga s ploa ino je: start print "Iz ploacine kroga izracunaj polmer!" print "vnesi ploscino kroga!" p=input("Ploscina kroga:") print "Ploscina kroga je:",p if p>=0: import math r = math.sqrt(p/math.pi) print "Polmer kroga s ploscino", p, "je", r else: print "Krog s ploscino", p, "ne obstaja." Rezultat: Iz ploacine kroga izracunaj polmer! da ne start Vpisi stevilo: s if s<0 Vnesena stevka je negativna Vnesena stevka je ena stevka if s<10 if ostanek od s/10 = ostanku kvocienta (s/10)/10 Zadnji stevki sta enaki Zadnji stevki nista enaki da ne ne da da ne start print "Ugotovi ali sta zadnji stevki prebranega stevila enaki!" print "vnesi stevilo!" s=input("vneseno stevilo:") print "vneseno stevilo je:",s if s<0: print "Vneseno stevilo je negativno." elif s<10: print "Vneseno stevilo ima le eno stevko!" elif s%10==(s/10)%10: print "Zadnji stevki stevila", s, "sta enaki." else: print "Zadnji stevki stevila", s, "nista enaki." start Rezultat: vnesi stevilo! vneseno steviloje: 1 Vneseno stevilo ima le eno stevko! Ugotovi ali sta zadnji stevki prebranega stevila enaki! vnesi stevilo! vneseno stevilo je: -8 Vneseno stevilo je negativno. Ugotovi ali sta zadnji stevki prebranega stevila enaki! vnesi stevilo! vneseno stevilo je: 12 Zadnji stevki stevila 12 nista enaki. Ugotovi ali sta zadnji stevki prebranega stevila enaki! vnesi stevilo! vneseno stevilo je: 23455 Zadnji stevki stevila 23455 sta enaki. Beri atevila: a, b, c if a < b d ! a a ! b b ! d if a < c d ! a a ! c c ! d if a < c d ! b b ! c c ! d Izpis stevil po velikosti so: a, b, c stop da da da ne ne print "Uredi 3 stevila po velikosti!" a=input("Vnesi a:") print "Stevilo a:", a b=input("Vnesi b:") print "Stevilo b:", b c=input("Vnesi c:") print "Stevilo c:", c if a<b: d=a; a=b; b=d if a<c: d=a; a=c; c=d # ce so spremenljivke v isti vrsti so locena s podpicjem if b<c: d=b # lahko so spremenljivke v vrsticah b=c c=d print "Stevila urejena po velikosti so:", a,"," ,b, ",",c Rezultat: Uredi 3 stevila po velikosti! Stevilo a: 2 Stevilo b: 7 Stevilo c: 4 Stevila urejena po velikosti so: 7, 4 , 2 Uredi 3 stevila po velikosti! Stevilo a: 8 Stevilo b: 4 Stevilo c: 6 Stevila urejena po velikosti so: 8 , 6 , 4 Uredi 3 stevila po velikosti! Stevilo a: 5 Stevilo b: 3 Stevilo c: 9 Stevila urejena po velikosti so: 9 , 5 , 3 import math i=4 x=36 while i<=5: if i>math.sqrt(x): i=i-1 else: i=i+1 x=math.pow(math.sqrt(x)-1,2) print x, i rezultat: x: 16.0 i: 6 import math x=25 y=math.pow(math.sqrt(x)-1,2) print y rezultat: 16.0 If (a>0) in (b>0) in (c>0) in (c<a+b) in (c>abs(a-b)) Izpis:trikotnik z gornjimi podatki obstaja Izpis:trikotnik z gornjimi podatki ne obstaja stop da ne print "Obstoj trikotnika z danimi stranicami" a=input("vnesi stranico a:") print "stranica a:",a b=input("vnesi stranico b:") print "stranica b:",b c=input("vnesi stranico c:") print "stranica c:",c if (a>0) and (b>0) and (c>0) and (c<a+b) and (c>abs(a-b)): print "Trikotnik s temi podatki obstaja." else: print "Trikotnik s temi podatki ne obstaja." Rezultat: Obstoj trikotnika z danimi stranicami stranica a: 4 stranica b: 9 stranica c: 16 Trikotnik s temi podatki ne obstaja. Obstoj trikotnika z danimi stranicami stranica a: 3 stranica b: 7 stranica c: 5 Trikotnik s temi podatki obstaja. start Beri: veliko rko - velika If (velika) < 'A' or (velika > 'Z' da To ni velika rka ne mala = chr(ord('a')+ord(velika)-ord('A')) To je velika rka - velika stop print "veliko crko pretvori v malo" velika=raw_input("Vnos crke:") print "vnesena crka:", velika if (velika<'A') or (velika>'Z'): print velika,": to ni velika crka temvec mala" else: mala = chr(ord('a')+ord(velika)-ord('A')) print "Velika crka:", velika, "je sedaj mala crka:", mala rezultat: veliko crko pretvori v malo vnesena crka: a a : to ni velika crka temvec mala veliko crko pretvori v malo vnesena crka: E Velika crka: E je sedaj mala crka: e veliko crko pretvori v malo print "Malo crko pretvori v veliko" mala=raw_input("Vnos crke:") print "vnesena crka:", mala if (mala<'a') or (mala>'z'): print mala,": to ni mala crka temvec velika" else: velika = chr(ord('A')+ord(mala)-ord('a')) print "Mala crka:", mala, "je sedaj velika crka:", velika Reaitev: Malo crko pretvori v veliko vnesena crka: V V : to ni mala crka temvec velika Malo crko pretvori v veliko vnesena crka: t Mala crka: t je sedaj velika crka: T start Vnos: atevila  x, delitelja A in B If (A=0) or (B=0) Izpis: Deljenja z 0 ne znam narediti da i < = b If i = liho at. i ! a Izpis lihega atevila - i print "Ugotovi ali je dano stevilo deljivo z izbranima deliteljema." x=input("vnesi stevilo:") print "vneseno stevilo je:", x A=input("Vnesi 1. delitelj:") print "1.-A delitelj je:", A B=input("Vnesi 2. delitelj:") print "2.-B delitelj je:", B if (A==0) or (B==0): print "deljenje z 0 ne znam narediti!" else: deliA=x%A==0 deliB=x%B==0 if deliA or deliB: print "stevilo", x, "je deljivo vsaj z enim od stevil", A,"in",B else: print "stevilo", x, "ni deljivo z nobenim od stevil", A,"in",B if deliA and deliB: print "Stevilo", x, "je deljivo s steviloma", A, "in",B else: print "Stevilo", x, "ni deljivo z obema steviloma", A, "in",B Rezultat: Ugotovi ali je dano stevilo deljivo z izbranima deliteljema. vneseno stevilo je: 17 1.-A delitelj je: 3 2.-B delitelj je: 2 stevilo 17 ni deljivo z nobenim od stevil 3 in 2 Stevilo 17 ni deljivo z obema steviloma 3 in 2 Ugotovi ali je dano stevilo deljivo z izbranima deliteljema. vneseno stevilo je: 12 1.-A delitelj je: 6 2.-B delitelj je: 5 stevilo 12 je deljivo vsaj z enim od stevil 6 in 5 Stevilo 12 ni deljivo z obema steviloma 6 in 5 Ugotovi ali je dano stevilo deljivo z izbranima deliteljema. vneseno stevilo je: 30 1.-A delitelj je: 5 2.-B delitelj je: 10 stevilo 30 je deljivo vsaj z enim od stevil 5 in 10 Stevilo 30 je deljivo s steviloma 5 in 10 start Vnesi interval: Spodnja meja  a Zgornja meja - b i ! i+1 if deliA = ( ostanek (x/A) =0)or delitB = (ostanek (x/B) =0) Izpis: `t. x je deljivo z vsaj enim od atevil A in B Izpis: `t. x ni deljivo z nobenim od atevil A in B If deliA and delitB Izpis: `t. x je deljivo z ateviloma A in B Izpis: `t. x ni deljivo z obema ateviloma A in B ne start Vnesi: spodnjo mejo:a zgornjo mejo: b Vrstica ! 10 k ! 3 j ! 0 i ! a if ostanek a/k=0 i ! i+k Izpis i if i=0 j! ostanek od (j+1)/vrstica if j=0 Izpis j i<=b da da ne a! a+1 i ! i+k da ne ne ne Izpis j stop start Za etna vrednost: a koliko ! 10 deli ! 3 nedeli ! 7 j !0 i ! a+1 If ostanek: i/deli = 0 and ostanek: i/nedeli<>0 Izpis atevil: i j! j+1 i! i+1 j < koliko stop ne da da ne start x ! 1 s ! 0 v ! 0 vnos: x x  prebrano atevilo s  atevilo prebranih atevil v  vsota prebranih atevil p  povpre je prebranih atevil v ! v+x s ! s+1 X<>0 ne da s ! s-1 if s = 0 izpis: vneseno ni bilo nobeno atevilo da ne p ! v/s izpis: povpre je prebranih s at. je: stop start izpis: vsote atevk vsota = 0 b = 10 tekoci = absolutno stevilo (  stevilo  ) tekoci<>0 vsota = vsota + (tekoci % b) tekoci = tekoci /b ne da vnos: atevila vnos: stevilo start stevilo !  stevilo  stevka ! stevilo % 10 stevilo ! stevilo / 10 stevilo <> 0 izpis: stevka stop ne da Rezultat: Obrni stevilo! vnesi stevilo. vneseno stevilo: 2454789 Obrnjeno stevilo: 9 8 7 4 5 4 2 print "Preveri, ce je stevilo palindrom." print "Vnesi stevilo." stevilo=input("Vnos stevila:") kopija=abs(stevilo) #kopija stevila obrni=0 #obrnjeno stevilo while kopija > 0: enice=kopija % 10 obrni=obrni*10+enice kopija=kopija / 10 if abs(stevilo)==obrni: print "Stevilo",stevilo,"je palindrom" else: print "Stevilo",stevilo,"ni palindrom" start vpis: stevilo kopija !  stevilo  obrni ! 0 enice ! ostanek od kvocienta (kopija / 10) obrni ! obrni * 10 + enice kopija ! kopija / 10 kopija > 0  stevilo  = obrni `tevilo je palindrom `tevilo ni palindrom ne da da ne stop start Vnos tocke: x print "Program izpise cela stevila med a in b" print "Vnesi a." a=input("a=") print "a=",a print "Vnesi b." b=input("b=") print "b=",b for x in range(a,b): # ta zanka izpise cela stevila med a do b print x+1,",", x=to ka v kateri ra unamo vrednost vs = delna vsota clen = teko i len vrste N= njegova atevilka vs ! delna vsota clen ! x n ! 1 vs ! vs + clen n ! n+ 1 clen ! clen * x / n vs + clen <> vs izpis delne vsote - vs stop ne da Rezultat: Vnesi a. a= -4 Vnesi b. b= 3 -3 , -2 , -1 , 0 , 1 , 2 , 3 , print "Program izpise cela stevila med a in b" print "Vnesi a." a=input("a=") print "a=",a print "Vnesi b." b=input("b=") print "b=",b for x in range(a,b): # ta zanka izpise cela stevila med a do b print x,",", x=x+1 Rezultat: Program izpise cela stevila med a in b Vnesi a. a= -4 Vnesi b. b= 3 -4 , -3 , -2 , -1 , 0 , 1 , 2 , print "Izbiras lahko med majhnim, srednjim in velikim kozarcem." izbira = ['majhen','srednji','velik'] for velikost in izbira: print "Ali zelis", velikost, "kozarec vode?" print "Odgovori z da ali ne" odgovor = raw_input("izbira: majhen, srednji ali velik") if odgovor!='da': print "NE" elif odgovor=='da': print "DA" break else: print "Tudi prav! Ne dam ti nic!" velikost="prazen" print "Izbral si", velikost, "kozarec vode." Rezultat: >>> Ali zelis majhen kozarec vode? Odgovori z da ali ne NE Ali zelis srednji kozarec vode? Odgovori z da ali ne NE Ali zelis velik kozarec vode? Odgovori z da ali ne DA Izbral si velik kozarec vode. >>> Rezultat: Izbiras lahko med majhnim, srednjim in velikim kozarcem. Ali zelis majhen kozarec vode? Odgovori z da ali ne NE Ali zelis srednji kozarec vode? Odgovori z da ali ne NE Ali zelis velik kozarec vode? Odgovori z da ali ne NE Tudi prav! Ne dam ti nic! Izbral si prazen kozarec vode. >>> Ali zelis srednji kozarec vode? Ali zelis velik kozarec vode? Tudi prav! Ne dam ti nic! Izbral si prazen kozarec vode. >>> Ali zelis majhen kozarec vode? Ali zelis srednji kozarec vode? Ali zelis velik kozarec vode? Izbral si velik kozarec vode. print "Program izracuna vsoto korenov prvih 20 naravnih atevil." vsota=0 for x in range(21): #Pazi, 1-ih 20 nar.st. je 21-1 =20 import math vsota = vsota + math.sqrt(x) x=x+1 print "Vsota prvih 20 stevil je:",vsota ALI print "Program izracuna vsoto korenov prvih 20 naravnih atevil." vsota=0 for x in range(1,21,1): #Pazi, 1-ih 20 nar.st. je 21-1 =20 import math vsota = vsota + math.sqrt(x) print "Vsota prvih 20 stevil je:",vsota Rezultat: Program izracuna vsoto korenov prvih 20 naravnih atevil. >>> Vsota prvih 20 stevil je: 61.6659778114 print "Program izracuna vsoto korenov naravnih atevil med a in b s korakom c." print "Vnesi spodnjo mejo a." a=input("a:") print "a:",a print "Vnesi zgornjo mejo b." b=input("b:") print "b:",b print "Vnesi korak c." c=input("c:") print "c:",c vsota=0 for x in range(a,b,c): import math vsota = vsota + math.sqrt(x) print "Vsota korenov N stevil je:",vsota Rezultat: Program izracuna vsoto korenov naravnih atevil med a in b s korakom c. Vnesi spodnjo mejo a. a: 1 Vnesi zgornjo mejo b. b: 2 Vnesi korak c. c: 1 Vsota korenov N stevil je: 1.0 Reaitev: 1.0 0.0 2.0 0.69314718056 3.0 1.09861228867 4.0 1.38629436112 5.0 1.60943791243 6.0 1.79175946923 7.0 1.94591014906 8.0 2.07944154168 9.0 2.19722457734 x = 1.0 import math while x < 10.0: print x, '\t', math.log(x) x = x + 1.0  prefixes = "JKLMNOPQ" suffix = "ack" for letter in prefixes: print letter + suffix,",", Reaitev: Jack , Kack , Lack , Mack , Nack , Oack , Pack , Qack , fruit = "banana" for char in fruit: print char, Reaitev: >>> b a n a n a print "Izpis angleske abecede." izpis=0 abeceda=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] for znak in abeceda: print znak, izpis=izpis+1 if izpis%5==0: print "" Reaitev: >>> Izpis angleske abecede. a b c d e f g h i j k l m n o p q r s t u v w x y print "Izpis vrstice in enako stevilo znakov '*', kot je stevilo vrstic." znak='*' print "Vnos stevilo vrstic." n=input("St. vrstic:") print "Stevilo vrstic:",n for i in range(1,n+1,1): print i, for j in range(1,i+1,1): print '*', print "" #zacne novo vrstico Reaitev: Izpis vrstice in enako stevilo znakov '*', kot je stevilo vrstic. Vnos stevilo vrstic. Stevilo vrstic: 5 1 * 2 * * 3 * * * 4 * * * * 5 * * * * * Reaitev: >>> Program poisce resitve enacbe. Nalogo resi stevilo, 0 Nalogo resi stevilo, 1 Nalogo resi stevilo, 8448 print "Program poisce resitve enacbe." for a in range(0,10,1): #stevila med 0 in 10 s korakom 1 (123456789) for b in range(0,10,1): for c in range(0,10,1): leva=a*1000+b*110+c import math desna = math.pow(a,4)+math.pow(b,4)+math.pow(c,4) if leva==desna: print "Nalogo resi stevilo,",leva print "Izracun prvih clenov posplosenega Fibonaccijevega zaporedja." print "Vnos 1. clena fn." fn=input("1.fn:") print "1.fn:",fn print "Vnos 2. clena fn1." fn1=input("2.fn1:") print "2.fn1:",fn1 print "Koliko clenov zaporedja naj izracunam?" k=input("ST. clenov:") print "Stevilo clenov:",k for i in range(3,k+1,1): fn2=fn+fn1 kvo1=fn2*1. /fn1 #stevec pomnozimo z decimalnim stevilom, da je rezultat dec. kvo2=fn1*1. /fn2 print i,". clen je:",fn2,", kvocienta pa sta:",kvo1,",",kvo2 fn=fn1 fn1=fn2 print "program razdeli ucence danega razreda v skupine glede na visino." s50=0 #zacetne vrednosti s60=0 s70=0 s80=0 s90=0 print "Vnesi stevilo ucencev v razredu" n=input("St. ucencev v razredu") print "stevilo ucencev v razredu:",n for i in range(1,n+1,1): #od 1 do n v koraku 1 print "vstavi visino",i,"ucenca" v=input() print "visina ucenca:",v if v<150: s50=s50+1 elif v<160: s60=s60+1 elif v<170: s70=s70+1 elif v<180: s80=s80+1 else: s90=s90+1 print "Stevilo ucencev, manjsih od 150 cm je:",s50 print "Stevilo ucencev, visokih od 150 do 160 cm je:",s60 print "Stevilo ucencev, visokih od 160 do 170 cm je:",s70 print "Stevilo ucencev, visokih od 170 do 180 cm je:",s80 print "Stevilo ucencev, vecjih od 180 cm je:",s90 ne da stop Izpis: vsota a =< x <= b vsota = vsota +  EMBED Equation.3  x = x + c vsota ! 0 x ! 0 Vnos: spodnja meja  a, zgornja meja  b, korak -c start Reaitev: 2 4 6 8 10 12 Reaitev: 1 2 3 4 5 6 2 4 6 8 10 12 3 6 9 12 15 18 4 8 12 16 20 24 5 10 15 20 25 30 6 12 18 24 30 36 fruit="banana" index = 0 while index < len(fruit): letter = fruit[index] print letter index = index + 1 Reaitev: >>> b a n a n a fruit="banana" for char in fruit: print char Reaitev: >>> b a n a n a Reaitev: famine pestilence death start Vnos: atevila  x, delitelja A in B If (A=0) or (B=0) ne da deliA!x%A==0 deliB!x%B==0 Izpis: Deljenja z 0 ne znam narediti if deliA or deliB da ne Izpis: `t. x ni deljivo z nobenim od atevil A in B Izpis: `t. x je deljivo z vsaj enim od atevil A in B If deliA and delitB Izpis: `t. x ni deljivo z obema ateviloma A in B Izpis: `t. x je deljivo z ateviloma A in B Rezultat: Ali si se naucil za oceno 2 ? Odgovori z da ali ne DA Svoje znanje si ocenil za oceno 2 . Ocenjevanje Ali si se naucil za oceno 2 ? Odgovori z da ali ne NE Ali si se naucil za oceno 3 ? Odgovori z da ali ne NE Ali si se naucil za oceno 4 ? Odgovori z da ali ne NE Ali si se naucil za oceno 5 ? Odgovori z da ali ne NE Nauci se. Svoje znanje si ocenil za oceno 1 . print "Izracun ploscine kvadrata dane starnice." def kvadrat (x): z=x*x print z kvadrat(7) ||0~0RjԁBwoof $Ifgd=$a$gd[$a$gd[gdz@$a$gd0 %rkde$$If  0;634abp NRt؂ނ8@BD"$†ֆʷʗziXi!h=h=B*OJQJ^Jph!h=hz@B*OJQJ^Jphjfhz@B*Uphhz@B*phhT"B*phjhz@B*Uph$h=hz@5B*OJQJ^Jph$h=h[5B*OJQJ^Jph!h[hz@B*OJQJ^Jphhz@CJaJhz@hz@B* phh=B* phhz@B* phBD"†h*T}xppeee]p$a$gdt $ & F a$gdt$a$gd=gdz@$a$gd[ykd?f$$IfL&j  0Y634abp (8>~&(*RT  "&(*ʹݹݹ݇tph`hpXhz@CJaJhz@B*phhz@B* phhz@$hthz@5B*OJQJ^Jph!hthtB*OJQJ^JphhtB*OJQJ^Jph$hthz@5B*OJQJ^Jph!h=hz@B*OJQJ^Jph$h=hz@5B*OJQJ^Jph$h=hz@5B*OJQJ^Jphh=5B*OJQJ^Jph(*čڎ8{ss$a$gdtrkdu$$IfT  0 634abp $Ifgd=$a$gd=*ڎ268:<Xxޏ6x@T|^f68:<@ӿ}ӿӿ$hthz@5B*OJQJ^Jph3!hthz@B*OJQJ^JphhtB*OJQJ^Jphhz@B*phhz@CJaJhz@hz@B*ph3hz@B*phhz@B* ph$hthz@5B*OJQJ^Jph!hthz@B*OJQJ^Jph+8:wn $Ifgd=$a$gdt$a$gdtwkdxv$$Ifk^  0634abp ^8v $Ifgd=$a$gdtwkd-w$$Ifs"f  09634abp 8:<Nrv $Ifgd=$a$gdtgdz@rkdw$$If%  0%634abp @h—ԗ\*TNVprt,JğɶܥܗܓrrrjbjQ!hhz@B*OJQJ^JphhB*phhz@B*ph!h-:hz@B*OJQJ^Jphhz@CJaJhz@B* phhz@h-:B*OJQJ^Jph!hthz@B*OJQJ^Jph3$h-:h-:>*B*OJQJ^Jph$h-:hz@>*B*OJQJ^Jph!hthz@B*OJQJ^Jph$h-:hz@5B*OJQJ^Jphrtzzzzzzzzgdz@gdz@$a$gd-:rkdx$$IfT  0 634abp Ÿğʠ`bdhjltoogdz@rkdD$$If"  0"634abp $Ifgd=gdz@gdz@gdz@ Ġʠ̠VXZ\^`Dbv`bdFHJ^`h͛qXqIqhhz@0JOJQJ^J0jhT"hT"B*OJQJU^Jph*jhhz@B*OJQJU^Jphhz@CJaJhz@hz@B*ph3hz@B* phjLyhz@B*Uphhz@B*phhT"B*phjhz@B*Uph!hhz@B*OJQJ^Jph$h wh w5B*OJQJ^Jphh wB*OJQJ^Jphlnprtvxz|~ާ68X¨Ԩ֨(*FXZکgdz@hbl.8|dLpЭҭԭԮޮ0̯׶א}j}}$h} hz@5B*OJQJ^Jph$h} hz@5B*OJQJ^Jphh} B*OJQJ^Jphhz@CJaJhz@B*phhz@B* phhkqB*OJQJ^Jph$hkqhz@5B*OJQJ^Jph!hhz@B*OJQJ^Jphh);thz@5h} hz@5hz@h'کPbdҭԭlb $a$gdwkdƍ$$Ifk^  0634abp $Ifgd=$a$gdgdgdz@ ̯ίЯdfhjlpz>LV|Բֲزڲp.:,FRԵֵصڵDLzȶͼ|thz@B*ph3!hhz@B*OJQJ^Jph$h} hz@5B*OJQJ^Jphhz@CJaJhz@hz@B*phhz@B* ph!hhz@B*OJQJ^JphhB*phj{hz@B*UphhT"B*phjhz@B*Uphhz@B*ph(rtvxz>ֲز,ֵtj $a$gdhdnwkd$$If[  0 634abp $Ifgd= $a$gd ֵص}}}t $Ifgd= $a$gdhdnwkd$$Ifc  0634abp 4r¸$0@ι6@tʻػFʼּ (XvԾܾ&lv~܎hB*OJQJ^Jphhz@B*phhz@CJaJhz@hz@B*phhz@B* phhhdnB*OJQJ^Jphh);tB*OJQJ^Jph!hhz@B*OJQJ^Jph$h);thz@5B*OJQJ^Jph3vxz|~`zzzzq $Ifgd=gdz@$a$gdhdngdz@rkdS$$IfT  0 634abp ҿ0Pjlrt`n `bx64HNln܏*jhhz@B*OJQJU^Jphhz@CJaJhz@hz@B*phhz@B*ph3hz@B* ph$hu)hz@5B*OJQJ^Jph!hhz@B*OJQJ^Jph$hu)hz@5B*OJQJ^Jph40.Juuuum[[$ & F dd[$\$a$gd$a$gd$ & F dd[$\$a$gdwkd$$If<b  0634abp  &(df"$Jnp  ,.24Pdѱѱѱ{†jfXE$hJHhJH5B*OJQJ^JphhJHB*OJQJ^Jphh:Q!h:QhB*OJQJ^JphjihT"Ujhhz@U hhz@0jhT"hT"B*OJQJU^Jph!hhz@B*OJQJ^Jphhhz@0JOJQJ^J*jhhz@B*OJQJU^Jph0jhT"hT"B*OJQJU^JphJ468:<>@BDFHJLNP$a$gd:Q$dd[$\$a$gd:Q$ & F dd[$\$a$gd:Q(*<>@BDF~Ѽy_M;'&h:Q5B*CJOJQJ^JaJph#h:QB*CJOJQJ^JaJph#hB*CJOJQJ^JaJph2j@h:Qh:QB*CJOJQJU^JaJph)h:Qh:QB*CJOJQJ^JaJph,h:Qh>*B*CJOJQJ^JaJph,h:Qh:Q>*B*CJOJQJ^JaJph)h:QhB*CJOJQJ^JaJph!h:Qh:QB*OJQJ^JphhJHB*OJQJ^JphhJH5B*OJQJ^Jph *Z&(PBDHJz*.p$a$gd:Q>@r*.hX\H68H$a$gd:Q\~(*>@DF [$\$gd:Q$a$gd:Q~°p^pG5#h\B*CJOJQJ^JaJph,h\h\5B*CJOJQJ^JaJph#hB*CJOJQJ^JaJph)hJHhJHB*CJOJQJ^JaJph&hJH5B*CJOJQJ^JaJph,hJHhJH5B*CJOJQJ^JaJph#hJHB*CJOJQJ^JaJph#hB*CJOJQJ^JaJph)h:QhB*CJOJQJ^JaJph,h:Qh:Q5B*CJOJQJ^JaJph 6824& [$\$gd\ [$\$gd:Q&(*,0`rR׽hVA2hhh:QhC7B*CJaJph)h:QhhdnB*CJOJQJ^JaJph#hB*CJOJQJ^JaJph,hh5B*CJOJQJ^JaJph&h5B*CJOJQJ^JaJph)h:QhB*CJOJQJ^JaJph)h:Qh\B*CJOJQJ^JaJph2j2h\h\B*CJOJQJU^JaJph#h\B*CJOJQJ^JaJph,h\h\>*B*CJOJQJ^JaJph &(,.02468:<>@BDFHJLNPRTVXZ\^` [$\$gd:Q` *d<>^ LNf` [$\$gd [$\$gd:Q4TVjnprtvxz|~*,PRx [$\$gd $ [$\$gd:Q [$\$gdRTVjlt   ȮssYD<+!hhz@B*OJQJ^Jphhz@B*ph)hh $B*CJOJQJ^JaJph2j8h $h $B*CJOJQJU^JaJph,h $h $5B*CJOJQJ^JaJph#h $B*CJOJQJ^JaJph#hB*CJOJQJ^JaJph2jhhB*CJOJQJU^JaJph)hhB*CJOJQJ^JaJphhB*CJaJph,hhC75B*CJOJQJ^JaJphxZ4hT<(.b [$\$gd $NjB>4V8:^ [$\$gd $  *68l $$Ifa$gd $a$gd $ & F a$gdC7$a$gd$a$gdgdz@ [$\$gd:Q [$\$gd $&:,,68lpHݼݩݛݩݩݩݩݩ݀o^VNVNhz@B* phhz@B* ph hhz@CJOJQJ^JaJ!hhz@B* OJQJ^Jphhhz@OJQJ^JhTB*OJQJ^Jphh`HnB*OJQJ^Jph$h`Hnhz@5B*OJQJ^JphhC7B*OJQJ^Jph$hC7hz@5B*OJQJ^Jph!hhz@B*OJQJ^Jph!hhz@B*OJQJ^JphD|s $Ifgd=$a$gd$a$gdrkd&$$IfT  0 634abp lww $Ifgd=gdz@wkds'$$If#h  0634abp (Flnbdfhjlhjl~̷߯m^VhhdnB*phhhz@0JOJQJ^J'j\;hT"hT"OJQJU^J!jhhz@OJQJU^Jhhz@OJQJ^Jj((hz@Uhz@hT"jhz@U(h`Hnhz@0J5B*OJQJ^Jph$h`Hnhz@5B*OJQJ^Jph!hhz@B*OJQJ^Jphhz@B*phhz@CJaJ@Bv0z$a$gdQ  & F<gd9bgdz@Kkd'<$$If0$634a(.BF\ ^ f    | ~  RXDHJLŸyiViy$hw@hw@56>*OJQJ]^Jhw@hw@5>*OJQJ^Jhw@hw@>*OJQJ^J hw@hw@OJQJ^JmH sH #hw@hw@5OJQJ^JmH sH hw@hw@5OJQJ^Jhw@hw@OJQJ^Jhw@h$Shw@5CJ aJ hz_5CJ OJQJ^JaJ #hw@hw@5CJ OJQJ^JaJ hw@OJQJ^J!(*DFHNNX\ ^ ` f     H   gdQ    x  | ~      " L x   Rl(*gdQJLNPBdfgdQLPV (<BH2 6 < !!!#<#@#B#p&r&)) )+0.:.@.D.L.0d3f3p33344ӳӳӳ©hw@hw@5>*OJQJ^Jhw@OJQJ^Jh9#5OJQJ^JmH sH  hw@hw@OJQJ^JmH sH #hw@hw@5OJQJ^JmH sH hw@hw@5OJQJ^Jhw@hw@OJQJ^J< 8<r04gdQ4VXBD^xHLnp JgdQ(*,.02468:<>@Bl.LN 4gdQ2 4 6  J!!!!!!!!L"r""## #"#$#&#(#*#,#.#gdQ.#0#2#4#6#8#:#<#>#@#B#p&r&x&&&&'('@'\''(,(()))++gdQ++++*,.,l,n,,,(-N-----.0.2.4.6.8.:.<.>.@.B.D.0gdQ0000L1N1f112.2b2t22223d3f3h366666 7 7$767^7gdQ45555P6R669999P;= =(=R>T>>>l?6@8@@@@AxC~CCCCFDIHIPI8LnN~NNNN QSSS4T6TTTdUfUUVVVVZZZ:[<[[b]j]_t`hw@hw@5>*OJQJ^Jhw@OJQJ^Jhw@hw@OJQJ^J hw@hw@OJQJ^JmH sH hw@hw@5OJQJ^J#hw@hw@5OJQJ^JmH sH B^77728D8z88888V9b999999Z::P;R;X;;;;;;;b<gdQb<<<<== ==l?r????? @6@8@@@@AAAAAB BRBTBgdQTBBBCxCzC|C~CCCCFFFFFFjGlGGGGHHpHHDIFIHIKgdQK8L>LjLnLLLLLhMMMM N:NFNpNrNtNvNxNzN|N~NNNNN QgdQ Q QQ>QBQQQQQPRvRRRR SYYYZ[[[[[[[["\\\\]F]`]gdQ`]b]j]]^<_____``H`t`v`x`z`|`~```````````gdQt`x```````lanaaa|b~bcccc d0hbhfhlhhh~iijjjjkooo&p(ppp0qrrrr.s0sssFtHttt^u`uuu*wyyy`zbzz帧帧帧帧hw@OJQJ^J hw@hw@OJQJ^JmH sH #hw@hw@5OJQJ^JmH sH hw@hw@5>*OJQJ^Jhw@5OJQJ^Jhw@hw@5OJQJ^Jhw@hw@OJQJ^J>```````````` dd:dh@hBhDhFhHhJhLhNhPhRhThVhXhZh\h^h`hbhdhfhgdQfhkk.k0kkkkPlRltlllmm n,n~nnnn0o2oboooo0q2qgdQ2q^qbqdqq rr@rrrrrrrrrrrrrrrvvw*w,wXw\w|wgdQ|w~wx&x(x^x`xxyPyyyyy}\~^~~~~~<Z\"jgdQzzx{z{||||}}2~4~\~8:Bȁ>@JăƃLN8<D*,>xzԘș̛&(04ηΪΉ hw@hw@OJQJ^JmHsHhw@hw@5>*OJQJ^Jhw@5>*OJQJ^Jhw@OJQJ^Jhw@hw@OJQJ^J hw@hw@OJQJ^JmH sH #hw@hw@5OJQJ^JmH sH hw@hw@5OJQJ^J6j8:BȁʁBFʂ̂0>@JڄgdQڄ $&h 8:< hlև .`gdQ>@lpdf8ċ ,xzgdQz&<2p:N\Ғrt֓H֔2gdQ2Vҕ*,$Ԙ֘XhvxƙșXhgdQhr(̛&(00Xğ"\gdQ46HJʡ̡֡fĤƤΤ*xzvPnxȴ$tdpx$BFN:>FBD46 bΰΰhw@5OJQJ^Jhw@OJQJ^J hw@hw@OJQJ^JmHsHhw@hw@OJQJ^J hw@hw@OJQJ^JmH sH #hw@hw@5OJQJ^JmH sH hw@hw@5OJQJ^J=:<`ʡ̡֡fhƢ0JLVtĤƤΤ*gdQ*,XlnĥfĦ (xzvxP`gdQ`bDު@Bv«ʫ̫d|~ҬԬNPXZgdQJnܯޯnpư d&(dfngdQxzBDLNƴȴ"$,.tvĶƶζж$&gdQ&.0|~·ʷ̷`ܸ޸dfhjlnpxBgdQBVX ^`XXvx^\$gdQ$&(*,.02468:<>@BDFN(*FgdQ"`b:<>DFr(*.LgdQ,\vx .tN~gdQ24XdfTx  & F<gd9bgdQbd$&24:<DFZ\bdfhjbdZǺǰǠ|tllh'hT5h hT5h40h9#5B*mHnHphu!jhithT5B*UphhT5B*ph hT0JjhT0JUhithT5B*phhTjhTUhw@hw@OJQJ^J hw@hw@OJQJ^JmH sH hw@hw@5OJQJ^J*fhj~$ p##$]a$gd2g$ p##$&dP]a$gd2gh]hgd" &`#$gd1q &dP<>DFLNfh|~gd0**,`bhjprZ^rv>RNdf$fhtv  p󑅑}rhh0khT5>*h|ohTCJaJhTCJaJh5KhT5CJaJhehTCJaJhehT5hehT5CJaJhhT5 hZkhT *hhThZkhTCJaJhZkhT5CJaJhmhT5h:hTOJQJ^JhTh'hT5( &(.0BDPR\^jl~<FPZdnx68lngd\+.Pf|Nf&>@gdxgdZkgd@LNZ\hj @TdxgdegdegdZkd   "48JNPZdnp|~6xgd|ogdexgde6JZf|*.@D\tv 0Pdgd1fgd0kxgd|otv*BDFZ.v246JnrܼyqdYHY hhTCJOJQJ^JaJhhTCJaJhhTOJQJ^JhhT5!hchTB*OJQJ^Jph$ *h hTB*OJQJ^Jph!hhTB*OJQJ^Jphh1fhT5>*CJaJhTCJaJh1fhT6CJaJ *h1fhTCJaJh1fhTCJaJh1fhT5>*h0khTCJaJhT,.BDFZ\,.fv4 <[$\$gd gd1f46JLr,Hj~LXnxgd<gd gdP.0DF $&ud\OGGhhT5h` hTOJQJ^Jh` hT5!h0\hTB*OJQJ^Jph!hhTB*OJQJ^Jphh9hTOJQJ^Jh9hT5OJQJ^Jh>hTOJQJ^Jh>hT5OJQJ^JhT5OJQJ^JhhT56OJQJ^JhTOJQJ^JhhTOJQJ^JhhT5OJQJ^JhT,6HRhPR^`rtgd&@h .0DFPZxgd9gd>`$&R x[$\$gd xgdgdqgd024DFXZdf4~>@T8:FHxgdXgdf4|<@TX8TV|~*26XZh|~&0{nfh}whT5j<hG!,hTEHUjH hTCJUVaJjhTUh qhTOJQJ^Jh qhT5 hk3hThk3hT5hk3hTH*OJQJ hT5hXhT5>*OJQJ^JhTOJQJ^J *hXhTOJQJ^JhXhTOJQJ^JhT(Z\fh|~,l*,Z\prtxgd q*,.DFH"$&02<>T&0>RT(<np$&(JL^`b@BxHDH\^v¸ªªª¸h2*hT5>*OJQJ^J *h2*hT5OJQJ^J *h2*hTOJQJ^JhTOJQJ^Jh2*hTOJQJ^J hjyhT h19hTh^2hT5hhT5>* hT5h}whT5hT6&(<> Fl(rNDFRTrtgdLN$&,.46<>DFLN "@BDZ\fhnpvxHFHgd2*gdjyH\^":T&(jlgdhgd2*vx:R:<bdfhJ~$LNPRVX< צ׃{sngns h5hT hT5h5hT5 *hVhThhhT5>* *hTOJQJ^J *hVhTOJQJ^JhVhTOJQJ^JjC?hRhTEHUj_I hTCJUVaJjhTUhT *h2*hTOJQJ^Jh2*hTOJQJ^JhTOJQJ^J%J&NPRXZ`bnpgdVgd-xgdV.0        $ & , . : <   " <gdm Dgd+V<   Z \ ^ l   6 `       > N b d     VXnùӟtttth hTOJQJ^Jh hT5>*OJQJ^J *h{`hTOJQJ^JhEhTOJQJ^Jhm DhTOJQJ^JhTOJQJ^Jhm DhT5>*OJQJ^JhThm DhT5OJQJ^J *hhTOJQJ^JhhTOJQJ^J-" ^ n   6 b   > @ L N b d     d     ^|xgdm D<gdm Dh 68XZfhtvxgdm D "npz|Dl$4xgdE4P`p6Pj0Jd,Fxgd <gd`3RxgdEDFfnx"*TVjrtǴǴǴǴǦraaaaNaN$hHohT5B*OJQJ^Jph!hHohTB*OJQJ^Jph!h xhTB*OJQJ^JphhT5B*OJQJ^Jph$h xhT5B*OJQJ^JphhTB*OJQJ^Jph$h\KhT5B*OJQJ^Jph!h@+hTB*OJQJ^JphhTh{`hTOJQJ^JhTOJQJ^Jh hTOJQJ^J*>Z FVtv<> [$\$gd;(gd;( x[$\$gd x x[$\$gd;(P|H& > gdmk&xgdmk&<gdmk&Hl2   !P!!!J""##.#d##$$$$&%`%%&j&&&˾󺳺ۊ}o}a}a} *hyhTOJQJ^J *h3hTOJQJ^JhyhTOJQJ^JhO:hT5OJQJ^J *hO:hTOJQJ^JhO:hTOJQJ^J hg[hThThT5>*OJQJ^Jhmk&hT5>*OJQJ^JhTOJQJ^J *hmk&hTOJQJ^Jhmk&hTOJQJ^J (lnz|  ( * 0 2       !R!!!6"B""<gdO:gdmk&"#.#f###$"$l$$$$(%`%%&&l&&&&4'T'''':(<(<gdy<gdO:&&2''':(j(l(((((()*D****4+p++++,,&,>,H,l,--Z.d....// /00~22844ҸvvvvhFhTOJQJ^JhFhT5>*OJQJ^JhT5>*OJQJ^JhTOJQJ^J *hFhTOJQJ^JhohTOJQJ^J hT5ht>FhT5hThyhTOJQJ^J *hyhTOJQJ^JhyhT5OJQJ^J-<(H(J((((()) )) )")D)F)R)T)))*F****6+p++++<gdo+,@,n,----R.f... ////0d000>1l111"2222*3<gdF<gdo*3R3|3384:4F4H4h4444445>5@55566B6D66677 77<gdF4444444445*606D7F7b7h777d8f8889999:,:<<====== >>l>n>>>>>??󴥴}#hTB*CJOJQJ^JaJph hTZ_H  h[hThchT5hKohTB*Z_H phhKohTB*phh2YhT5h 43hT5hGhT5 hT5h MhT5 h}{UhTh}{UhT5hTh[hT5-777H7h7j7777777777777778 8B8D8T8V8f8h8~888888888888888888888888899.909H9J9gdiJ9L9^9`9b9x9z9|99999994:6:V:X:f:h:j:x:z:|::::::::::::::::::::::; ;4;n;;;;;;<<<<<<<"<$<4<6<H<J<<<<<<<<<===== =F=H=\=^=l=n======>>@>B>H>J>P>R>n>p>>>>>>>>>,?.?H?J?f?h?r?t?z?gd[$a$gdcz?|??????@*@F@H@J@L@@@ AjAAA(BZBBBCCpCrC<gd}a <[$\$gdH_gdH_???F@L@@ A:AHAAAAAB&B0BXBbBBBBBBlCCCCCCCDDDDE EE*OJQJ^J *hwhTOJQJ^JhwhTOJQJ^JhTOJQJ^Jh}k;hTOJQJ^JhT5>*OJQJ^Jh}k;hT5>*OJQJ^JhT!h6 hTB*OJQJ^Jph$ *hwhTB*OJQJ^Jph$jHlHxHzHHHHHHHHH(I*I4I6IIDIFIZI\InIzIIIIIIgd}k;$a$gdwMI6JXJtJJJJJhKKKKKKLLL0L:L]B]ᶬuj\uu *h&6hTOJQJ^J *hTOJQJ^Jh&6hTOJQJ^JhL<(hTOJQJ^Jh ^hT5>*OJQJ^Jh"hTOJQJ^JhTOJQJ^Jh ^hTOJQJ^J hT5>*hhTOJQJ^JhhhT5>*hT *hhTOJQJ^JhhhTOJQJ^J"RRRS SFSpSvSSSS2TnTTTT(UhUUUUdVtVV WNWbWW  & F<gd ^<gdWWWWDXTXXX4YYYY ZdZfZ[@[\[v[[[[\2\L\\\\<gd&6  & F<gd"  & F<gd ^\\\>]@]B]V]]^^F^P^n^x^^^^^^^_,_R_x____`gdgd&6<gd&6B]V]^^^`p`z``````8anaaaaVbXbhbjbbbcc6dRdtdи婡唸{jWjWj$ *hQhTB*OJQJ^Jph!hQhTB*OJQJ^JphhT5OJQJ^JhahT5OJQJ^JhahTOJQJ^Jh3 ohT5 h3 ohTjAhTUhTOJQJ^JhhT5OJQJ^JhhTOJQJ^JhhT5hTh&6hTOJQJ^Jh&6hT5>*``"`:`Z````````a4anaaaaabfrffffgfghg  & F<gd| <[$\$gdQtdvdxddd.e0erffff&gdgfghgzg|ghhhhiirltl໷uhXKKh:(hTOJQJ^Jh:(hT5>*OJQJ^JhIhTOJQJ^Jh|hT5>*OJQJ^JhT5>*OJQJ^JhTOJQJ^J *h|hTOJQJ^Jh|hTOJQJ^JhT!hQhTB*OJQJ^Jph'hQhT5>*B*OJQJ^Jph!hT5>*B*OJQJ^JphhTB*OJQJ^Jphhg|gh*hNhXhfhxhhhhhi.i\iiiirjjj*kZkklrltl<gd:(  & F<gd_D  & F<gd|tll2mVmxmmmmZnnnn ooo^ptppp qVqbqnqzqqqrbr  & F<gd'v  & F<gd!btl2mTmxmmZnnnno*o.o6o8ooooopppqrbrrs*snssssst6tLtzttvvFwHwnwpwrwtw*xÿsjJh@&hTEHUja-H hTCJUVaJjhTUh2hTOJQJ^J *h'vhTOJQJ^Jh'vhTOJQJ^JhThYahTOJQJ^JhTOJQJ^J *hTOJQJ^J *h!bhTOJQJ^Jh!bhTOJQJ^J-brrs,sfsssss t.tNtrtttuuulvvvvvvvvvwgd{  & F<gd'vw w$w&wvwxwwwwwwwwxx(x*xxxxxxxxyFyvyygdu%gd{*x:xxxxxxxyzzzzzz{{{{,{N{`{{{{{{{{{|||޸ުޝއyld_d_Wh}{UhT5 hT5ht>FhT5h/hTOJQJ^Jh/hT5OJQJ^Jh~dhT5h~dhT5OJQJ^Jh~dhTOJQJ^JhIGhT5OJQJ^JhIGhTOJQJ^JhT5OJQJ^Jhu%hT5OJQJ^JhT hhThTOJQJ^JhhTOJQJ^J!yyyyz>z\zzzzzzzzzzzzz{{,{8{<{@{D{H{L{gd~dgdIG<gdIGL{N{`{b{p{{{{{{{{|||| |"|<|V|X|Z|||||||gdT"<gdUELgd/||}}~~pr^`bdŸ󫝫hw@hw@5OJQJ^Jh1q *hJhTOJQJ^JhJhTOJQJ^Jh+ hTOJQJ^Jh+ hT5OJQJ^Jh hTOJQJ^Jh hT5OJQJ^J hT5hTh MhT5|||||J}L}}}}}L~N~~~~~"(pr2\bgd+ gdT"Ȁ΀ 4:0H^`bd  & F<gd9bgdJgd+ 21h:pit. A!"R#7$6%h 1DyK /http://www.python.org/doc/current/lib/lib.htmlyK ^http://www.python.org/doc/current/lib/lib.htmlx$$If!vh5~55#v~#v#v:V 46,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534u$$If!vh5~55#v~#v#v:V 6,534.Dd |Tb  c $A? ?3"`?2xU"$$MbinV&VT `!LU"$$MbinV&V` 0XJx]P=KA}3W< ":"1AO88GҥLe!h9; °of{3;:왗1GUU)ڦU_f p]Psak,䥠G #1<'~op-nR%~S@y5MŌkpsc*i:hMlwͷ?ԟt/ot&P´>am',iO[nDz$X7 QlNVy<zK@Fx$$If!vh55 5#v#v #v:V 46,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Root EntryK FQxK!Data LWordDocumentJ4 ObjectPoolMKwKQxK_1209662273 FKwK`awKOle CompObjdObjInfo !$'*-058;>ADEHKNRSTUVWYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DC      !"#$%&'()*+,-./0123456789:;<=>?@ABTEFGIHJLKMNOQPRUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ FMicrosoft Enaba 3.0 DS Equation Equation.39qd|  4  FMicrosoft Enaba 3.0 DS Equation Equation.39qEquation Native 2_1209408183 F`cwK`cwKOle CompObj dObjInfo Equation Native  6_1210856927;F`cwK`cwKOle  A~  25  FMicrosoft Enaba 3.0 DS Equation Equation.39q,`\\ x 2 2!CompObj dObjInfo Equation Native H_1210856996'FP?hwKP?hwK!vh55 5#v#v #v:V 6,534$$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   065/ 34p $$If!vh5#v:V 0 65/ 34$$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   065`/ 34p $$If!vh5#v:V   0 65/ 34p z DdR  S .ADia_07b 2;HF( n 2;HF(PNG  IHDR~BDPLTE ItRNS0JbKGDH cmPPJCmp0712Hs IDATx^]v( LvsCL͛Mb @ѯG_._iz?DM o6}H׷a Bz}̳Žc 89y~C5ȗ˿bV`zH1/00Nr)_Aڱѻ?K= ^ lˏjW D76~u|I}ezAdW_aG+qcz0EN\'mKb&/+t(O+M}?0mӤ>fjB%J=o1-5c}B,ھA$kwVfkS&V{~%[Q LF;Ӎ=ہc&yPnK oT'oGur_w!Vt/5Iˋ^OV+M}#S5ܦoUs=dVw}Va6.Gf,t1%?C<޳ϠgGљUO[>;G卲G폆/+W5)d,g1%bIVj4b IUOCfy {Og#>:ߜ Sg+m*xZ*IV6ӣsыkẔ4SH>Ósy1h܏TV__˾"eN7|i6N>8xǫƎwښEGаN(#e=1<#l>ItcG}TsN`g}e~<; }=躝bztj,gаӥg|@O+H"uDS[ 8#\NG m*q7?ƨqA!coco}5W2毨3\O1[w>q>v,]:VP: g@=h>ٺ.<0Np2b>HYpԻ&BP2Ð~2<(A{0 r[&cEgxFTؑ5p[ w+L9[9[V2 =d^;1Yao(ӝ}SU͟>X%g[=Ex ho9C5QTˉISw'i;1eB|oP#£'&Q]-}34mx+.g Bg>I1au}iMϡ1E>WV7VR3;*%=g!;St¾nogiv@2m 2b9d-_=cݑ=Gb4{зU ;uZ/aVƘ^2Սѹr~N}k%Lz͎>P8̴l{_此)1PhtѠ:jqu ު:MKI?-̵㭠 :EBz2RL#Jhg6B]@) 8g C|86w6협̫! o2e" [r9>@P*bnsl/AWó@İbCz{dJ4?mg~˟}I)己^{(i4#+hhS5,~žf-:v_6Hv |V*ָ:Ku=1IMox)Wv[zED[X|hZWoe{r}wlL"qxD= JHcIENDB`x$$If!vh55 5#v#v #v:V 46,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534u$$If!vh55 5#v#v #v:V 6,534$$If!vh53#v3:V   0365/ 34` p $$If!vh5#v:V 065/ 34$$If!vh5#v:V 065/ 34$$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65X/ 34p $$If!vh5$#v$:V   0865g/ 34p $$If!vh51##v1#:V   0u65f/ 34p J$$If!vh55#v:VF t65$$If!vh5#v:V   0 65/ 34p 2Dd]DT  S 0ADia_05ab,(fHf:n^,(fHPNG  IHDR[4=PLTE ItRNS0JbKGDH cmPPJCmp0712HsIDATx^흋( z"* I~ Ϣ_r |5MqS|X/"t4ME"`6Y[/KEQRR}X/"D@BFkv+_UԮ8Rj>B?!7pVEr⫂C\ 1$(n7.c%6i($|̆魠U|OXPG*BQHb[nK '߅{U ծsʢPCp)oPVL*QkK*M=7lXt-Ԥ>m0mvA.g)A$0%yU8ՅϦ$ܲWNr)!e.8| >Mq<-|J,V7~D>B7^s+H5VHP '`\*OAF. W"傁\!@pbn 71'N""ɑvPHB}zɉ/" 2#8|KN 6 vsY`ezCfpJ^*}X>QUxwp+g[mC b`ِ;[qG-V/߮>'a७H[-U18/\nd^BFpj=Zpz=^1Uu.Nb-?-ǷO;(^/E@9xfutgYu*O(>86f)*+9 a}M Nw"8*KT_ܤ7\f, BS'ܠQ' BS'ܠQ' BS'ܠQ' BS'ܠQ' BS'ܠQ' BS'ܠQ]1ZMF@1t"Z O[ar +nc'%Je_/ Q/ejQ0kS֡\1MPL[M5K]mvY@ҏB0kS֡\#췂)݉ ڋRpd o?E9PiQs_Bq˶O }_r:ft$/=䬲Z.fzj+)*49Cb" nT~)VSrRR%T~irVYrREhթRʺѦOJqqpbx~ 8ĥ~ x~ 8ĥ~ x~ 8ĥ~ xDh0Tok0Bi3 <j3 g2OLo?W_EKuu[8YΖSs'WDo[U}JXpiP`r$xr8ĕ?RY9˩^BgN+=j5o ^ "ld嬲 C>/xm#|ZO|Vpj+I. '6/(/Zk%K<F,e64DxJ&V&pZnSk*([e( sS~+J&Vp>w^6"P҃KkapsUM .㮐_GH"P҂KsɧiK3 kӀ, wڹ'/Bכp.In}'!%\׻msؽwoh$뇘L]~n3q͕6$D6=z"sxF$6/]yNɛ#쥖;H/ya1]IwsMfKWjO5 dFsy7MSWb$g<@*:̏opX{)w8?xIO7CWNG,Ԓ?nS/7A~<݃S;Q}\]}tY߿M>mwt 5ij0q>:GTzbws.\8dT]OygzoUpA<]fI«S]F.gҏ{rjTwmq%guГ&"rv_>yDbNur|1sQ5e7lU8WD.tnPCvqs<$zt+aA!Ws#=ǡٮHb !ׁ7qȽR[[nnm?N Msz',~>.]@poK#ĭfz*gtɦj B1Cqq*]^V$ݠDS#r7ȇng NN ˍ /̍/N-r_/W^o~y(@ۼ ?.y2܌e)ч&7xB>>7l04<~򮣝.E ^ྗk|#A eWY*uzT+rp6jVljlb垢}H4p~Bp`nggK+ngE_/7OG*{3=H5N<<%5xwۇ=q!n9n'o{U[on:\}\[/GwMoB>(.>6e+BGnwP[_͜=(~p58E8?pMry9]˶q!(Jn/;)R gx37D=[:ȮK8?V8*Xkd';Z"Ɏ:*Hvc :*Xkd';Z"0up^\R롲@b5"*!YPp;8/ #{cy3xC)l T)^|_:Q{8kn<}|;GV\4a 9*])r T clU|?3iQYjkdR |ygwO|ŁVdf|n_n@x=4P6wYSd#`qf۽֚ n6FFuQ͏4{~["nVZ{T{J2Soz) :*Xkd';Z"Ɏ:*Hvc :*XΏó]Qm"8Z{~â´*N  );nNDΈ I1` -\:OM@$`F,DdR  S .ADia_06bp<(Jqb9PnZp<(JqPNG  IHDR(-PLTE ItRNS0JbKGDH cmPPJCmp0712HsIDATx^흋r: D}3`h=5Tm%[#kCo@~ 0 PT fBQ $H4 E(hqC7fZE t>ܕL !UJs IrJ;xrZTbPT9M,*) 89(pDPSJ*@QufLQ e&HQ"Pzč(.0۬D!nk ?%)Tڋ!ZKqtEȏ$0,U$(*U# ̆k-,kڟ$0,U$4xA<.~-cևRs/-/~r{2 IsRq(g]|lyuiuOG&\&i nakv3Ee m}{,*F`i4T e͐KhUT&|@j~*l6Aɞ\Phv%Su}"5'~!5!Ϩa`&D}(^؉)axa'cN߇? ; v"l@>&D}(^؉)axa'cN߇? ; v"l@>&D}(^؉)axa'cN߇? ; v"l@>&D}(^hn݄ngv @|ބ1 WRS" Ln@ &TP@s8o1ofz.\AK a:P3Itg~ 8( JimԊ P,AiȪP, 2MKUlQ= N5V2NfD(Wt8Dƺ`*i~6m{Kv~OO'V.6P&J\jyf_?rȣ{1d}pT(.pE^LYH//i,.0ڰ<.2,y@>õK9ףI8 Vٶ{:5)F{(NdRIէ(*?P=Of>''`T^U|o5$kPrtPw_{P#NWq5+'PFk湒wsJZꯙK {rrX?s9 P0P z *8P`0PS PƊz66knYۢf'/HfNߖ5;A6Sv"lى Rae/hN_͔ۿ-{Akv"lTmDm Zaj3e'o^Кۿ U);[DLى۲f'/HfNߖ5-xzMC g \r9=UR!m0K2Kj|ձ\JT MC^j<7Y|`>Aқly8./q@Py+j3?R ozy[m'jlP;tnםtYkP^)%]NP}HCQ6- uQ^G5lk腫q! V^fBKiBQ $H4 E(h P  PԿ-21([(lى Rae/hN_͔ۿ-{Akv"lTmDm Zaj3e'o^Кۿ U);[DLى۲f'/HfNߖ5;A6Sv"lى R$قſ-E.t?r͋K"C-}Z$NsſO6/.ttoKѧE}\PU;,覦(^/UxPNN:@ՐTNqzڽ !Nޕ@i ~)(y>P@@w~Ds_r,x=k)NdE+Sк3'cxl2K2`Nە[Am̂GZwàAP{6%34dW7 :m pօAKUw1᨝Jv{DU-VeP/#2k}ሷ}Yu%~̿bOϣ LUڨz $"P TթvRoϼԨxF4\Y#N9e,_ j馤A!I閤\A>sP݈caՓi]oxbKlt"UӁsjQ`I`/\t<LZUqd<\zrRyx%T+TTE=Y׻Ә9@]iHT1|.F) u#@U_nM\|kSr"uUyIQ.1rNw gPݥ_8LWЕcj ͩqj ji]6 '0s-YEQT]/ϝǦӀ0HmN~̻#qO߿ө/0zUrvnՍLV(ҡ ‰qY@9zQ7%qrlrҔ''GQXA9NS.bt{^.neeԔos<]aHA>hʁ> s5|܂LGRRsq@@Tw JP&܎3(J'oP)3E~aWn(<5=9wapSN P]MݕTg嶜8Z-Owm0_׊ʩyk_zI95f!%TrP'Mݛ:niorsN#PNXQ;'TAdk{z0PG4ݟ*!eHra˒SƠH=HQ Bj ﱤ,ZyQG:jC0^Yu4zP/@T:]ϣ-fo]o e/8e%Tƽ zJFݘ`zތv1iq8Z\jx IkyyDF yM/5oȘ$k5oȨI™טs8zpș<6v1]w%x\?ͤV eR)@=O uRzEz/JQHoAYoTjQ[On"{c9!f>N EU0i@g>/]Y;&hzq;)^\>oFNbEUMw'#7u] ,dz^s4 DihdT SԜ*a*Y~UǩԤdj詸 vŎ}B ^m'ŒpfHQ'xpV@Q'i$* PI>P'ȍ.]<@a9z=u(<Aa N*8a@x8@aBs?z'^e@^*@@PT fBQ $H4 E(hFSTHؑL m2}[䟙] ej;"ؑ =s1;~j<7 R1 V%9Pm?;н6#ᾠXQ{[TaH4 E(h P ,@Y(*@@3>ZGӻV3zmX[Bب!~.( ]n8ߢf>׋@qvc9]a(jwa Ú{ޅ2f[TTgRKA5z=:]|e2:@HT fBQ $H4 E(h P ,@Y(*@@(TZ3,攇0yBQ $H4 E(h P ,@Y(*@@PT fBQ $H4 E(h P ,@Y(*@@P `1ccP @Y(*@@PT fBQ V6wGIENDB`MDdR  S .ADia_08b6dӝZY3[3Xehn{6dӝZY3[3XPNG  IHDR7``$ PLTE ItRNS0JbKGDH cmPPJCmp0712HsIDATx^흍(_' ٝy)"'!I LĐȁTb*1L%2#% kJpgnx8XCGSȮ3$ۈJǕ mLM v!r@!!k3^"9C~e" ErZ;[m,u ~s_,񞊤^>zUyf4唻TٜRi<*-CJ%TTr#4;!O!y WE*qĐh[V$J#d]"J Yd HIcu9X}QXu?FmJT `g lf#md9"JfaWfBU(G@NH@ I$"Đ|.){"܊DR腃0v(A%]HW^T$m$]DKd*JHX(<I1qC,Jju-ϗ Y<ݬ+$|Ig<õjm5Bdsd?xIU%PČrAR_IM%S,ljYJ"Y\$e$S.."od:fTly2YK?%%)Fy,ᥟGqixsJTd&*$ T}x!}wN(Us➬r62@"Nc\p"} kp"|9%$ΌʏrOxe@!-AP]D5N?wB(aIc֛qGN$#t& (g/ Fc1K7q&"㹂UZmE\<(W`Y\%#L3%~1R"#0 o6@OdWm"@7 rl.SIؗ .%`&Fߠ_KnGQ& "[ evomqDw* =jr(JP 1` IY':㮬p#%^+ϩkI:_ȭH Avka e([O]$?~kԮ SFLY(k=ݾŐd|4"IAxz#\oR% [9³4Lp"Yb Q؀^lC%CFҤT 9 H$͈%74HuJ5\{L2$"6wJ~!|GUo+ww!I\2: oGRL _M ̓hmH5 }'q I܏$ܠ'ֆȯ:.CHHq qa>$PIi l!hkK[-]@Sx9O)Nߍ$ ߍD!1$r[Ry6ؓ!Ml.VvH>qoN^#K[&!qJ2cb= ɓJ@J\& I>q I.v/Xq4$qǗK#KPvUz ^h@ I>*Tr/5k8jM%nQzR@zݶ_~$9!|nP>$t4Q[[9P[C웵S$#H¦>GN`3_D;Qdvut5Iuw $o6,%ST2j5k8pD C5PL7'\˳!YB!%Cr3`M%u0+nyf 9³}V2#+Yv$*,e(‘dE( 67%X._&fiZ= f&ӐWɈXoΑ8^&wʝk1CUKF͏@^ HXFLa *h%$J=žD?Y%3 sżw~zr1I_s]1z ?t/W&KWqYE$^oSRX#j$٪V7wx,)k\r"[/ {uq$_`R.*$} IIucI${qYE6?KaByuԔ]-IIv($Nދ"RbZ$ _4n$K Ԟ O@@26wV^ab=H:3jzMՋG"y@ҝQvG3Dtu85AQH!UЇ$._,=sb҉E,]H҂ɠΧLWKJ9 !C5Y.CatfE~ AoŅq\`)p\]!ADƑKrc?Rh3݃ER&r dU-T32غ-zm1ʤT\-IikDt\Hzӹ@O3ɽ?j k]MM]߄rJy\%UO}Qa4v;mR$GiMB"Rn|H}U* i4ɉ%רV N$ehHD+K1T4EQ|.ChbQAXQMxB#m$A}kpwJYjCS#D$]dc'S{_&PsKҍrl&mIǨmH瞂 AtLiK66LclqXjl~EJȟM@Rx$>HP-ܷ<8PLDx:C<)̌ƒ֣ȓ%rWYʶRI1t?$ :lh!qkvqTɦEz@$_"9SBa*H6+,{S_4j2rmg* ˞!_'Bs)VJL%L%SLT"3ĒE) ɬsY^b9*y";!ع\ORYS\e!;[[)Y=o~00{TI$ZJʜWQZ)мP3$3"W4~CD@$_"bHq>%H%1qr_1C) Hb NqK到D;`?ޏ:Ꮾ8T+Pz":΃ͶɂDD-b:@"BL(!qHFF"YpJDdc?\y~"/Jez{d* },KD'a.DsM7 W>K>*TT2ʡ:i"E|Hr @;]yѠŃ&<brmbRSb ZO` ,RST"0Ȍ,JL%2I*M9z3rzZr5>R Jlh9zTB}~kS,z%,pȯ6$c8Me '#eH |L%Od[<_]A^-z5޶L6}oZit߭/TI5A3*9 ]h$hxAa -ǩlw̯%əzBJT-e@1Dd hb  c $A? ?3"`?2{vXj'23IW`!OvXj'23I&@ |dxcdd``f 2 ĜL0##0KQ* Wä$d3H1)fY+A<ړ@=P5< %!@5 @_L ĺE,a #ȝATN`gbM-VK-WMcرsA V0ZnȖ1lfw+c$<&[? ;dB^%1̯ڣ<{0Aabf Q.pb;O+KRs@2u(2t5\x,Ā'f~cZ{Dd b   c $A ? ?3"`? 2q>GKHIO0`!q>GKHIO0N``\Pgxcdd``^$d@9`,&FF(`T) A?d@ UXRY(  t!f0909Y@V> ȝATN`gbM-VK-WMcرsA V0Z‘1lNf5aL _Cbc^&P{ +ssrrY8|LpǕ66{dB6^Fݽ u6`+0Haxs3AႦ<.pG#.v0o(AcdbR ,.Ieԡ"b> 11Dd hb   c $A ? ?3"`? 2{vXj'23IWh`!OvXj'23I&@ |dxcdd``f 2 ĜL0##0KQ* Wä$d3H1)fY+A<ړ@=P5< %!@5 @_L ĺE,a #ȝATN`gbM-VK-WMcرsA V0ZnȖ1lfw+c$<&[? ;dB^%1̯ڣ<{0Aabf Q.pb;O+KRs@2u(2t5\x,Ā'f~cZCDd b   c $A ? ?3"`? 2?1rp+y ֹi`!a?1rp+y ֹ&` :d/xcdd``f 2 ĜL0##0KQ* Wä,d3H1)fY+X$sC0&dT0pE1At 2Bar`r,f;35V ZZǰc@`{B`00Vb1 +ssqqny(<&[? 3m sIt'\&Q *!u`+*!upp0@``#RpeqIj.B= @ ]`  1,i /Dd b   c $A ? ?3"`? 2y&yu:h2_RUܕ`!M&yu:h2_R`(+Pxcdd``$d@9`,&FF(`T)e A?d@ UXRY(  t!f0909Y@V ȝATN`gbM-VK-WMcرsA V0ZnΑv b&#.#3gAZ5+9}oXn##I62d .hXp ] `PcdbR ,.Ie2C D\x,.&`|#VDd,X  S 4Aballgreen bЫoݼS՟ nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4AballgreenbЫoݼS՟ǝnЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X   S 4A ballgreenbЫoݼS՟nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X ! S 4A!ballgreenbЫoݼS՟?nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X " S 4A"ballgreenbЫoݼS՟nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X # S 4A#ballgreenbЫoݼS՟nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X $ S 4A$ballgreenbЫoݼS՟snЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X % S 4A%ballgreenbЫoݼS՟/nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`$$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5 #v :V   065d/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5X!#vX!:V   0}65e/ 34p $$If!vh5=%#v=%:V   065i/ 34p $$If!vh51##v1#:V   0u65f/ 34p $$If!vh51##v1#:V   0u65g/ 34p $$If!vh5!#v!:V   0P65c/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p x$$If!vh555#v#v#v:V 46,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534u$$If!vh555#v#v#v:V 6,534$$If!vh5##v#:V   0#65/ 34p $$If!vh5!#v!:V   0!65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0,65a/ 34p $$If!vh5#v:V   0 65/ 34p QDyK 7http://wiki.python.org/moin/BeginnersGuide/ProgrammersyK nhttp://wiki.python.org/moin/BeginnersGuide/ProgrammersDd Tb   c $A ? ?3"`?2X@P|Q;*ؤq4a`!,@P|Q;*ؤqh` :XJxcdd``$d@9`,&FF(`TI)YRcgbR 39aP5< %!  @_L ĺE,a KL *'] ZZǰc@`𵼉;m.LF0ZmILJJ悺 nF[= cdbR ,.Ie`ԡҹL`6f~?Dd Tb  c $A? ?3"`?2X@P|Q;*ؤq4o`!,@P|Q;*ؤqh` :XJxcdd``$d@9`,&FF(`TI)YRcgbR 39aP5< %!  @_L ĺE,a KL *'] ZZǰc@`𵼉;m.LF0ZmILJJ悺 nF[= cdbR ,.Ie`ԡҹL`6f~?YDd b  c $A? ?3"`?2]޼5#g ԪG#}`!w]޼5#g ԪG# `PExcdd``vg 2 ĜL0##0KQ* WÔ,d3H1)fYKP-+ PT obIFHeA*/&*de-¤f Yǘ@ͤr#X=@Hfnj_jBP~nbÎ%r?3vq(1Vb1 +ssb:|aح]3m sIt'\&`*!|= ȳk1LH(sAc `g-wLLJ% A0u(2t5B ~dgzfYDd b  c $A? ?3"`?2i6^h ?`!wi6^h ? `PExcdd``vg 2 ĜL0##0KQ* WÔ,d3H1)fYKP-+ PT obIFHeA*/&*de-¤f Yǘ@ͤr؅,L ! ~ Ay ;|.? _ٸAde23hCoGL`۳YlBԞFE >?H&@Fb3 +ssTj<"׃ݯ]9.p삝KJ+KRsցePdk 1z$$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5##v#:V   0#65/ 34p $$If!vh5 #v :V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   065/ 34p $$If!vh5#v:V   065/ 34p $$If!vh5!#v!:V   0P65c/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5!#v!:V   065d/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5X!#vX!:V   0}65e/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5'$#v'$:V   065h/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5 #v :V   065d/ 34p $$If!vh5 "#v ":V   065f/ 34p DdmUP  S ,A sort1bQ_S;G<[H'nQ_S;G<[HPNG  IHDR[8vPLTE1Z1Z1Z)){JJ1JJk1kkZZƄ{1罜ZƄ祽ƽpbKGDH cmPPJCmp0712Hs jIDATx^]ܶ ]'m6M6mb7)yq39>'@S bC oB GzN8eN@Ldy5SC 7nwO8l"E&j;S3ƞwh|5=2إ"Q-{ ˰,H|iXt`T&j -QT+lzܼ #bMA\C-H+ TյxlqAD"^=jx4d:fl{j6|6rPMjٗ%mYuSϨ#:FgKSJ,6ˠ)`DC!D^} ?oyj W&<6cP)Nn։B$y~_z9faq`F-` ) _F|X?`ͬ QAޠIva PLy V snkn)XXFK`8sJsW,\[q)ҝXCc6D Lbu䜴O|P C5u"mp@HN؛_(bQsvoGѕqE+5aK6L97/s8 _F{Msd,iqUX,D56"+Qcpf腤:?imOpkk":xD%Gs,zK㶷6̢I)}_je WUgGJw/)#IMˏwrj^;:Nz`x'_μӭ}`x3twrj^;:Nz`x'_Vbx<9cFLԽ²JNg0s"u=vjeo5M5=pP J !Jcc|J6UmmG9ZEצbֻhָc ˴{8,Sj7aWZ[GeP=6jeFԈUq"$S*@~ȤEwZfYK?-Ҟ{\xcWrs9XIENDB`i$$If!vh55r#v#vr:V H!65534$$If!vh5$#v$:V   0U65h/ 34p Dd'$@N  S *A sortbnaϝv(e͏JnBaϝv(e͏PNG  IHDRiT[tEXtCommentMade with GIMP~e`PLTErrUU99rrUUrrUU999937MbKGDH cmPPJCmp0712HsEIDATx^B:C!HKCZ?oюJhYINݎF`F//#0 3FND)cE`䋤Hig>:մ7*YFh~Ip"V -wM[t/s\NFM]I?_IFߙB]i+by̚&ds0\\<fMV&4Et+HsI{}xon0!%iPpAU&I&/)OP-iՓ%]i#^ҨiJ*I5M;C"$M'@ 5 2epFSe)`A2DNI+Ţ8#i%VPAˊCy1 *d\^򘤕r%i(KmėVdH;Ad$"u_iH HfmJmG %4yF=q0j*eR|?Ib ZBy؍}홻ZBuz"#if>;h;5i,HkwҠ03@ݵ0{j巇wY+虴Ʀ{t!@%HþkyjyiZg?Uƨ(ZE iͲEi6ig߬I3po} Z_;72uWwjZxJ"a43=4LJ y]<4v.|H"Pigj-0wFGav<}מ%1M[6 C<Os?M"A iHvÆ%MrH-ן/_|j m;;ViГ9+rrAæ^.~<|ni~az~~zsw;֦6~%rhM}g*jy -N9LM0nHkVZ=kmo06rKCL\__&' ZPM34>=svƋ^behK_=߯5+4^Sifzk̞^?^_[g_9n*>::X~ҖhE\x~xynxnj?VJ-(ii ڍeg{a!5̓ݰaBI셳/.E˯i>:6IP=GZ54['i ֞C'i$-;Fn*ӝI)Z]_Ƿ+gZ@Ki>~z,'I=%ipOiSOo7Ѡjگߧ_nw&%6u4$-vjsTȏ}Eq;WQd^d=մcѻ0S!jyXf$3\m4]{ 0-rg&󽛧ۤꔃ&70\oIMHmHZzg5jv@ Jh޿=ӯva}keўutaG@Avxv<ގͣ0;f.fa߰;#e ʸv~eT*ZXM m7lؾQ->z){,$`E˯i>:6kh5m\%I 4j@I󩝜%:Шi0IIK<^J @reTISɺZҼFР'::h*؎@>a.&}%T v23X-QRҶax:6A3X0ti֙)SQXZ%m h2&ʳxD.1V\i}UmK]ajA}7*9ѓTTJڪ@a BƺRX7JA[1D2.#TJZIcԄZ͠4@E\aNNI 5-%JǪ4A#iZH4FnE $mOeFMq4Xłw 4HEV%iW],$dzӶe|#ܤm4̀FHe\d PpƵgf 4VϬm4FDS4VO4jZNԴψFM#hcFMˈ2I IGڶ@#i$@dE<% 5U3QZIHZIz6d-E Ira4jAK*q$1"IKh$-5=R4geKu-MsS/m\1.h)"o47i/@"(,ari-!i˧c۱%iH(hSb&G@i-&|ӱq;8g(d%M1;2欶IgjyHċ1I "d쟕 [4jZuz)8M 4"-$4V$;IѨi)P$i@ j$k:"QæH2FҢFкN@s k0CZNE; x c؄5rf 2kRCZ6E&d쑕 l 2KRBZa]if]^ly-e t g8m -rW2֖l38GfYvi!x ceY2@@9RkLܜ Dum 4"f&9<̧vHiN}<'gSIb KF&?iJDX=Tb+}#$Sq$f@ 5-IKS;F"F␶ θ%( g$-iAt+c䰈> 3ލnvN?X=V5h>e1T!9,ܠ|磯z@73i+*x*Ys`ސjͼE-f`6F\e9[ mBI򓓴hb`nVHm4O]&m:O&m.7|F" Z9kJ<9˚FngJ|H۠P/2qvc?_{ƵlŨTr?MEZX[0՚Z x=Հ3V:iKg,HZ(HZ@h9#i!HapD8:(yZV '- gQ+Tդ Z:HZJ-%g$m%i3rAKI$iP+#E /ݤLIK/gm!x 1r_$h8#in,AI"Pw>f䌤ex iY9#i ire挤W ZvHBZA˲}vXh2rXu6V9~w.Vдp 4AICH+ 4M4y+Z #qlI>dEI4&; i骜49f4B2NQrHZEzJQ-u}SA;O֜CY,T?h cZ)@h~Sf%c Dȣ~&MuŴ GZʐ6<<-S&|PA-ӱm&㬘Gr^x:Dg&L%z(:kH,4I܊*4$Y&I_"-g.X76C?54n 8YlTDZ0ș3 i˨rLLZ-簇vWC- aimLR=ׂvpAX\{U\CVN9gsX <}G'A!hh;u_Ц4 /hӏԑ3}/?g' ڦ4-P..BWE gѩh>A@>Dl-hW44A@^Dk wk3A@ƞi w4A@ƾhw4@@.owR4@@>n6M&3<A[P ڪ@@ƫ  ַuI۟#h+St,Ts)h/%hk,L{hs->}sx4ec-J x (:;]Ztޭq9cg2g~ 4Rdz~34,GsyEG,2Yi3*$lyΐTN*Z̜A@1{vcýA;酜ENdq`9dsנQΒ_>d,ahl]@##9|*q,eQ7 d*lҤ4uuТ>,3ǜ>>NHAr!LbzЄo2ƿS7Ѵ~r5J|]ו _v=[R,D *l hٱ 4y!@͕O%k^\leI+utx4yw u~~r\n]N"zN7aRJbmkAd? Dg,6:FҾϕ_!dV+)#0#0@7ɐ=@IENDB`Dd,X  S 4AballgreenbЫoݼS՟ #nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4AballgreenbЫoݼS՟(nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4AballgreenbЫoݼS՟.nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4AballgreenbЫoݼS՟@4nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4AballgreenbЫoݼS՟9nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`Dd,X  S 4Aballgreen bЫoݼS՟?nЫoݼS՟PNG  IHDRFgPLTE*3 : = "5"6$;A FJL(E"S"U$Y']4B/?]5'`(a*d*h,k-h/q2q3w1x4|=w)8z":{$8}":}$?{*@@@@@@@@@GSCZcXcy\pxm59:"<#;!eEb@oSoSrUqStXvXy]rOqQsQuRzY~_{Xvx_aopruxtwztv}tRNSebKGDH cmPPJCmp0712HsIDAT(Sc臂F(Byع)׃yFۀ@GC`SPvYEQ,_L}liWogAL=$E_T*آ]ݞb(S)c_i*3r Tf zIY;[(H2k'.$/%bfAQM Y[C YS&yZ2IENDB`$$If!vh5#v:V  ` 0 65/ 34p $$If!vh5l#vl:V  ` 065_/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5'$#v'$:V   065h/ 34p $$If!vh5=%#v=%:V 065h/ 34$$If!vh5#v:V   0 65/ 34p $$If!vh5l#vl:V   065_/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5$#v$:V   0U65h/ 34p $$If!vh5s##vs#:V   065g/ 34p $$If!vh5%#v%:V   0x65h/ 34p $$If!vh5$#v$:V   0865g/ 34p $$If!vh5$#v$:V   0865g/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V  ` 0 65/ 34p $$If!vh5 "#v ":V   065f/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   065c/ 34p $$If!vh5F##vF#:V   0F#65/ 34p $$If!vh5 "#v ":V   065f/ 34p $$If!vh5#v:V 0 65/ 34$$If!vh5s##vs#:V   065g/ 34p $$If!vh5#v:V   065b/ 34p $$If!vh5$#v$:V   0U65h/ 34p $$If!vh5$#v$:V   0U65h/ 34p $$If!vh5s##vs#:V   065g/ 34p $$If!vh5s##vs#:V   065g/ 34p $$If!vh5$#v$:V   0U65h/ 34p DyK yK V../PYTHON/TUTORIALS/PYTHON/Names_v1_0.html$$If!vh5#v:V   065/ 34p $$If!vh5L#vL:V   0L65/ 34p $$If!vh5[#v[:V   0[65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5$#v$:V   0U65h/ 34p $$If!vh5$#v$:V   0U65h/ 34p $$If!vh5#v:V   065/ 34p $$If!vh5'$#v'$:V   0'$65#/ 34p $$If!vh5N#vN:V   0 65[/ 34p $$If!vh5N#vN:V  ` 0 65[/ 34p $$If!vh5 "#v ":V   065f/ 34p $$If!vh5;#v;:V   0;65/ 34p $$Ifj!vh5&#v&:V   0Y65j/ 34ap Dd5\  S 8Apozdravljen!b[_fP Agn [_fP PNG  IHDR{5VKdQPLTE{1!!)6'75BB 91!BJJJJ)RZ1Z)199BBJJR1199BJ ARZZRRZcRRZVc!Z!c)R)Z9BBJJRRRR1R)ZZZZZZZ)c1cccc!c)cckkkkk!k)kkss{kks{ss!s!{!!1k)s-w9k5w9{BsB{J{R{){BJ)11)!119!)).9B!)19BBB!J!19B9BBJJRBJJRG+J)R1J)R)R1J!J)R!R)R1Z)Z1R!Z!Z)c1Z9c9ZBcBkBcJkJkRsRsRsZsZ{ZsZ{ckcRZs֌Zcc{֔ccckck֜cs{樓凜{֭ƵR̖bKGDH cmPPJCmp0712Hs oIDATXGV}lSw4dLbbs i ,˘g gG Ll2RjEh(D6X2nCV6XEܝs}~Cݹw߹9s}t"Onڴem~{n| '۶mVu+tmV9N>J%N9ɻrGLs*ʼNssby7>|ʕK.ehӂPTmȅk޻pqLtiaעۀ4A]dX+>q<`66rڟ޻g~,N|]Ukp"*EVUL De!p =1cѾu- áHBbL&}:u+*)vE-L0Nh#EeF <1`M˗/"㣣t2EL"b?aM)<5fFGblLH:uؠؙs'$st* 9biPf 7?XȔz;H| z'`G"-sTQm3pЧ)0|~i aAW'1H28@oleGAMrj$B qyo܎1"rM^nI4{XtG_ggGGG}&-M edWGL+0)^_"S{|J\9UɳN!:@Az "=TبFc;ԩQg[##%V~T^Q/E}rBA|DQ|yk38sK~t"DijY2=WvApWaaڪP+;8lv * WS5ִmٌEU@b@E Aʱ2 W]h6_%` k^W{d;^U4cOHqF q.Joݬɧ`jtQt~[3D/"Q}nΡ~7|,7S&yfk,ZL&D YZ`K?Ob~sFG|a0;q:w.t)M=dP̅P#s 3AwbV3il:du#0_:N\xkx98WO4 pձ<ǜ%; UbT“$gg G[PPsNX&VYVD5ziT5Buܼ5Zs54d`9*VsM]34v<άP,ck̸7`V}A([WQsPmdӢ]mz4 wӝT'gWgfXb{*~F~t^ikc6b \YRPi`|PIZ )BNrw:N1)B( XHEjQMVӆ.y31;;ξ;guH.(m92~Q7W BHc q)Mx8G"xD25xR!` X >.[~ yذaE ="K._b#7lܴyG)lzm<-RO݄:7l±\ _\ %)d1?p䥳@*B6Jx#/yK5%}BB@ jk& {u! M ŖHp 7̈*eW[;[VO dԎFaz$^7}~4tPg/gBNk5^oI^AH !=!.m?:vvw-Y|GCYl0tO?ޞz~׼-^b:E$ 1R&bo o??8ζ3ŗCvwɼ5)Ć6@Is R ULuL`8 Bm}]].@ dBLv8>roX `Pa(Q k` 0ǠKFq ƙ^^瞞57x&Rb#xҿ `uB `Vb#`Ϝk}U5~ W P#M4w B`]u@ֺd GlXDq44yGqaLبE X' oasVMNPr+F#넘 f/w9b!Q3kT؀F℣HHB`Tf\8#1Oq֭`--T(!f-oc %G=y:|`߾û qgJM0ob1+b{s"e~u_|^d-F 1F{w7`:Vjiin6"\Ll1kip'9G^ط߮]O2o7{KSd#(L"R#MX<wW֬~!hx9 .f]89 x 2=#N\<&ULD<7UTTɁ-Y{ݖ֬Yjf#ŀe-3.ءdGr`޽RDT*[̦#[U"LPy"Q plIG%ʥwNg8ؖ. k&1'lٳc!Q|8@ XN_fDpRlq{g㑕˖6&YUlY1╾Gs;(訾skC0¹ 9(hdP=ΏW=@W\: fcq?QY*1,p$ s0\g po&Gt?a.ir2f)$NK(=#e2;H(1'󓡚sT;hX.KZjUexNq0c;wyas{pX4B`08 rqF8Gr"@ۿ֝w6 de8q*s;u;}gvnSlQTqrl8 )T}i(CͼMӧOV=L-\&Oja۶mO'-O^>DI) hYD.`Y%z 9}"BL;%< Įxw.[m(6@P 7 ^x0 hIQxCҁz5SvBUqU>>$kh-2[!C"mHC|I,b+K瞨d`Q?a_ԨL`-_~`;/%݂)KƆB ']k'ׯn& .TY, 3>RiB)0` p0`T@%R?  E_RΆ6\9T՗'&:ꇨ*ޠgQORQA}Ha>_/y\̓Vߧ>~S ZiO|צ 0^Jk5oP:Lڰ*eMtLR[PYk4,_~9ʆicE-HCcCt_MባP&c8+,w% x7`}6^`}Ur!ը}@>]>kKu7vXWl#DVg,;fmWef+9YߨrcA"(`}%֜0*„aWUJ TJJ _NBx[ ljOY}܉1̯e%ca}Q|;`i0Jg9 O)3?(Q )KiQyR0g(akY(ZbF6c[fcRS7oD :BZsJQŶ%=q4[0.zHJT7TMWtY@kQ̼օJ34ؠB7"WX1˺mC#-p6炎s]iY6Ft5R=G/lV\]رt/kêT ᰚn(*)EevkWNtpJbW".qNSUJJp؇N D9#J6pR+/uQ6+U-#da.,kϔO*>lFnjS[qzɶERWJg- Y       !"#$%&'()*+,-./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoprstuvwxyz{|}~7OQ(B%3ΎWH,@K,uf6FǤ\.o)V֥bM)A3[ۡ"2)Xb#pE} 4b[cKQ*mi׵%HQRa*ע!^LV͍ݴ32pZmжG[ ?#QY;CRm~U;b%qȥ4n+Nn`Dd5 9bB}䈱곴ˣlx9LKaLJAJr׶ v\5ˣ]Zgg\=^hΦ}zMqf3 HE HBHV&+1Ŭg3[[۷v:L)oZg[g H3|W7,H@v3&l5⡚&Dy6+++VUѲѴ.&ҷU¢U1xCt襗:^8o:aH$d @DG0 hAʊ'1Xو8R175ikde;霑_z#/Vgg?o۳;n $+D`Ð- ƸX";dkV H֦uiK[#[) 7lL[ھ.7wvvgǁ̾=!l5, \8_?DKIV\K Jټ ʸ؂3E M$-,ia"ïutO*<'$do"@ݸjsuy0-a2Ö'ˀڃ?9" ~S8@n%I˦ƢFR8s ::;Cow<|g+A\m0@+?ˮİߌraoii $6E2&n @: r$8ME|þ!`π%;;ssυVĒzbI``TTٲ,  [a. $VvMvR`XSph"ҡBqA$EY%;~d?~?uIF^m, _SR N+FU[۾kUT,VBdA"HP Irs JCcS~Qs3h?f9|;>}qsK"-Z@?$p!&vc"R<8|yxwtߣ',ZHGF% 7 7/Z^K0K9oC򣖿8ąI_!ِ'AI?Iuѭ$x{kߣKK!XYh6-bKYppZ] b8G-GZ`P=fKޒoJXM5 /r8ݱ)'/'''#Ѹ.ol/ )2/cO# ItD:2PO,1% "%i%edl h3o-[ӯ"k˳~vq&ܵ=;wcaM 6K-G "@`N9V=x|ާz7A"z=ArXDL)//+,+]IIYb J2́1p-Xk ZTZx%%%ś%g槡ךbb5K4f7lqgY !O>ē{z_?ȯy!1K"b$Rr8++,2 2!xSԴ4$/-/#;#%ŌhGrzNvFFszc˾_'!w?/z(8L&`nt5,8R_/ @P R|[۳ ] }Z+ U =)Fe˖ч˶MH]a0,8 iT)@b2Aݴn49Vk^;S~:##޴"ZW$%Za"ZLx=֛ac XWnljq8CcNWZI`obH):=׈ؘ|ק!h\<1,蛁 {)ih7ůo d`eH-+l"룯^+.+".::NtK"a$@,0 G.`gg^RQQE.J&X  EJ/7HY:Rw&9b~ Y$eu 6'c\ҷh79p Bb B/(||;wqc+fu}AO%Iu-a7i~7Qư?JSH)BG.Yn;w3ԹZuGv{n}Aº,mF9*C# :R,]r0TKi[T>'KFOVY2\}-Xjc?W^Ap|ZNꜢUW,!jmH[ͬ %}^rs5*}×/ ~篲ctfсώщ^f6ё7^yg~c'.<@|>` jKgn |`瓁"wGup!X?{%ཎ +`Q3'j1g^y+,4.afh1)4=}}y3I;~#(Dbyxuë(]{xsEfY~*;3yY%q>\?9eˍ/>zAٵL*[ 6Xt~tH?W\rZй#Oع#w^.sN%=}.O}.dM\@T8".Q|ŧw??W%.0Ē6 s{N<ݴv:Gby.++`-\ߋQ;0cXt t D1\]bR򫃋B6sO4Zgoh4!pN>5 $=ǬnCS܍b!2N0{&c #f6 C,is_XWB a3&S $xTtӪȋa&+Ę&@]0ӣVZ)Q~RI']ަUSUF3IPӧIFju#=]xSYqalR 5zIerA5H$JuXa&YMi@BF h""$"h.Nf\JΈH8Urqƙ/ t|<Ћ0 #F)+S@I8xJ{&Ʉ5H ]_u-zʂ3N9j4 CªE ]N tST#S sEx8qP P@TiIwŹ4 k !'~1fKM:b@P/NW*v k#F^FT@%^.̐ :jh !T~k $Y[K~#5x?3PnC@R4C#5l{9䢸=z 'BŠE0K>wƀO5'`}"?{.[3d$J%R Jh3]ř K+X UMR^jb#+65ЪL2A@IUK:W6=KZOϴg^ 诏:/jUT2AuJ%;vj{n4ZJa`VF)m9-'Bv3 u biJ4t9O^:VdbcK2%ǰ':LwdImtU Y!^`]`U@JlW*tA?&4ªFr~p VNxr0Ka#P ȚYE>Te@.zE0s1;պdšo-u`qK:"ni+MĒաUo7c>ͅ4{QHa3W dMړ`/@ivWC8[i`RøT̗ KsԮIn+.څ4JGz]5 !s)v0>a׉99J;BQ T,+O#^4:%pKp+\S:&jHƛtbt%0 xMR1rx ehrȑW_yiw*BW,pzKT }fX„je,|9 X@?칁]5΁h{dqD_әӊ^(Ndx|ɥ>iGy;as aCHоNqTVz^oo}_oRl+p65S*ԡOHtx$Zx*p{m!nqz2N7dtk `À S0NiWa/r40kZp7̣Y85ݽ8 <=8'3\PD_!Жt yMZdx'G`b>:uk`јGM̰=*k%LT(š(O䔾t +rAAV-O%кQDLq P($RlHŲV64_/]""AwsGAp'Nt:(@b{=Nc) zOlXh`%SbD]SL##Qۙ&R Ȇ( r l xFۅ1ƀ濤5~!8 !" ~L2`& ʤui"VTBU8UKFuzc`I.θkwfW0-P5i%Gf)k4.яFxZzH Wc.GPo_"g3+W89mXpդo O@[dIW'F`Ct}52j3m[<#6X3bLb9jDG95/_Ӧe)U)A1ۀ` Ey!bv7k@pU{j}Sht@g(sX,I%#,azbn'z?x4ε{mPjcC=pZ#cE9W=jV*>>AV݊y26تjU6ۈgVT7|[Sek <>BV A8 \j ajzԔA8@ ء|ݏ,h4q|31nf*c XRP>SRiǢ#pPb\E+˛+DY@g)ELL>|ߩsqp饾XzJ~'o'0^DH ¬ _X):z9gs92p^G(gf:W+҈^m!l[aPiK؅ajܧylo\U*'t *l f+Z fRp]EqzYUB.h[GjjTZ;<+VӷTדpTDy^X$҉V=ʹW|"_pĻ<)pZ1P|Ep A):fWxꎰ߃ -ǐLLQ!h'VXN>ahb" bۢX*GRhs";r%]D669_jt;"4䛐&͠6 0!d'rwf!O糫l*iVrMc8"V#",w488 Ɋ/,ɶzZ')T'NVg+x[ m;iX͆FSMTЦ/qd:M[,"brMoz@fOK `w/ " J' )?#Ϥ' ᣦ~|SCE=R0=!ܥExz%^#R 3[ RC?`l~zXt'J%&WM%Xk9Ҝ(O@'W;1I|׃u^9FSvb+X` *2.7i%z(:M4 ;XqA!!)Q %_o5Xu9 ^]oz& !SLfYԠ-CQLg^G E'4DLRN#BJE:R\*=38ڧ7a#P~:KDzK`؀Yƺk R)ʀɦXa`mkXȎ5 G%= ^U K?!0vH/VG8aGUċnP`X^/=}T>/ʻ*TB;.߄EF DЇE%Y)"{L(Yr䠩qt%80OX kM7t{eUӤ8Iȃ 8 . "I$r*DeY+fIjj5&֚ɴĜ&vi՚x 5pp%6{3p֮U TF D iᒠT}=U$]/ SOb4H`pJUUB( Ղw:rվ7y-Oy?B"+^+.npFhʩ5fQUH/bx/iIENDB`$$If!vh5N#vN:V   0 65[/ 34p $$If!vh5#v:V   065c/ 34p $$If!vh5#v:V   0 65/ 34p $$If!vh5#v:V   065b/ 34p DyK yK d../PYTHON/TUTORIALS/PYTHON/PRIMERI/textEditor.pywDyK yK f../PYTHON/TUTORIALS/PYTHON/PRIMERI/textEditor2.pywDyK yK f../PYTHON/TUTORIALS/PYTHON/PRIMERI/addressBook.pywDdA > & C A&$b`C$dd1AO؟<n4C$dd1AO؟PNG  IHDRa/fsRGB pHYs+IDATx^]i$uά>{=cfA+$(H` B(BF vIl`YC dEH,{QW{WuOwlTtTee|^|Ålx % %<UpOV]DX4l<` ڸA ڢNMeu̴Y\ixʘM%1GO# '($XRfa1(`,{c@f,Z'Te3LNvTENGGKL M #RGjP :W @C_ڥJa"8RS^r\fmyoxGl%%ᡁ Z"%l)JEe(7ǢhY 5G8E ar,5lqUˋXq\+* z+b,I[OQ0Q(+<Td)f&a4¦U!jdmpjmۢ| ᣯJw&N?2X!P\C.%LH ĺEAnK4Jbp8z9!c[$X9Ô)of-zsq隈g|Q0nbaLFXFh,)XnNH\z_ $@3,pa.=򼁊10c i9B\}ʢXf2l(DHTVʸPESFk#j`]&fs"xg\g1E(J0]h 9ѥLIrri,U"1"_#tz@9,69 g@%XO-i VKv{c$d[⡙o*ٟ/l"$Lma ap`pױ7ə%rʨ4_!vϟ?GO0t-SefYG?RGg7qEβ:>_ Cl}W K%yvAe%>%Ewn1RxڰBz1V+O@$ qp4m#H# p]HX̉rP@> p*NR#0 ѬSl :#jEC%s@P B`YN2=( +!?lTPv6B;Y޿L c~*q (. >Yy]u%p:@;dK[V/?D$3EmuXvU( R)WJ3BJD/uRA+T:ųx_>7?rmwV8j {XXrm5 (,G??tsP'x pMG8 οr@Cji޵LAPP? gTxUcc߮<y*CP3ʲ~M5]RKjӚ9_08ٴ`4!(n&p7l {Abn[ jFEJ*(u9JGy p9({phdz|G58SԈ~5 (s׈ ȣq *hXj.xOw  %>eiVʣ/FwI5@L 6@zH P2s ns;RQ)}͉iHeӀ ؔD t+.:BaDp`qÐIXdlR`0r {^8\\;i)D$q㒮DR1ܦ@yS_UoV/$e@iPDpݑM3^^ s ɟAqRKʛ!4 4p\D>_'Ůu *`ȸ\˘qn:4~ |Ѩ` {Ӹzy 09]W {Pa+V 3w]8se#mwu F^BAr#B]DO1(4`_BAY LIL;oY ?lA LAF+̞UB'dh4ncc 36(?Fn5BA5" h;j*CFR'~EmnPn+(k"~0?ޜC~>QxH>SnL>c囒ҍ,5?C ]aDp+PJ"x$BC"nP >vyԃ5g?N\o9hP Vg U "P!oGBAEEۛ$89L}i2q p0(ѨV̠ck+M@s8q٭GqK(;U]6.j@a&[r B:pI̒:"xJvGBCxDP9Hd>  0k>'c^DfeQ+]PPP"'l"4j>93҈(i0%$8| [!bt/C^u8Az<1$CR]ش(WRR^'/[T"4D}z]~4 )yXUa#EbQZj"E`ʞk 䍉nLϾܺ1į>#F%HBaf d-+*Jb%ǡ  +OԑLG_gG/aKl"FcV܁!`i#@@RJr$䱺 mN[vBW:!ԭI$ H\4/8zco12 P=PJ,[yQF!CGQu[0u8OЬD_mFS)< U mjzei#CCPkC - _gH#Ii?KHIS!o+2Zha3u2-XbL^x wFQTE[lȊ0%uuN2:^k7t{@nQ USWڣ;Z{Ehl~C;rAڋ|b/!ztq7XwoelѩS WpYv`_XhP2 ֐ǿjАX܀$3X h *ΏJ,r:vy+!ȶ0#mwA;*hR/n@T֩.!=06sDH !?L7k%勤GC? %@ lwm/4aG+;V:h^ ޚMfvSDB3jԾn/[/_kmF6zVt6]HS4e5/2Ykt$9&tNk3Λu>v$֕xZ/m_o1iz"N٫]tP-aYvrA~-c(E>ŀ{Tzw$[x<.Ljr}3mI՛?]Җ]J~H~MvMu*+_k<66P8 ׌ܶYIxIЧS K<:( Q Y(F;PDs _81d. *溦 w9ȋ6K[sg\x?V"G ᚙ# xY4;]Dڴ0'tgècCVS <23Y~vbB~ǒ-rZ%B+oѺ.՚(׈0:6O@XJE3s™,WZUD"@&5f8% @an-߳-fZNd14Z02dDÊLdQ2wjqn؛$[ QIENDB`pDdD> ' C A'%btZWo uP.GvntZWo uP.GPNG  IHDR|sRGB pHYs.>FIDATx^y$G}ǫ{w}K6X? RQc +rD1n%+RPHv? #LHdMHֈX G"^{LwUwϼy{&U:>W}#R¤oOJPactH*Wl")m[JD,a dce%z_f2/ xQS"DgXP(̪9v#B%[ojt]%[YN֦VJ5k\h*j< R_s|^ޮZ|ϥ ϸHhq ]gb2*ťTMscE!yWGݫyYaupV$ *魐 [mADGzD>.}F"lO[R UrYrJHK"iUt.RR,DYeUf* CI(0E):%4LlK(GtT3;sXR [^XҶ@iH*dw#ċb_.J-g'J0f:d8B` P<Ա!ĖB6Du:RNM0ŧtc$Dauj(`628d{Ք#|Sv܂a 4/kr*tbzh>U3qkqXA*Yj[w`%o߲AMF>}zb**Y߬ /r$l+gBB!CuD -~#b!%2(LQfʹ9ej5w'3j{ F[S@!>B7N4u[dv]S؎ o0ɮWOޤ~&鴕(Ta@CHRVm~w1*'3cbvN*tN8٬aXE\;A +jG|N{ӬՈu"h(A* pJyݬ7_;8$D/1}C-,쁀ä ҂]~θ/R.;'Qɖd¢$\ '[z`],KhJH.e nMS'ױRٍl3ˠ+4݂EBRMQH}Vf=_/*C_u}P V:& ܶjvU[c[ -VHLZnnBUv+ǭǍq:Ӥ x}6_*SebՔ, !Q`?yvs卬b_a/@=:{~Yn{Bv(*0O mQIeO&~FD}WRk[}FIaHI i=y`a'Dǧ;|[#ZP%'K萰$N`6ѝ F>o݂uaN$}|~BZQ E8y1HvVnK>x}cdvQ>4 sToA"JlB8 e~T㇉$0艧<+\PV {t}B_昴: ZoclO`9qቿI}&;z?= \HrcR)" m^Y7* ̎6?rZ`·NÆ!0,:sZ.^:`MD'+ښp$ kב61X!Aǻwe?ƟtxGuw~:WJ;F6yvz[|1mgJWBC(n%bYZ ֹ"IRiE&9:M5 YSGftI]R);:S yMBLΒ"FWD}*[&EJbQ#4F;T} Dh7q{K5zf>85Rҁx$N[{9Izy&a99ce8*J7*HI; 'g>1y^!KhlyaX:)n cPeՊ-I ;MS!K7B!#l Q]μ^+$#̓o2,ؑV ;!\LU&pwnnD&v 9N./X:>de'jKd9fBbz몽8^{_]{rwО{jSU 1t[ō+aZ?zvY#8;͜O{p'I<z:o'O|4ىU6 !d%I)>ALgt`h z8@pGNIwIaG3mT*/dOAa` i6YRVLG!ybIeIy wU(AرnNu5N9PqDF&h |GbGBL7*oP%vt&ηIoB2MwEjBBuYp nPwF#rݸT-WxzC]i#lgF5݅@ܭכzvn щݸؙ4ng+ק I x> }u -MVYrx.7x5=tJp F$Sa N=g!-FCDp==p[A̟<Ҟ{.,LPG@sB?oWQFPq@!騱F4ĚNi_^1v1BϺ2 e' Ҩ@7 0.j1>NfGZm2^y}гt5 m~"Ɛ=t}EviiQnKuox]z q/==R{1k ( C A(&bdm V9ndm V9PNG  IHDRM sRGB pHYs.>lIDATx^y#W}_mwgMH\!@.p@UeBx G5E%$lƱ) G(cBbS*"kwvGH]/{R%H;CҷW>[Zq!j. G$  q4996=VjtijT*p:p[Xrtŀmw rR9FJ2Odm%fgԪS˿'vm~{>5Z7yKT A ~wD3׃,nK*VoJPRY"w,lkel~<_ǝ_]pB$1Dv"jR-u$m>9\Z?UU?؃:w^u@ky{pyRٌ('fZ8LJc{Αiqђ8 N_9D/:N\kf4L8ɚ(KFΤΨjݠΘ` 1kjyk!XϤt ~E{-^$@ =)V 0K^zSkGoΝݧRNQwʆ5jo2_f,i܇삻!.P5*J7Fm9n[DԬNDnMs,m9= =:\Ѷɐh&a coK\H )}9k/߽xotMOs7rjM)o]珘4FS9MUVE-;C=:JAǟ mcOGF~o\ Hd5G)?(&<GKtoLIWjP zB5Xj28`ܷP}싫Ǿ.`[5UyG^0WVwxՊt JKܵ6M`0=oh7jjy羋n]8v磲:/Tz~:X>wޥmRs!5iD{|~bR/<+Rӹ|Y1@n a[7tVnXܡ~vGyM'E[4b䞋|]N:㕋JA7ѐH;"&6ttڪœvC ǝRbw{)3&Aq"GZCzF%&6"DsYHIrgN ]ώGjUJtעVء\NBnNuRi°WZOsL*-?vbq,˙OoW/kE2r1턴vcڵz6*Λ%a YYպjMWeIaE-yp^Yիpfgz5[-qֺK^eZWu $YՕy0[<떋8FWW8yzNV@뗡'/o}X?^0dfZㅊC1 WVUeUe.٢S<gAmGnj?;zw3_p _?0Z^UJ_}U*R*eRJoe+=_$lYqґ0n Kc6KH;nzffvvV7Uɨsphᚵ['8&0gMk0hsn65zV˺^?}o>5h+Fp᧾_|̒q~l/{95=pFgd^"kOЈXiW ߸mS <`j MڊM =C<|5[/1x^]iJ U4lqٴFt^fԟGoHCڭ'|A{#x28үi X5Gݵ[X] Y#,]_{{W_UquWUY&t&pgF0r՗Y,n &^xE;+4m3MO>s9v?\ҟi)X?ϊ"oݾkh>y8hTFזlϛ|$'7t<3MUG 9`9hv:U$z^? D2`, WWۿi7N\dt;&@-̻gHy^%7\vxp(h&y}"GqT"iN&  ]q_;˅o>N f` PI"p_#b85.qi @e'7yΟn#FD#y2<077O䫟(yI1X0$K| o WL *7}zbD,V˙=Ti|f=lW<[5E PL\\#jGL.vPFD#rrs`<8si{Kg_J-E_G}J&\9f\̟+`'آp#3򭛷뷘m;nݕ9\VyNZsP؃+): ^}ռg@L9p3O96"1<ܨu q]ۈ(Vά>FD2#\ݬD7sw>gEٍؑ >LDaF m?G[6TۏcisBbL[^3'2ab7<}yh.XQ윑6︚2-s|b]Ͻ/_9:u\?ob8sy#'SFƓ[V;#6hDt% :>1s~n+Ǯ|<_)-3?q`7%8smEşEo,9j0"Ӻ^r wmZXcދ_aSc猬 $ CbvN;<[iϖa;ui3MbjVy6Fu gn9{ޣWD s8ڝ9x͔skrjGNxOx6bo{r̡jF]| `ɨlVKiΤhKZ΂m_Gg^;4,HdGDiwAn*lxyA90ru/\7GvG8si n7.VAF ^z߿ȏ<< u}q{H>~^Auϵlwm`B5ڻY=qcߝ<{wxdS &9rE~b`OڇQ~Ax&=&3PG=wȤx¨ֿ gӟǓΓUgd嘹$H[#@o&I ~.@~   n#~i{ 7od[{ [#7F$*rJsٗ<#l8 ol'# G/@o<-@Ru3a.)e>H" 렎cXۿ:T!x :ڟ=sG.1O #0g KLSE`Xv69Ngmj$pT]w,LչZc.gy vTfH` gb\3{d3cI پLxx{$#FG`ظ`a| 8@0 Lt(}Pn={O7S, DI`(#C~Bo"F1lFɈiIA4m`װ,I&u>uǜaI8\sN·%H`r odIW$8'ʘau>22@G:*cI`d=ϟnd<EUC B:+@P牪fB!@FI QDU3Cy׶> @7/ӟ1͑@ P fL:3P#X) @WN|3b# П^ N:1 PW3@CGH vyU @85tL"% #fQ3H@,X3Qu)n&FcDI RݥHq31y,ؙ( DJ:7#XP`g$)<|L$r%qE @z`.H LytiA:OF=0$&{uy:{WK{u|%=9K<{٫sxPW,5ΧY@P9/~ Ug ;/W:|}` I`Ze%U9~z.饷%;4-g9H`V'nK׍}s$"g^~'#ۨ4[nٻ[3]=Ow2iL $1QWmz: ݠ_6CKsK:a 6jUeIUS QIRI1VG-ƀ"HyT :~AQ#`TD|z|jxk{ص ) C A)'b :"Ga,ȳPP i C |n :"Ga,ȳPP i CPNG  IHDR ,~,sRGB pHYsj \IDATx^]{$Gyy绽@x$eLx6㌃Gy@8)CF88`#$lj% E$=vgfݕWӳ3;=նF_WUuq#ăMFe1ܬ:ʈlFX6~LFRX0Ma h(h\AD6!/ȫ4E>Kq¢ؑBdUhI8}`;[{՘+SJ1 B $Ĵ*@FzcZzgS#T-joڬWJKQ.~.JݶB0غ';3k\a\96,x ́GA7lEVFEm۴nHpMѾqBq*`;-ͻEnlۊk|6sY #eRf$)q>euE]F㍀Ӥ:Mq0tSԆmcel%LKضJVFlt =Q+o YQ㩬7kbqGؼmM7kdtgwvgS\KZpTϑEv/Eݠ.OTa[ t2x+-\'ؽWEQ91Y̽dK:Ҩ`8u :hN QL56p(65,eIoUõl^NP.yVHru ĚLy]ea[ώRn9w͖C|ܱ-4^KLoM}v,l$c;͚-aD]{_ۂbYB0f+ j-o/J]֛-.4t\Tu93d Op\8_57Uw,w٨K%[M*EJl*Ole ?CompObj<>@dObjInfo?BEquation Native C FMicrosoft Enaba 3.0 DS Equation Equation.39qf0U  (s*(s"a)*(s"b)*(s"c))  FMicrosoft Enaba 3.0 DS Equa_1231010716BF0&twK0&twKOle FCompObjACGdObjInfoDItion Equation.39q*CI  ploa inapi  FMicrosoft Enaba 3.0 DS Equation Equation.39qEquation Native J__1210965089GF0&twK0&twKOle LCompObjFHMdObjInfoIOEquation Native P21Table> q SummaryInformation(LQ=~  x Oh+'0  4 @ L Xdlt|Naloge v PytonumpNormalircr17Microsoft Office Word@N@6=B@\[ >@,XYKPZiͺU-I1#494ui1̌0`P#ǯJcfs˧^ةylnLf2Ik;3¡KȪ]w >L=[0}s{'5H$KU6d! te.kKey*\5(b:Y);%Ruϊ,`"d/E2%Y=nSth]={ s /n_ge'L7Xa# Z7a*uUB?ll6EÒ-~că=FV\|'5[US WaJ7c^~?::Zeo.tZMi5DE/wOڎ\nY8W'>FUbYO[ɢ"KF .4]Dc6vJ4+w>*]g^Cbv,퀷v;Deڰ{]pu`P/|0̰ v YS {, ѻ](q > sV[?$78%rʽ'6{;]w>f~r{x}>1ҫws|'y窻u[ (^ A2GꞷT e]vsU.'J>o=s !KDFMZ"Z?jrrۦaVO@{/-WBi 1쎯@1yWxK%="`!.3ͣC+O`,AWqe/%8}fX&vJ" [oWiWxۢ:MZwtwzv%Nrq\ 3A?}+km+]Uz><@0x/0]d HpR-Ӡ영FQH46S6~![. D L"ãWI1­zmco~g.nQpPf޼B 0٬9q:G?˛Ve4Z7knıZ"{;2U Q^aUϝzNw WKz 5UO-_~$}ZZA7P] twCcخO"Ucp"fh(![ Z B=]NN~>諏d!816I C-X0t gg(=2,@wN@-L8UaoO# `copawaA?}JFnl+rt; Sl BzDwi _t}?2ݏ~pd#<'Ր"baFv GB\C\ Az@c(uŞ5x/&13Ҁ < `l('|4fT{rIưnU|b@ 4=Ix+${JLx-96ß>KxW|,"%'j:4)?;W}o șîDn |8 ؂گ.!JNŮxA!VR ,{_Iw@GL.Ec [wŦϋ6UQw]ۥDLp_}3xYrl"(m#:ǡ~:Î~;twHgz۠$Yw%ˀ@aȇn:/y@rؽ2r]Dt98!X/9Ѐޠ& JZJBs7OÑ}lG9R }{PoaǪ=kJ_Pco~`4.7M$J)m[ŦZD*lˆ{p])g<))?@B#i b^^ULyu+S d:H<œG͝,o3E휚\0=8C!6VYO回p/?TDIExvM00E/EL4†j_kUKKM!o0?k '&h14|ϐZx ݷɇ^zOl}B  T:ye3s Re;$!8FȦlk--`Xt'2TXL7V0F9H-MwQM*\tKriP\*K8)/.-_X.jRU,Z\%Q/ر8+#!N^p*V.JKRi7JKK奥bZ,ՊͥJX5XE< lLaǰ|ڗ؞0oEDl6cqgO)gspIcFr3B`D,ݰ1klo}/oo=BnI#&_kЋCOʢfn w 61r_A;7G:J#Ve`=3Y)9yʑ`we)ڗ`_J#U.g8.i>*Y1N4bŚDu/ @LA=g2ʚπUpEe:';.M6*]xEV51:"`uD*d'`Q:* (a7ӺoY}u2f.[6*^W$pz MpI#N5xu7B#CdƤ56l6 1!-ͦZ:XA} ьi@/?⻽ z'_.҄#`!^`C*r?@X1B ^\TF FgG-"F: X'F:U17F F`1ˢ&F F`1ˢ>*/XQ^Nhw,Vv z]|C`]T Z~pvWEcE0M4 RJ-74!#0*-M͋ui]E?gїsd@\  epgi@|юզl~3Gs[5瘶[~t߿d2͈ S qeITe҄ l`FF`m`kc)q-e ``)JV#0Y/\ KIED zR m=?`5RG!Eޒ7MubVC F ֝m,4[[ai_Wam<E~?OX`@\t X'b!&1!#%hmz}wq15~FGвj#6M翝?6@\軿dK~vXqaQP`֦W__+6^䩂4/qrpzF 0RYTR`%&D je,)5H%LTV++} g/y )eܠr>|E ;ە}g{iϏ(}>SGdɈD0-d1cH c!b0`.`.f``.f``.f``Qob,b$XMewsDE^Q-=w_Qs6#D . B`$-@H X?LcE0oХs}/ #jB ?qf& i%`'ĵ P8^i=5x@ X/SU,8@(=wb4~Xm?JLw~t߿d2V[OGtZefk ]v%W_sXg\.O:uqV*q(PenڴiϞ=_|1~aLǮɯ +ajϟ?q~ľZ2==}}m۶P(06C}jcRZZ5r333`Z6@8;qDljf]D m;BQڈfoC ';?5xxOl튽m.JY$!KRmpYR,uU % &Xj˒6|9mX>@3,2T&X@d`ℌ@0nj`"# 'dG ?f|#&Xd8!#?L1;0"C `DDLPq2F``0`E1 5,"P& =@4h8q*F`0؂ DB  &N l0.F LH0q"F`0\G 80` 6lDY#C ́&XhF m&XhF m`R3aьd" yˀɬxzTpqTHs>l"LQ!L$LvVzTx}y |& `T۬`rp`MRm#G 6r9IB 6IͺZDv"z0-Xk5@`>g~`cp`m u`Y D_hJӊd/bZJELF=p)R,j%&X2KR`)XV+0Q\"KiŲZ@ zR&XJ+Jƹ3xQ{fҝ/|ȑ&l\ F`\߲߸$*gqՉ$ f5= #&hL%\F TΊ'W,XnٔkVz_΅($׽F8t K]/#)Rx^ѷp^dI]D/? +Vhф%R沨S{E!u+ܗE']_M9w8OMIX<>2 v,~?'JFV,]X 펇'&7>^y{3͜q _kHe[B0??k'NLO4}dl4qBa2G'&&*o3~Su}6p/Sm 8u-So;#%J/|nppYY7>PG%dr? T~|vFE0:c6x/fm up^Gn0 |=o1/ Be#N c~+xn9O # 7;E3'@8rq c7CiżOdP25|Z>#o(À'G^:݃v`g{6St4[tHeL Z;>9y^_FG t𪕃@^@RY3br{ޱ}8?Rbt*WS |!} :\4˗ &Ff=xL88emw<&z Bѓt\t&i$nt# %ax`E¬ξ&b$Y7[d٤잘:@㾏;o--g~ę\9Q\i>o2G$ J)λH #ȃҏQdsaCx}StX.Ex<O߯LpjR:Ip=ۛ [3m,"['h̟طo/|>$ 7P`< Ӕ\6=B܋w;}fNC#ktf4lGLmOL{Fu릇Htn-X0L!Ww{ټ]d/}κ w5C0B[ňϧ„%wcIݕq]|OmݺУ-s|@\b.bok GjY V;Khy_|$י1 $Gr݋ ڝlڲL='nߊΩ_S>b6˜3Kc.loۚI!'w/I:{fcmصk x6m#dQ4zK{ .;TJFGͳgϦMM_ijlO}G>8A}$Ne\>BP@|:f^ughw&W❸G"гZKвM5jllɋyKMBZK"k ϥ{ H±,0°+ ǝl@?tsPXYB ? u09&zccvm3.`7p:> [ U?h`SݭiaV:pg Ψ>_пj}QLs= p*<ȁM櫾WYp #]` oDM1V:U70/hS1JFzs]'jz7!yW*&תzB<Iqz""13dkU{JgLoSy쪮) Ӿ|RqwU^joXd4蘋&Eٶ_2PЅr\1\U-ʼ׊{7AnY5p(2OEBnrHs1d ׅ8T8~^Myq Pn^'3{%Z)U|4!;tN̨Ϗyv[Ҽ,bL /jE'8]\m< NZp.cՎ^3 Dy~Ӥd^Q2!nO'j8b) iSu5ƌZ?[Wt,y‰]N _L``+wE\ȥ@Ϩ,K eiIժSJ)dHtȼ 1ﻤ:G%5[$܋T(Ϭ8U<G:˱We 6,'Z-h 5loU?f.[. 9ZW{^D(ҽ _]y2 5wU%O.&z﫵p.r/?/AJZ"+N'h}y>_{NnZqsI#dU Sgڧe&\-Nln+[OJERYh"]~Rl=޽Y@(s*Jh8pR.$b[{)"- tG~|G~s/eübO\D*g& );USm8ciU^=,BDԯFR`S<6rQg;ɧxb^ Wçcx QF[tlC8B%Qmի })j2E%^~Zi/v=.ṇ(6J޻絅)*XH󿄢 Vʄ j3@H:%G1Nk7cȩX5`V՘c SM 4 }R+5ڬ#=5V4jYxn^<+iMD޼xLHmrrW߲3Qaٕ]d"+' ;D"(軺e>/ȇKIW~淿 ¿S &tPV<̶oX_Z'3ͳSMg?_y3>e˸.?jPtM2~IENDB`DyK yK Z../PYTHON/TUTORIALS/PYTHON/PRIMERI/bind1.pywi$$If!vh55c#v#vc:V 65534Dd h b  c $A? ?3"`?2֒!(pdcٺF<`!֒!(pdcٺF@0JhxڕR=KBa>\?7kqHF4DcK ؐƍ@AEh FC44'44"-ޏKн89|B#R??0M5B4$uK-xQjS>`Z6$ ==pĜ[8Q-7KsBA2>&9w@R\[ǽd Po&OYm/|Q'J'Un9MP;i͂y4uHiY]9jE(k FP߄t~7G1tm_bspbN* gº?#(+J˻bZ댚8Ⱦ w STc_bӻVS\8X?zé `0ٟ$`vR_Dd tb  c $A? ?3"`?2:vAyrm[`?`!}:vAyrm[`B  (+KxڍQJQ=3{ݸ1-D,6,(AIb@!`g!O;+F,-4G̞ǽr(,C)Lj"NĠ5Zt /*JeY,!d]I=@Aq2تKF 1- }U \Mh^Ѝogo\=pg~aE]Tw[yryٓG_lD1R7kC\_ڷR{{.6wHzǞ^WNI3?Ő4vsm;m"eԀWv;V\CW;C9&FYc + C A+ba]xMjpi]=An5]xMjpi]PNG  IHDRLFlsRGB pHYsjIDATx^/TIo"@ N%@`0 A$? 9 @##A%&kHX ptyojf罞ZLTuUuu~= ?~EMԆ9,AUMN@UMN@UMN@UMN@,L… ߿rr78qb.w&%sΟ?2O7oخ]\I++Ƌ/lr*p5h.VX /&/qmм J+G,s7z20 TZ4oL#CË,nΦ:?*1wмVX /Acb,vhZP`QKY9h^|vСCnj\v-6  vNԳȸ< |rfl=s 7o\'nyw^5=I{bjj1j« ;qTJCꅸVbűc&L;|w߾}vaw#ǏbXv鑽ަў={LsNsZ& I@ڵok,S!,qѴ" Þ?"tL t52FzxIYfիWϹ"d}jjV }ܾ7P~uiiǏ$[ݒ.+` F&7聽SN9rm ISݻL{ȟ6ij'O^r|̵k| 9xkSGvEhWZGLy~5ɋo߾5skЋSp5[޽kΜDmq ?a`dA'1<, wivm>]dm7aM1oyJF?W[%AoP}ebdao̺Ogr2vќJ#*65{źEG@˒<;M;m0Scg uSFN}S}S`^m1ZcOÿ>LweFvsً%HZj+6eUq;{,=al2R߷8}yUBYѹ.-ƌ.K.[oOv6:6U;/|Ј77:F@5nyոB@0z [*A]f 6}!lڴ5ip`߿k+++`KX n޼ˤu볰M?/|cC# ոC4/qcIcq;qqI(^U*XBZ]ݜƍMxiuJ 1Dn| >YXXu%z۾}wKÇ^%Fl;wr^-]UhhxA[3yׯ_gP&.r>ŋ@7cA#l=}RХe3"׳@9-3WgP*\jMAU32ǶM ^k;Ne?Y;p_P= %#C:EP2Q!-.}yh/B4÷m۶%И3n>g\N\@1V&O.4.Qѷqu8@\WC(q/04E ננՔz4 !k[N\sV4 (xrLy@'.]qB#θ47_Ggowc;"Xiq *|$V:)a?wa5.rf,г-M)ZĐ9}*h"*J[B&$zB $ W -R31)rnWUFVvӨ0'NK ==hK+)Hvϸȫ5qE*q qŁ*q qŁ*q qŁ*q qŁ*q qŁ*q *W4IENDB`0Dd |hb  c $A? ?3"`?2zIM{]|!)VdVJ(`!NIM{]|!)Vd`@0|x]P=KA}3?rXX"J 8ũy? g_Pta7B^4s$HPgq 䕠Xb8N hWŲT*zG&° U|&4vo}tf"6;|7arg0+e^~Z+:Rui}bI'7b:.,D[4rxzK/OGSB@B NavadenCJ_HaJmH$sH$tH$P@P Naslov 1dd@&[$\$5CJ0KH$\aJ0T@T %Naslov 3$<@&5CJOJQJ\^JaJHA@H Privzeta pisava odstavkaVi@V Navadna tabela4 l4a 2k2 Brez seznama8O8  odstavek A  & F0 @0 "Noga  p#6)@6 "`tevilka straniH^@"H fNavaden (splet)dd[$\$e@2 fHTML predoblikovano7 2( Px 4 #\'*.25@9CJOJQJ^JaJr@Cr )$Tabela - mre~a7:V0<U@Q< 7( Hiperpovezava >*ph33LV@aL =SledenaHiperpovezava >*B* phBb@qB K- HTML kodaCJOJPJQJ^JaJBh@B EAHTML spremenljivka6]*W@* IKrepko5\Tg@T THTML pisalni strojCJOJPJQJ^JaJ&O& bHkeyword O Fcode"O" Fquote2@2 2gGlava  p# +2>NZjnr (.8>DIT[_cmtz,?g+2$/;?CLRbFM   0 4 8   : C J V Z  0 7 > e n x ~ CZyZay9^dj-JUr'\my1B_;YckrPgx  ""#=#j#####& &%&I&M&`&d&&&&(i*p********+h0o0000"1W1m111112222#252>2G2P2m2v222222222222222222 333f3w33333333333333=4F4O4U4Y4]4f4p44444444445/5:5X5l5p5t5555555556 6 6q68 8808<8|888888899 9 999)9:e:w:::::::::::7;<<H>?@@@UrUUVW{W    !"#$%1*+,.PONMLKJ\]xwvutsr  ./012456789:=;OPQRSTcdefghiuvwxyz{|}~:/,+;()*.    <=>?@A_CDEgGHIJt`adhijv|}~ 2 ./34589:;<=>?}z|uqolknmfe^]\[ZYXWV +2>NZjnr (.8>DIT[_cmtz,?g+2$/;?CLRbFM   0 4 8   : C J V Z  0 7 > e n x ~ CZyZay9^dj-JUr'\my1B_;YckrPgx  ""#=#j#####& &%&I&M&`&d&&&&(i*p********+h0o0000"1W1m111112222#252>2G2P2m2v222222222222222222 333f3w33333333333333=4F4O4U4Y4]4f4p44444444445/5:5X5l5p5t5555555556 6 6q68 8808<8|888888899 9 999)9:e:w:::::::::::7;<<H>?@@@UrUUVW{W~W     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"&!"&!"&!"&!"&!"&!"&!"&! "&! "&! "&! "&! "&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&! "&!!"&!""&!#"&!$"&!%"&!&"&!'"&!("&!)"&!*"&!+"&!,"&!-"&!."&!/"&!0"&!1"&!2"&!3"&!4"&!5"&!6"&!7"&!8"&!9"&!:"&!;"&!<"&!="&!>"&!?"&!@"&!A"&!B"&!C"&!D"&!E"&!F"&!G"&!H"&!I"&!J"&!K"&!L"&!M"&!N"&!O"&!P"&!Q"&!R"&!S"&!T"&!U"&!V"&!W"&!X"&!Y"&!Z"&!["&!\"&!]"&!^"&!_"&!`"&!a"&!b"&!c"&!d"&!e"&!f"&!g"&!h"&!i"&!j"&!k"&!l"&!m"&!n"&!o"&!p"&!q"&!r"&!s"&!t"&!u"&!v"&!w"&!x"&!y"&!z"&!{"&!|"&!}"&!~"&!"&!"&!"&!"&!"&!"&!"&!"&!"& "&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&!"&+ 70$a %D+12586<1>CHOS0T*Z-[]__(bPbcdOeggh{kknqrr*t6uu%wxUzx6ʇE&d#w=Ա|IRZ/DIkluaY:;$*O38@IMSWs[]ctl`s{@$ז {zĪв*yw hTY z  $'-U4 89x?DHLpPU YHM;4  ] i  @FeFLA-qEk !"#Y$%&k'(0)w*+G,-.t/0123456789:;<=>?@ABC7DEF!GH3IJK?LOMNOPQ;R)S T&U V=WXYZ>["\ ]^_`_ `a bc'd e fghi5j"k#lmnopqrs tu7vgwxyz{Y|}~!"7 GJIBKB%MMIx   #$%+?CDKimnt!"+IJKZ#$%,=>?@Awx$'(~KLVYehtwtu !-5M~5 6 ( ) 2 3 " / = K Z e r s  - 6 : C G H [ b t z    ) 4 8 9 ` j yz@PQasGKLMYlw+,Fev{|7Iz{,-9:P&()*+,-./0kt z#$X567:PQRU[\]`jnor|&'bc|#$39NO\bwx0abs{! N _ e g h !&!'!{!!!!l"m""""###a$$$$$ % % %%%%m%|%}%&& ' '''''''<)))))),*1*2****D+Z+[++ ,,,,--:--a.b.w////-11111*22222222222222`3b3d3e3g3j3l3o3p33334E4j444445555555555596777777777778888 8 888888X8{8888888 999'9H9y999999:}::::";F;n;;;; <3<4<5<6<A<<<<<>=D===============>>>>/>>>>>>>>>>?????/?0?1?4?J?K?L?O?U?V?W?Z?d?h?i?l?v?z?{?~?????????@@@@bBcBeBfBgBBCCCCDDDlDDDDDDDDDDEEEEvEEEEEhFFGHHH:IIISKKKKILLLLLLLL~MMMfNNNOOrPsPyP{P|PPPPPPPPPPPPXQ.RRSSSSSSSS T TTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0TTVV2WjYkY&Z'Z(Z)Z*ZvZZZZZZZZZZZZZZZZZZZ[[[[ [ [[[[[[[[[[!["[#[$[&['[)[*[+[,[-[n[[[[[[-\8\\\\\] ]7]8]B]{]]]]]]]]]u_`aaaaaaaaaaaaabbbbbbb b bbbbbbbbbbb b!b"b#b$b%b&b'b(b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddd d d d d ddddddd~d eeeeeeeeee e!e"e$e&e'e(e*e+e/e1e2e3e5e6e7e8e9e:e;ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeefffffffffffffffffffffffffffffffffffffffffffffggggTgUgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~gggggggggghbhlhmhohqhrhthuhwhxhyh|hhhhhhhhhhhhhhhhhhhhhhhhhhhhibidieigiiijilimioipiqiriwixizi{i|i}i~iiiiiiiiiiiiiiiiiiiiii"k#kDkNkZkhknk{k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk3l@l~llmmm m"m$m&m*m-m/m1m3m6m7mTm^mhmlm{mmmmmmnnn-n;nr@rArZr`rnrrrrrrrrrrrrrrrrrrrrrrrrrbsdsfshsjsmsosssvsys{s~ssssssssssssss ttt't(t)t*ttuu u!u"u#u$u%u&u'u(u)u*u+u,u-u.u/u0u1u2u3u4u5u6u}uuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvwwwwwww w!w"w#w$w%w xxxxxxxxxxxxxxxxxxxxxxxxxxxxJytyyyyy1zUzWzXzYzZz{{{{{|||b}}}}}}~~~uvwxyz<KTlǀ %6DPao!#')+,.012345678ćʇ͇χ )IcƈʈΈ #4FTɉ4>rsNJȊڊ ?DEFGÌŌȌɌˌ͌όьӌ֌،ڌ܌ Wwč͍э׍'7]23l9;=?ABEFIJNPQTUWXZ[_`behikopruvxy{}~Ǒ,8WuĒʒԒBCUgy!"#$%&'()bdfhknqrwy{}Õؕ!)=Ni}'(S`y]^_`abcdefg $'*,/123Jaљ"#$%&!0@Qefʛ̛͛ϛћқԛ՛כ؛ڛۛݛޛ  !"#$%&01YlĜIJ؞wy{|̡0Jiע$L_ӣ 4Gklmnopqrstuvwxyz{|}Yצ3ݩީ@Af̪ͪ:;<=>?@ϫ :u|}ѱԱ "8DMSThklmnouvwxyz{|}~ŴW"()lIĸŸ̸ :>?Ebfguǹ޹%123:MNOVhijkպz{^PQROPQR~.z RSTUVWXYZ3Q~')*+,l6789:;<=>?@ABCD !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGHIJ\]^_`abcdefghklmnoprstvwxyz{|}~Dabcdefghijklmnopqrstuvwxyz{|}~*ATk~+[+>SWnx:U\ht&2=EFP,- &9Bi{(k%,4fg-_ks|v#$kl L/CDuS,-z{|/01XYb:;Eh/0:GXYj<MN7?@AB(`cdefghijkl'SVWXYZ[\]^_`abcdefghijklmnopqrs12>NOijt"#/0Ag}(67Iakl}%&>Ue$XYHZ[\eLMNOPQRSTUVWXYq~ ;:Xv *Hf8Vt6Dn0!G!",#l#m#~$$$$$$S%%%%&V''')d)))+M3N3O3X3t3334.4\4444595e55556<6h6666688888888888:???? @@2@J@W@@@@AA&AOAAAAAAB#B$B%BCCCDDD,FSFTFG IIIVJWJJKKKNL4MMNOxSySSSSSSSUVVVVVVVVVVVVVVWWWW%W7WaWWWWW XXX6XMX_X`XvXXXXXX Y+YPYgYYYY ZZ'ZDZ^ZwZZZZZZ [*[@[][s[[[[[[[[[ \\$\5\>\M\^\l\y\\\\\\\\\\]] ]-]>]G]e]v]]]]]]]]]]]]_5_6_n___&```-aaa4bccccccccdddd'e(eehyhzhiisltllllllm:mYm~mmmmmn4nMnhnnnnnnp"pqr`stttuvv$wpw.x/xxJyKy{{{\}01923?@Aޅ߅xyljҊ !"#$.ϖЖіҖӖԖՖ֖ז  AS]gq{hxyz{stopqrstuvwxyzΥ }~XYZªêĪ&P[T*вP}mٵڵɶMb)*<LM%TU03ŽƽgTUV_qrhijlmnopqrstuvwxy "#@LM[dey#$N?@Astuvwh5GP],-A{7KL`{|A\]u  ;WXqGdf7STfw     *+<=ST"./@AKLNOPQRSTUVWXYZ[\]^_`abcdefgh:VWg1h|2MN`at(Rl Ayz.LA_mA!G7 ;TUgMST&'XYs67LM/_*fghk+,-tHI^t(nCDE]^_`67jk+:;>TVyzFGq2YZgt!">]"n =Ry]~FGHIJKLMNOPQRSTUVWXY  KLXf89z           L _ y                  3 5 ^ _ k        2 8 j k l +-=>JSg $%2ci5`adz|:GHnqG Gtuvwxyz,.mnzZ[\/l=>AWY 1>V\567:PRbcox 1 I J W    !!!!!!!!! ""7"@"["h"i"m""#V######################$$$$$$$$$ $.$/$3$%%%%&*&+&f&g&&&&&!'`'a''''''''''''''''''''''''''''''8)9)O)P)))))))-*.*******3+4+P+Q+i+x+++P,Q,g,i,j,,,,,--- - - - - -------.9/M/N/d/f/v/w//////0<0`0y00002222233V3e3f3x3y33334,4-4E4T4U4Y444444444555-5.5@5P5W5X5]566%6=6J6K6l666666666/707F7H7l7n7777777788 8 8W8X8n8p88888893949T9999999;::: ;N;t;u;;;;;;<<Q<p<<<<<<<!=(=A=E=q=r======#>)>Q>c>>>>>>>>>?7?F?J?x?|??@"@#@*@1@d@l@s@t@@@@@@3>3>3>3>3>3>3>3>3>3>3>3>3>Y3>3>3>3>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$[ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+$$$$$$$$$$$$$$$$$$$$\K$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$nb nb nb nb nb nb nb nb nb nb $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$1$ $ $$$$ $$$$ $$ $$$$$ $$ $$ $$ $$$ $ $ $$ $ $$۷$$ $$$$$$$.%;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$nb nb nb nb nb nb nb nb nb nb $$[$$$D($$$$$$$$=Y$$zY$$$ Y$$ Y$$$ $$$$$$ $ N $$ $$ $ $$ Y$ 4 $$ n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $"y2$$$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$Y$Y$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$Y$Y$Y$Y$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&& "$$$$$$$$$$$$$$ 4 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$P$$$$$$$$$$$$$f$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$ $ $$$ $$$$N $8  $ $$$Y$$$$$$$ $$$$$$$$$ $$$$$$$$N $$ $$$Y$Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$e$$$$$T$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$$$$$$$ Y$ Y$ Y$ $$$$$$$$$$ ۷$$$$$۷$"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"۷$l $$ $ $$ $Y$Y$$$$$$$$$U#^ $$$$$$$$$$$$9!9!hl $$$ˋ$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$ ?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ۷$$$$\ $\ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdefghijklmnopqrstuvwxyz{|}~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ˋ$$$$$$$$$$$$$$$$$$$$$$$$Y$$$$$$$ 11$ 11$ 11$U#1 $g 1K0$ 11$ 11$$11$11$$l 1c$ 11$'!1+ $ 1 $$$ 1$ 1$1$$$Y$$ 1W$$$$$$$$$ˋ$$$ 11$ 11$#1$ 11$ 11$ 11$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$Y$Y$Y$$$$$ 1$$$$$$u!1$$$$$$$$$$$$$$$$$$$Y$m9  9 $$$uF$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$$$$$$$$$$ 1$&$$1$1$$B8  11$$ 1$$ 1 $/#1-g$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$C}#$1WL$$$$$$$$$$$$$$$$$$$$$$$$w  11$ 11$ 11$F$1+ $ "1$$13$$$$$$($1?W$>$$$$$$$1Q%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y$ 1$ 1$N  1]$ 1]$u!1+ $$$$$$ 11$$Z11$$"1$$u!1+$$$$$$$$$$$$$$$$$$$$$$$$Y$$$$ 1]$ "1$$1]$F$1$WF$1$"1# $"1#$$$F$1$YY1$@$11$1c$$ 11$ 11$ 1 $$$$$$$$$$$$$$$$Y$$F$1'$$$$$$$$$$F$1+$$$$$$$$$$$$$41~E;$$$$$$$$$$$$$$$$#1 $$$$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$$$1$1$u!1]$$$$$$$$$$$$$$$$$$$$$$$$7$7$$$1}2$$$Y$$$ 5&1$$$$$$$$$$$ 11$$ 11$$$("1 $D%1 $$$$$$$ 11$$$$$$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$$T$G"16$$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$ 11$$:v#$$$$$1 $Z1c$$$ 1$$$$$$$1c$$$$$$$$+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$` $$Y$$$7$g=$$ v:u:$$#1$S$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$^$$^$   #$%+?CDKimnt!"+IJKZ#$%,=>?@Awx$'(~KLVYehtwtu !-5M~5 6 ( ) * 2 3 " / = K Z e r s  - 6 : C G H [ b t z    ) 4 8 9 ` j yz@PQasGKLMYlw+,Fev{|7Iz{,-9:P&()*+,-./0kt z#$X567:PQRU[\]`jnor|&'bc|#$39NO\bwx0abs{! N _ e g h !&!'!{!!!!l"m""""###a$$$$$ % % %%%%m%|%}%&& ' '''''''<)))))),*1*2****D+Z+[++ ,,,,--:--a.b.w////-11111*22222222222222`3b3d3e3g3j3l3o3p33334E4j444445555555555596777777777778888 8 888888X8{8888888 999'9H9y999999:}::::";F;n;;;; <3<4<5<6<A<<<<<>=D===============>>>>/>0>>>>>>>>>>?????/?0?1?4?J?K?L?O?U?V?W?Z?d?h?i?l?v?z?{?~?????????@@@@bBcBeBfBgBBCCCCDDDlDDDDDDDDDDEEEEvEEEEEhFFGHHHH:IIISKKKKILLLLLLLL~MMMfNNNOOrPsPyP{P|PPPPPPPPPPPPXQ.RRSSSSSSSS T TTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0TTVV2WjYkY&Z'Z(Z)Z*ZvZZZZZZZZZZZZZZZZZZZ[[[[ [ [[[[[[[[[[!["[#[$[&['[)[*[+[,[-[n[[[[[[-\8\\\\\] ]7]8]B]{]]]]]]]]]]#^u__`aaaaaaaaaaaaabbbbbbb b bbbbbbbbbbb b!b"b#b$b%b&b'b(b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddd d d d d ddddddd~d eeeeeeeeee e!e"e$e&e'e(e*e+e/e1e2e3e5e6e7e8e9e:e;ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeefffffffffffffffffffffffffffffffffffffffffffffggggTgUgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~ggggggggggghbhlhmhohqhrhthuhwhxhyh|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhibidieigiiijilimioipiqiriwixizi{i|i}i~iiiiiiiiiiiiiiiiiiiiii"k#kDkNkZkhknk{k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk3l@l~llmmm m"m$m&m*m-m/m1m3m6m7mTm^mhmlm{mmmmmmnnn-n;nr@rArZr`rnrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrbsdsfshsjsmsosssvsys{s~ssssssssssssss ttt't(t)t*ttuu u!u"u#u$u%u&u'u(u)u*u+u,u-u.u/u0u1u2u3u4u5u6u}uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvwwwwwww w!w"w#w$w%w xxxxxxxxxxxxxxxxxxxxxxxxxxxxJytyyyyy1zUzWzXzYzZz{{{{{|||b}}}}}}~~~uvwxyz<KTlǀ %6DPao!#')+,.012345678ćʇ͇χ )IcƈʈΈ #4FTɉ4>rsNJȊڊ ?DEFGÌŌȌɌˌ͌όьӌ֌،ڌ܌ Wwč͍э׍'7]23l9;=?ABEFIJNPQTUWXZ[_`behikopruvxy{}~Ǒ,8WuĒʒԒBCUgy!"#$%&'()bdfhknqrwy{}Õؕ!)=Ni}'(S`y]^_`abcdefg $'*,/123Jaљ"#$%&!0@Qefʛ̛͛ϛћқԛ՛כ؛ڛۛݛޛ  !"#$%&01YlĜIJ؞wy{|̡0Jiע$L_ӣ 4Gklmnopqrstuvwxyz{|}Yצ3ݩީ@Af̪ͪ:;<=>?@ϫ :u|}ѱԱ "8DMSThklmnouvwxyz{|}~´ôĴŴW"()lIĸŸ̸ :>?Ebfguǹ޹%123:MNOVhijkպz{^PQROPQR~.z RSTUVWXYZ3Q~')*+,.l6789:;<=>?@ABCD !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGHIJ\]^_`abcdefghklmnoprstvwxyz{|}~Dabcdefghijklmnopqrstuvwxyz{|}~*ATk~+[+>SWnx:U\ht&2=EFPe,- &9Bi{(k%,4fg-_ks|v#$kl L/CDuS,-z{|/01XYb:;Eh/0:GXYj<MN7?@AB(`cdefghijkl'SVWXYZ[\]^_`abcdefghijklmnopqrst12>NOijt"#/0Ag}(67Iakl}%&>Ue{$XYHZ[\eLMNOPQRSTUVWXYq~ O :;:Xv *Hf8Vt6Dn0!G!",#l#m#~$$$$$$S%%%%&V''')d)))*+M3N3O3X3t3334.4\4444595e55556<6h6666688888888888:???? @@2@J@W@@@@AA&AOAAAAAAB#B$B%BCCCDDD,FSFTFG IIIVJWJJKKKNL4MMMNOxSySSSSSSSUVVVVVVVVVVVVVVWWWW%W7WaWWWWW XXX6XMX_X`XvXXXXXX Y+YPYgYYYY ZZ'ZDZ^ZwZZZZZZ [*[@[][s[[[[[[[[[ \\$\5\>\M\^\l\y\\\\\\\\\\]] ]-]>]G]e]v]]]]]]]]]]]]_5_6_n___&```-aaa4bccccccccdddd'e(eehyhzhiisltllllllm:mYm~mmmmmn4nMnhnnnnnnp"pqr`stttuvv$wpw.x/xxJyKy{{{\}01923?@Aޅ߅xyljҊ !"#$.ϖЖіҖӖԖՖ֖ז  AS]gq{hxyz{stopqrstuvwxyzΥ }~XYZªêĪ&P[T*вP}mٵڵɶMb)*<LM%TU03ŽƽgTUV_qrhijlmnopqrstuvwxy "#@LM[dey#$N?@Astuvwh5GP],-A{7KL`{|A\]u  ;WXqGdf7STfw     *+<=ST"./@AKLNOPQRSTUVWXYZ[\]^_`abcdefgh:VWg1h|2MN`at(Rl Ayz.LA_mA!G7 ;TUgMST&'XYs67LM/_*fghk+,-tHI^t(nCDE]^_`67jk+:;>TVyzFGq2YZgt!">]"n =Ry]~FGHIJKLMNOPQRSTUVWXY  KLXf89z           L _ y                  3 5 ^ _ k        2 8 j k l +-=>JSg $%2ci5`adz|:GHnqG Gtuvwxyz,.mnzZ[\/l=>AWY 1>V\567:PRbcox 1 I J W    !!!!!!!!! ""7"@"["h"i"m""#V######################$$$$$$$$$ $.$/$3$%%%%&*&+&f&g&&&&&!'`'a''''''''''''''''''''''''''''''8)9)O)P)))))))-*.*******3+4+P+Q+i+x+++P,Q,g,i,j,,,,,--- - - - - -------.9/M/N/d/f/v/w//////0<0`0y00002222233V3e3f3x3y33334,4-4E4T4U4Y444444444555-5.5@5P5W5X5]566%6=6J6K6l666666666/707F7H7l7n7777777788 8 8W8X8n8p88888893949T99999999;::: ;N;t;u;;;;;;<<Q<p<<<<<<<!=(=A=E=q=r======#>)>Q>c>>>>>>>>>?7?F?J?x?|??@"@#@*@1@d@l@s@t@@@@@@bHbIbRbTb]b_b`bebjbobpbvbwbbbbbbbbbbccc#c$cDcMcOcXcZcfcrcsczc{ccccccccdd"d8dNdOdYdZd[dedfdddddddddddddd e-e?eReSe]e^eqeeeeeeeeeeef f0f8fAfGf^fdfoffffffffffff gggg%g*g4g?g`gaggghgqgrgxgyggggggggggggggghh"h=hOhPhZh[h`hehthzh{hhhhhhhhhhhhhhi ii'i1i?i@iJiKiaiiiiiiiiiiiiiiiiiij4jRjwjjjjjjkk5kTkUk[k\kkkkkkkkkkk$lNlnlllllllllllllllmmm#m$m%m3m4m5m@mAmBmMmNmOmZm[m\mmmmmmmmmmnnnnnKpLpVpWpppppppq&qLqqqqqqr1rZr[rarbrqrrr|r}rrrrrrrrrrrss#s$s)s*sFsGsJsKsNsOsRsSsVsWsZs[s^s_s{s|ssssssssssssssssssst+tFt\ttttttttuuu.u/uIuUubuuuuuuuuuuuuu v vvvv?v]vxvvvvvvw/w0w:w;w_w`wawdwewhwiwowpwwwwwwwwwwwxxxx6x7x:x;x>x?xBxCxFxGxJxKxNxOxUxVxxxxxxy$ySyiyyyyyyyyyyz1z2zjzyzzzzzz {3{4{l{{{{{{{{{{{{{{{{ | ||||| |!|3|4|:|;|A|B|H|I|o|p|u|v|y|z|}|~|||||||||||}}.}6}J}R}}}}}}*~+~5~S~`~m~z~~~~~~~4AN[,-9>[crsր׀  C`vƁ܁EK|Ȃׂ"0>Lnouṽ̓ЃуBaӄلEOk{Ʌ  /Lh,-6RbՇև܇݇:;>?HIZ[ab{|ۈ5Splj؉8B12=zWnɌ6MavԍՍۍ܍;WXÎĎَڎ:;>?EF\lmz{ُڏ   !$%-.34:;OP\]^ghituv{|}ҐӐ  %&,-34<=Ro‘őƑɑʑґӑܑݑ  :;@AGH[\fgnoĒŒْؒܒݒ56NO\]klqruvyz͓ۓܓݓޓ>m̔?Epqwx()=>STijmnqruvyzŖ֖]opїҗ#$45LMRSVWZ[efou~Ә+l|ǙЙՙ֙9_wÚ2?GMr/2PehΜ%:=[psѝ ()Ll.>_iڟ!1Rz{:Xfsáѡޡ .WXYcŢۢ(;Natɣգ+:Roxä֤&ϥ$/:EOPצ 4Gklvͧߧ  8Of -Me7Qct/>Hciou{Ĭ@Nkyϭ߭ @z !$%()./<=JKst~ůƯ̯ͯ֯ׯ.D[sװ  $7DENTVXZ\^_hip{ıűȱɱֱ   !$%()]^޲߲  4ILpq}ѳ=RUƴдܴ000 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000(00000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000000000000000000000000000000000000000000000000000000 0 00 0 00000 0 0000#0# 0# 0#0#0# 0# 0#0#0#0#0#0# 0# 0#0#0# 0# 0#0# 0# 0#0# 0# 0#0#0# 0# 0#0#0#0# 0# 0#0# 0# 0#0# 0# 0#0#0# 0# 0#0# 0# 0#0#0# 0# 0#0#0# 0# 0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000>0>0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0> 0>0>0>0>0>0> 0> 0>0>0>0>0>0>0>0>0> 0> 0>0>0> 0> 0>0>0>0> 0> 0>0>0> 0> 0>0>0>0> 0> 0>0>0>0>0>0>0> 0> 0>0>0> 0> 0>0>0> 0> 0>0>0> 0> 0>0> 0> 0>0>0> 0> 0>0> 0> 0>0>0> 0> 0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0> 0> 0>0> 0> 0>0>00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k 0k0k0k0k0k0k0k0k 0k 0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k 0k 0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k 0k 0k0k 0k 0k0k 0k 0k0k 0k 0k0k 0k 0k0k 0k 0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k 0k 0k0k0k 0k 0k0k0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 0000000000000000000000000000000000000000000000000 00000 000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000}0}0}0}0}0}0}0} 0} 0}0} 0} 0}0} 0} 0}0} 0} 0}0}0}0}0}0}0}0}0}0}0} 0} 0}0}0}0}0} 0} 0}0} 0} 0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0} 0} 0}0} 0} 0}0}0} 0} 0}0} 0} 0}0}0} 0} 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000 0 000000000000000 0 000000000000000000000000000000000000000000 0 00000 0 000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdefghijklmnopqrstuvwxyz{|}~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0000 0 00 0 00 0 00 0 000 0 00 0 00 0 000 0 00 0 000 0 00 0 00 0 00 0 0000 0 00 0 00000Y0Y0Y 0Y 0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y 0Y 0Y0Y 0Y 0Y0Y 0Y 0Y0Y 0Y 0Y0Y 0Y 0Y0Y 0Y 0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0000000000{0{ 0{ 0{0{0{0{0{0{0{ 0{ 0{0{0{0{0{0{0{0{0{0{0{0{0{0{0{0{0{0{00Y0Y 0Y 0Y 0Y0Y0Y 0Y 0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y0Y00(006(0000(000!00!00! 00! 00!00!00!00! 00! 00!00!00!00! 00! 00!00!00! 00! 00!00!00! 00! 00!00!00! 00! 00!(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00606060606060606060600808 08 08080808080808080808080808080808080808080808080808 08 0808 08 0808 08 0808 08 0808 08 0808 08 (080K0K0K0K00M0M 0M 0M0M0M0M0M0M0M0M 0M 0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M00]0] 0] 0]0] 0] 0]0] 0] 0]0] 0] 0]0] 0] 0]0]0]0]0]0]0] 0] 0]0]0] 0] 0]0]0] 0] 0]0]0] 0] 0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]00p0p0p0p0p 0p 0p0p 0p 0p0p0p 0p 0p0p 0p 0p0p 0p 0p0p 0p 0p0p 0p 0p0p0p0p 0p 0p0p0p 0p 0p0p 0p 0p0p 0p 0p0p0p 0p 0p0p 0p 0p0p 0p 0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p00$0$0$ 0$ 0$0$0$0$0$0$0$0$0$0$0$ 0$ 0$0$0$0$0$0$0$0$0$0$0$0$0$0$ 0$ 0$0$ 0$ 0$ 0$ 0$0$ 0$ 0$ 0$0$ 0$0$0$0$0$0$ 0$ 0$0$0$00000000000z0z0z0z 0z 0z0z 0z 0z0z 0z 0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z 0z 0z 0z 0z0z0z 0z 0z0z00P0P0P0P 0P 0P0P0P0P 0P 0P 0P0P0P0P0P0P 0P 0P0P0P 0P 0P0P0P0P 0P 0P0P 0P 0P0P0P0P0P0P0P0P 0P 0P0P0P0P0P0000000000000000 0 00000000000000000000000000000000000000000 0 00000000 0 00 0 0000 0 00000000 0 0 0 0 00 0 0 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0000& 0& 0&0&0& 0& 0&0& 0& 0& 0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&00&000&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0& 0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0@0ي00@0ي00@0ي00@0ي0000h0  @0@0@000@0ي000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000H00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`60`6h026   #$%+?CDKimnt!"+IJKZ#$%,=>?$(~htw5M~6 ( / = K Z e r - 6 : C G [   ) 4 ` j GYlwFev|I,-9:P&0kt z#$X567:PQRU[\]`jnor|&b|0as{ !&!'!{!!!!l"m""""##a$$$$$ % % %m%|%}%& ' '''''''))))),*1*2****D+Z+[+ ,,,,--:--a.b.w////-11111*222344445X8;;; <3<<<<>=D===>>>>/>>>>>>>>>?????/?0?1?4?J?K?L?O?U?V?W?Z?d?h?i?l?v?z?{?~?????????@@bBcBeBCCDDDlDDDDDDDDDDEEEEvEEEEEGHHH:IIISKKKKILLLLLLLL~MMMfNNNOrPsPSTVV2WjYkY&Z'Zn[\\] ]7]{]]]]fffffffTgUgk3l@lmTmhmlm{mmmmnnn-n;n?Ebfguǹ޹%123:MNOVhij^PROP~.R'l7+[SWnx:\ht&2=EFPe (k-|v#$kl L/CDuS,-z{|/01Xb:;hGXYj<MN7?@(`'SVWXYZ[\]^_`abcdefghijklmnopqrst12>NOijtAg}(67Ial}>Ue{$XHZ[\eLMNOPQRSTUVWXYq~ O :;8Vt6Dn0!G!",#l#m#$$$$S%%%%&V'''d)))+M3N3O3t3<6h66668888:?? @AAAB%BCCCDDD,FSFTFG IIIVJWJJKKKNL4MNOxSySSUVV7W*[@[][s[[[[]]]]]_5_6_n___&```-aaa4bccccccccddd'e(eehyhzhisltlhnnnnp"pqr`stttuvvpw.x/xxJyKy{{{\}01923Aޅ߅xyljҊ.AS]gq{hxstopΥ }~XY&PвP}mٵڵɶ<LM%TU3ŽƽgTUV_qrhij "#@LM[dey#$N?@Ash5GP]     *<"./@abcdefgh2gMS&'XYs67LM/_*fg+,-tHI^t(nCD]`67jk+:;>TVyzFGq2YZgt!">]"n =Ry]~F  KLXf8z         L _ y        3 5 ^ _ k        2 8 j +-=>JSg $%2ci5`adz|:GnqG Gt,.mnzZ/l=>AWY 1>V\5:PRbcox 1 I J W   !!!!!!!!! ""7"@"["h"i""#V###########.$%%%%&*&+&f&g&&&&&!'`'a'''8)9)O)P)))))))-*.*******3+4+P+Q+i+x++P,Q,g,i,j,,,,,-.9/M/N/d/f/v/w//////0<0`0y00002222233V3e3f3x3y33334,4-4E4T444444444555-5.5@5P5W566%6=6J6K6l6666666/707F7H7l7n7777777788W8X8n8p88888893949T99999;::: ;N;t;;;;;;<<Q<p<<<<<<<!=(=A=E=q=r======#>)>Q>c>>>>>>>>>?7?F?J?x??@"@#@*@1@d@l@s@t@@@@@@[cr܁EK"0>LnBӄلEOkɅ /RbՇnɌ6Mavԍ͓ۓ?EpŖ]ou~+l|ǙЙ֙9GMrPehΜ[psѝ ()Ll.>_iڟ!1Rz{: .Wۢ(tɣգ+:Roxä֤ϥ$/:EO 4Gk 8OfMe/>H@zͯׯ.D[s                          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  װ  $7DNTVXZ\^_p{ 4ILpq}=RUƴдܴb00@ 00000000 00000000 00000000 00000000 00000000 0 00 00 000 0 00 00 000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0 00 00 000 0"00"00"000 @0pۊ00xS@0(ۊ00hSۊ00ۊ00ۊ00ۊ00ۊ00ۊ00@0ۊ00 ۊ0 0 Sۊ0 0 ۊ0 0 ۊ00ۊ00@0ۊ0Z0z@0@0@0ۊ00  Sۊ00 ۊ00ۊ00ۊ00FU@0Pۊ00@000 @00000@0P0000ۊ00 GUۊ00 @0ۊ00 00000ۊ0'0 (@ecۊ0'0ۊ0'0ۊ00ۊ0000ۊ0-0ۊ0-0ۊ00ۊ00@0ۊ020 3Pۊ020ۊ020ۊ00@0ۊ070 8LF6ۊ0A0ۊ0A00@0@0ۊ0B0ۊ0B0@0@0@0@0@0ۊ0B0CpPۊ0B0ۊ0B00ۊ0H0IG6@0ۊ0I00ۊ0L0@0@0Pۊ0T0ۊ0T0ۊ0S0ۊ0S0ۊ0X0ۊ0X0ۊ0S00@0@0@0ۊ0_0`Qۊ0_0ۊ0_00ӊ00/-ӊ00ӊ000000ۊ00@000ۊ00@0@0@0ۊ00 @0@0@0@0@0@0@0ۊ00@0@0@000000000 00000000 00000000 00000000 00000000 0 00 00 000 0 00 00 000 00000000 00000000 00000000 @0@0ۊ0c0ۊ0c0@0ۊ0g0h@0ۊ0h0ۊ0f0ۊ0f0ۊ0f0gPQۊ0f0ۊ0f00ۊ0j0kQۊ0j0ۊ0j00ۊ0n0 K00K00 K00K00K00 K00ۊ0u0K000K00K00 K000K00NK00NK00NK00K00NK00NK00NK00K00NK00NK00NK00K00NK00NK00K00NK00NK00K0 0NK0 0NK00K0 0NK0 0NK00K00NK00NK00NK00NK00K00NK00NK00K00:K00:K00K00:K00:K00K00:K00:K00K00:K00:K00:K00K00:K00:K00:K00@0@0@0@0@0@0@0@0@0ۊ00xۊ00ۊ000000@0ۊ00 ۊ00ۊ000000000000000000@0ۊ00cۊ00bۊ00`K00K0000000000 00000000 00000000 00000000 00000000 0 00 00 000 0 00 00 000 00000000 00000000 00000000 ӊ00@0K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K0 0K0 0K0 0K0 0K00K0 0K0 0K0 0K0 0K0 0K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00@0K00@0ۊ01P&ۊ01ۊ0100 K00@0ۊ01ۊ0100 ۊ01(ۊ01ۊ0100 K00K00K00K00K00K0000 @X3@X3@0x01#!01"01 K0001@0@0ۊ0 1"ۊ0 1 K00ۊ01K00 ۊ01 ۊ01K00K00K00K00K00^K00^K00ۊ01ۊ0101a@0@0@0@0@0ۊ02ۊ0201aۊ028U-@0 ۊ02@0@0@0@001a$x01`01^0101ۊ01ۊ01ۊ0 1\ۊ01ۊ01ۊ0#1\ۊ0$1_%'xۊ0$1^ۊ0$1\00aۊ0D1E,ۊ0D1~ۊ0D1|K00ۊ01K00K00K00ۊ0+1]ۊ0+1[K00ۊ01ۊ01ۊ01ۊ01ۊ01ۊ01ۊ01K00@0ۊ01$ۊ01ۊ01K00K00K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K00K0 0^K0 0^K00K00^@0ۊ061 7d'ۊ061 ۊ061K00K00@0ۊ0<1 = (ۊ0<1 ۊ0<1K00K00K00^K00K00K00 K00ۊ01R5ۊ01Qۊ01Oۊ01Fۊ01Gۊ01Fۊ01DK00K00@001G6ۊ01Fۊ01DK00K00@0ۊ01Gh7ۊ01Fۊ01DK00K00@0ۊ01Fۊ01DK00K00ۊ01T8ۊ01Sۊ01Qۊ01Fۊ01Gۊ01Gۊ01G8ۊ01Fۊ01DK00K00K00K00@0ۊ01Gp:ۊ01Fۊ01DK00K00K00K00@0K00K00@0ۊ01G;ۊ01Fۊ01DK00K00@0ۊ01GL<ۊ01Fۊ01DK00K0001G01F01DK00K00@001G01F01DK00K00ۊ01G>ۊ01Fۊ01DK00K00K00ۊ01EK00K00K00@0ۊ01G?ۊ01Fۊ01DK00K00@0ۊ01G@ۊ01Fۊ01DK00K00K00^K00^K00^K00^K00^K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00^K00K0 0^K0 0^K0 0^K0 0^K00K0 0K0 0 K00@0@0K00K00K00K00K00@0ۊ02cۊ02ۊ02K00ۊ02K00K00ۊ02m-ۊ02K00K00^K00K00K00 K00K00K00^K00^K00K00^K00^K00K00K00K00 K00K00^00000000 00000000 00000000 00000000 00000000 0 00 00 000 0 00 00 000 00000000 00000000 00000000 00000000 K00^K00^K00ۊ02ۊ02@0K00ۊ026 IK00ۊ0 23K00K00K00 K00ۊ0"2@0K00K00K00^K00^K00K00^K00^K00ۊ0;3< w-ۊ0;3ۊ0;30,2K00K00K00^0,2K00000000@0#00K00^K00^K00 K00@0ۊ082 9Lۊ082@0ۊ062ۊ062ۊ0627Kۊ062ۊ062ۊ092 :Lۊ092 @0@0ۊ0:2;,Lۊ0:2ۊ0:20@0@ۊ0B2C Mۊ0B2ۊ0B20ۊ0F2G|Mۊ0F2@000@08ۊ0$3^%hۊ0$3]ۊ0$3[ۊ0L2ۊ0(3_)Tiۊ0(3^ۊ0(3]@000@00ۊ0.3_/iۊ0.3^ۊ0.3\00ۊ023_3ljۊ023^ۊ023]0080000ۊ0L2MNۊ0L2ۊ0L200K00^K00^K00^K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K00K0 0^K0 0^K00K00^K00^K00^K00K00^K00^K00K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00^K00^K00K00^K00^K00@0@0K00^K00^K00^K00^K00@00f3gp0f30f3K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K00K0 0K0 0 K00@08ۊ03tۊ03ۊ0300ۊ03008@0ۊ03uۊ03ۊ030ۊ03ۊ03ۊ03@0000000000000000000000000000000000@000000000@0iY00 00@000000 00 000@0000000@0P00000000000000@000,00000000000"0#0"0@00000000000@0ي014Bي014@I00I00K00^K00^K00ۊ03@0K00K00^K00^K00 K00ۊ03ۊ03@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K00^K00^K00^K00^K00ۊ03.K00^K00 K00@0@0ۊ038~ۊ03ۊ030K00^K00^K00^K00K00K00K00K00K00K00K00K00^K00K00^K00^K00K00^K00^K00^K00^K00K00^K00^K00^K00K00^K00^K00K0 0^K0 0^K00@0@0ۊ0 4`ۊ0 4ۊ0 4@0@0ۊ04 ۊ04ۊ04K00K00K00^K00@0Hۊ04$ۊ04#ۊ04!K00K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K00K0 0^K0 0^K00@0@0@0K00^K00^K00^K00@0K00K00 K00@0ۊ0=4>Ћۊ0=4ۊ0=4@0@0@0@0ۊ0D4Eۊ0D4ۊ0D40K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K000X4YĎ@0ۊ0Y4K0 0K0 0K0 0^K0 0^K00K0 0^K0 0^K00K00^K00^K00^K00K00^K00 K00ۊ0j48kēۊ0j47ۊ0j45K00@0K00^K00^K00^K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K00K0 0^K0 0^K00K00^K00^K00K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00^K00K00^K00^K00K00^K00^K00@0@0K00^K00^K00^K00^K00K00^K00^K00K00^K00^K00^K00^K00K00^K00^K00^K00^K00^K00^K00^K00^K00^K00^K00^K00^K00^K00 K00@0@0K00^K00^K00^K00^K00^K00K00^K00^K00K00^K00^K00ۊ04 `ۊ04 @0K00@0ۊ04 ۊ04 ۊ04K00K00K00^K00^K00^K00@0@0K00^K00^K00^K00^K00^K00K00^K00^K00^K00^K00^K00^K00K00^K00^K00^K00K00^K00^K00^K00K00^K00^K00K0 0^K0 0^K0 0^K0 0^K00@0@0@0K00^K00^K00^K00^K00^K00@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K00^K00^K00^K00K00^K00^K00K00^K00^K00K00^K00^K00K0 0^K0 0^K0 0^K0 0^K00@0@0@0@0@0@0@0ۊ025.3ۊ025-ۊ025+ۊ035!p@0p@0p@0p@0p@0p@0pۊ035!4ۊ035 ۊ035K00K00K00K00K00K00K00K00K00ۊ0H59I ۊ0H58ۊ0H56ۊ0I5!@0@0@0@0@0@0ۊ0I5!J(ۊ0I5 ۊ0I5K00K00K00ۊ0X54Y̭ۊ0X53ۊ0X51ۊ0X5/ۊ0X50ۊ0X50ۊ0X5/ۊ0O5'ۊ0O5&ۊ0O5&@0ۊ0P5 ۊ0P5 ۊ0P5!Qۊ0P5 ۊ0P5K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00@0ۊ0{5)|ۊ0{5(ۊ0{5&K00K00K00K00K00K00^K00^K00^K00^K00^K00K00^K00^K00^K00K00^K00^K00^K00@0T@0T@0T@0T@0T@0T@0T@0T@0T@0T@0T@0T@0T@0TK00K00@0K00@0@0@0@0@0@0@0K0 0 x#@0@0@0@0@0@0@0@0@0@0@0@0@0K00`D%@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K020@0K0405|J-@0@0@0@0@0@0@0@0@0 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K0v0wT̅@0@0@0@0@0@0@0@0@0@0@0@0@0K00K00@0K00\@0@0@0 @0 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K00@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K0b1K0b1@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00K00 @0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0 @0 @0 @0 @0@0@0@0@0@0@0@0@0 @0@08M0@@0ۊ00Hۊ00ۊ00 0 0@0ۊ00 ,Eۊ00 ۊ00ۊ00x@0x@0xۊ00xQۊ00ۊ0000 0@0ۊ00&!ۊ00ۊ000@0ۊ00ܺ_ۊ00ۊ00`|L,)ۊ0=1 ۊ0=1 0K20K20K20K2@0@00728K072072@0ۊ0z1{000@0ۊ0~1$1ۊ0~1ۊ0~100@0ۊ011ۊ01ۊ0100ۊ01X2@0ۊ010000ۊ013@000ۊ013@0ۊ010000ۊ01P4@000ۊ015@0000ۊ015@0ۊ015ۊ01ۊ01000@0ۊ01ۊ01000H *SSSV $ "X.J!#$:%c&-034x69:>VBHIhN@RVT\^_,czghm,op.ruBwzJPxH&ȧj\¯ƲBbbG6ŻN:L&#dD(*~$fEr p  CXZ0!y#|(d*F/1=45788U9>2?@4DGrIJMNRRYSSVd]Dae$gip\v.y|р$Ə<\6{ 02^f  p&,R5>E&HPY`PfvQ}İ*@h̯~RL4t`z4bZ0v< &4?PGNB]tdtl*x|d_bhoqsuwxz|~   !#%*,.124579:<>@ADFHILMOPSUWXY[\^abcghjlnoqstv{ #'*149<CEGKNPRUWY[_aeilnrz  C t + $ ? 2H #%X*/1444575M5568;<?BCDGIFILMrN#OQnSUX^agko-rHrvrrrrrBwz||}$~ND<*ޣRƲ<xZ3-[pƿRlDcRlD:6JTnu2Q  $`o&6']'+1)46m7J9:;= >R>>>.?l???5DGJMNRRSTW}addef`ffm$p@p]p'qvPwy~0>X|:wlr6cnק4n. n@,B "/"y#/Q5`57W:;*?BZDEF IOS:U^=a d&enjouyD}|}}ΈL&|B88rlکֵJ&`x 4.#+0^7b<TBK QnW`]`gfh2q|wjڄz2h*`&B$@d64&H" 4 "<(+*378J9:<=z?rC|EjHINRW\`bhgtlbrwyL{|d`cdefgijklmnprtvy{}   "$&'()+-/0368;=?BCEGJKNQRTVZ]_`defikmpruwxyz|}~     !"$%&()+,-./0235678:;BDFHIJLMOQSTVXZ\]^`bcdfghjkmopqstuvwxy{|}~ba Gv,222tuuuuuvwww x xRfhlԞ֞NPY̥Lצ!#3}'qs 4q\4FZ\auw~= =Ohj.xz  1 { }  !!K7}77~BBBEEFvLLLfff@ɶdf\gn9IoX:CC:CC:::::::CCCCCCCCXXXXX::::CCXCCCCCCXXXXXXCCXCXXXCX&18<ALPV!!h|~QRR~W:::D@\(  B    B    B    B    NB  S DNB  S DNB  S DB    Q Br    b Br    a B    V h  # C"?T  NB  S DSNB  S D_t  C   C"?`  H  # U  NB  S DRn  3 C"?^ NB  S D]n  3 C"?\ B   [ B    Z  B    c  NB  S DYNB  S DXNB   S DWB !  d B "  g B #  f B $  o B %  l HB '@ C DeNB ( S Dnb * C *"`k b + C +"`j B ,  r B .  u NB / S DqNB 0 S DtB 1  s HB 2 C DiHB 3 C DhNB 4 S DmNB 5 S DpB J  != !B K   ?  B L  E B M  K B N  J B O  N B P  P NB Q S DONB R S DANB S S D>HB T@ C DGNB U S DFHB V C DDNB W S DCHB X C DHHB Y C DIHB Z C DMNB [ S DLh \ # "C"?B "h ] # #C"?@ #B r  ,p ,B s  +r +B t  *t *B u  )v )B v  (z (B w  '| 'B x  & &NB y S DsNB z S DuNB { S DyNB | S D{NB } S D~HB ~@ C D}HB  C DxNB  S DwNB  S DqB   % %H  # $ $H  # - -H  # . .B   / /B   0 0NB  S DHB @ C DHB  C DNB  S DNB  S DNB  S DNB  S DNB  S DB   2 2B   1 1B   3 3B   4 4B   5 5B   6 6B   7 7B   8 8B   9 9NB  S DNB  S DNB  S DNB  S Dh  # :C"? :HB @ C DHB  C DNB  S DNB  S DNB  S DNB  S DB   = =B   ; ;B   < <B   > >B   ? ?B   @ @B   A AB   B BB   C CB   D DHB @ C DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DV  # E"` EV  # F"` FB   G GNB  S DHB  C DB   H HB   I IB   J JB   K KB   L LB   M  MB   N NH  # O OB   P PB   Q QB   R RNB  S DB   Sv SB   Tx TB   U{ UB   V VB   W WNB  S D~NB @ S D}NB  S DwNB  S DzV  # X"`| XV  # Y"`y YB   Z ZB   [ [B   \ \B   ] ]B   ^ ^B   _ _B   ` `HB @ C DHB  C DNB  S DNB  S DNB  S DNB  S DNB  S DV  # a"` aN  3 b bB   c cB   f  fBr   g  gB   h hBr   i iNB  S DNB  S DNB  S D NB  S DB   j jB   k  kB   m mB   l lB   n nB   o oB   p pNB  S DNB  S DNB   S DNB   S DB    q qB    r rB   s  sB   t" tB   u$ uB   v& vB   w) wB   x+ xB   y- yB   z/ zB   {1 {B   |3 |B   ~5 ~B   }8 }B   ; B   7 NB  S DNB ! S D!NB " S D#NB # S D%NB $ S D'NB % S D*NB & S D,NB ' S D.NB ( S D0NB ) S D2NB * S D4NB + S D6NB , S D:NB - S D9B .  ( B /  < B 0   Br 1   B 2   Br 4   Br 5   B 6   Br 7   Br 8   B 9   Br :   Br ;   B =   HB ? C DNB @ S DHB A@ C DNB B S DHB D C DHB E@ C DNB F S DNB G S DHB I C DNB J S DHB K@ C DNB L S DNB M S DNB N S DV O # "` V P # "` V Q # "` V R # "` V S # "` V T # "` HB U C DHB V C DHB W C DNB X S DHB Y C DNB Z S DHB ] C DHB ^ C DHB _ C DNB ` S DNB a S DNB b S DB c   B d   B e   B f   B g   B h   B i   NB j S DNB k S DNB l S DHB m C DHB n C DNB o S DHB q C DHB r C DHB s C DNB t S DV u # "` V v # "` B w   B x   Br y   B z   Br {   B |   Br }   B ~   HB @ C DHB  C DNB  S DNB  S DNB  S DHB  C DHB  C DHB  C DNB  S DNB  S DNB  S DH  #  B    V  # "` V  # "` B    B    H  #  B    B    H  #  B    B    B    NB  S DNB  S DNB  S DNB  S DNB  S DHB  C DNB @ S DNB @ S DNB  S D\  3 "` \  3 "` \  3 "` \  3 "` \  3 "` \  3 "` B    NB @ S DNB  S DB    B    B    B    B    B    B    B    B    B    B    B    B     B     B    B    B    B    NB  S DNB  S DNB  S DNB  S D NB @ S DNB  S DNB  S DNB @ S DNB  S D NB  S DNB  S DNB  S DNB  S DNB  S DNB  S DV  # "`  V  # "` V  # "` V  # "` V  # "` B    N  3  H  #  B   e eB   d dB   ! B   % B   $ B   * NB  S DNB  S DNB  S D#NB  S D"HB  C D)HB  C D&HB  C D(NB  S D'V  # "`  V  # "` B   + B   , B   . B   2 NB  S D4\  3 "`1 B   6 \  3 "`0 B   5 NB  S D3B   8 B   < HB  C D7HB  C D9HB @ C D;NB  S D:H  # = H  # > B   Z B   \ B   ^ H  # c H   # d H   # h H   # g H   # j H  # n H  # m NB  S D[NB  S D]HB  C DbHB  C D`NB  S D_NB  S DaNB  S DfNB   S DeNB # S DlNB % S DkNB ' S DiB (  o B )   B *   B +   B ,   B .   B /   HB 0 C DHB 1@ C DHB 2 C DNB 3 S DNB 4 S DNB 5 S DNB 6 S DNB 7 S DNB 8 S DNB 9 S DV : # "` B ;   V < # "` B =   B >   H ? # ? H @ # @ B A   B C   B D    B E    B G    B H   B I   B J   NB V S DNB W S DNB X S DNB Y S DNB Z S DHB [ C DNB ] S DB _   V ` # "`  V a # "`  HB b@ C DB d     HB e C DNB f S DB g   B h     V i # "`  V j # "` NB k S DNB l S DHB m C DNB n S DNB o@ S DNB q S DHB r C DNB s@ S DV t # "` HB u@ C DV v # "` NB w S DNB x S D NB y S D NB z S DNB { S DV | # "` B }   B ~   NB  S DB    B    B     B   " B   $ B   & B   ( B   * B   1 B   3 B   6 B   ; HB @ C D=HB  C D,NB  S D9NB  S D5NB  S D2NB  S D0NB  S D)NB  S D+NB  S D'NB  S D%NB  S D#NB  S D!NB  S DB   : NB  S D<V                          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   # "`8  V  # !"`7 !V  # ""`. "HB  C D-V  # #"`/ #NB @ S D4B   $> $B   %A %B   &C &B   'E 'B   (I (B   )? )B   *K *B   +M +H  # ,N ,HB @ C DQHB  C DHNB  S DGNB  S DFNB  S DJNB  S DLNB  S DONB  S D@NB  S DBNB  S DDV  # -"`P -V  # ."`S .B   /T /H  # 0V 0B   1X 1NB  S DYV  # 2"`W 2V  # 3"`[ 3B   4\ 4B   5^ 5B   6` 6NB  S DRNB  S DUNB  S DZNB  S D]NB  S D_B   7a 7B   8v 8B   9g 9B   :e :H  # ;i ;B   <r <B   =m =B   >o >HB @ C DsHB  C DlNB  S DpNB  S DnNB  S DkNB  S DhNB  S DfNB  S DdNB  S DbNB  S DjV  # ?"`q ?V  # @"`t @NB  S DuB   Ac AB   By BB   Cw CB   D} DB   E EB   F FB   G GB   H HHB @ C DNB  S DzNB  S DxNB  S D|NB  S D~NB  S DNB  S DNB  S DNB  S DHB  C D{B   I IV  # J"` JV  # K"` KB   L L\  3 M"` MB   N NB   O OB   P PB   Q QB   R RB   S SB   T TB   U UB   V VB   W WB   X XNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DNB  S DHB @ C DNB   S DHB  @ C DHB   C DNB   S DV   # Y"` YV  # Z"` ZV  # ["` [V  # \"` \B   ] ]NB  S DNB  S DB   ^ ^B   _ _B   a aB   b bB   c cB   d dB   e eB   f fB   g gB   h hB   i iB    j jNB ! S DNB " S DNB # S DNB $ S DNB % S DNB & S DNB ' S DNB ( S DNB ) S DNB * S DHB +@ C DHB , C DNB - S DV . # k"` kV / # l"` lN 2 3 ` `B 3  m mB 4  n nB 5  o oB 8  p pH 9 # q9 qB :  r rB ;  s sB <  t tH = # u uB >  v vB ?  w wB V   B W   B X   B Y   B Z   B [   B \   B ]   B ^   NB _ S DNB ` S DNB a S DNB b S DNB c S DNB d S DV e # "` V f # "` NB g S DNB h S DHB i@ C DHB j C DB k   B l   H m #  B n   H o # ~ ~H q # } }NB r S D-NB s S D/B u  | |b z C z"` zB |  { {H } # y} yH  # x xB    H  #  B    B    B    B    B    B   ? B   A B   C H  # K H  # M H  # S H  # R H  # U H  # Y H  # X NB  S D@NB  S DBHB  C DIHB  C DGNB  S DFNB  S DHNB  S DPNB  S DONB  S DWNB  S DVNB  S DTB   E B   D B   N B   Q B   J NB  S DLB    B    B    B S  ? -:-;-----*2+222222222222`3b3e3g3h3j3l3m3p396777777777777777777788888 8 8 888}:====================@@@@@@@@@@@@@@@@@@cBsPtPuPvPyP|P}P~PPPPPPPPPPPS T TTTTTTTTTTTZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[ [ [ [[[[[[[[[[[$['[#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^u______________________aaaaaaaaaaaaaaabbb b bbbbbbbbb(bccccccccccccccccccccccccccccccccccccc eeeeeeeee"e$e(e+e,e-e/e3effffffffffffffffffUgbhmhohrhuhyhzh|h}h~hhhhhhhhhhhhhhhhhhbieigijimirisitiuixi~iiiiiiiiiii{kmmm m"m$m&m'm(m*m+m-m/m1m3m4mppp p p p pppppppppqqq>rrrrrrrrrrrrrrrrrbsdsfshsjsksmsospsqssstsvswsys{s|s~ssssssstt}uuvv%w&w'wxxxxxxxxxxxxxxxxxxxx!#$%'),.‡ćŇƇLJȇʇˇ͇ÌŌƌɌˌ͌όьӌԌ֌،ڌ܌݌ތ9;=?BCFGJKLNQRUX[\]`bceiklmprsvy{bdfhiklnorstuwy{}~ !"$%'(*,-/aʛ͛ϛқ՛؛ۛޛߛ wy|}ѱұhiop',*JKLMNOPQRSTUVWXYZhipt-z!it<!ttt"PttRt<!tSt"t(#t@ td!t t0tht t  t.ttftt t ttPt|0t  tT tt \ \ Lt@ L,ht x(#<t t | 0t80Lt!  t$t" tt# tt$  @t.#tx0t%  txt& tx,t'  ht<xXt( , txt)  8t )t* tt+  tX tt-5t, 5t !t/,X%tJ\ dtS tK t]PtRLt\$ @ tWXtVdtL dtU,tT tXtYtN tMt[XtZtO XttQHdtP\ 8dTt PttG  t  tX t"G tG t # t  tBt<<t Pt  !t  t 6tJ  t+ . tPlz t B#t  !tt!ut'@ \ t#\ U%t"\ -t3it2]t+]t*@ ]\ t%(#t4QQt(@ Q@ t$xt5lElt/@ @ t,pUt1t"t0@ -@ t.t htQt %td.t}t }t ! t m mttth@ tthT\ t0HHdtN,<,t1 4tM,,8tR$ tQ$lt2$ $4\tLpptJlltKp$ tI4lt5lt4dl!t`,,t_lt^lTlt]TtP4t6$ 4tSdtG  PtFPtE$ tD4 t7<t"tt8L< tta%tZl%ltYltb,,tO4yt9$ y4tTT5t?4m mtBmtAm mt@ m t;d!t: tV-tU-tXxxutWt=\ %Atcd twh !$0tv H tu, p tt,, tsPtrPPtqto tnl  teh tm T tl tkx tjti H<th 4tgdtfTx ltdxtxt |<tp| td#.tD.tptt tdttPtpHpdtp@p t<@<x t @<@tz p  tp@ @t~x <t}LdPt| \ Ht{x $dty  t ,t tTxHt@ l@ tl(tx tt tt   ttT tt4Hdt@ H@ t t\ 1lt tx!tmHt t xt U AtItIet\ t=t\ tLyth(# !t<Xt0t@ PtHxHt 4t t t (tttHH8tt\tp@ dt 4tHdt t tMtMtHHMtlt !t %]t%Attttm !tmtat !ttX t44tyPt$$6ttDt 04tt !#4t4tt"tt"t"ttT(#@th t ttTtT1Ttt$t,trt tsHlHt!(t(tttptt"t t88t<]t ut\ a\ t8aat xtIt"tHttHHPt@ <P tHHLt$ $l\t4(t tt|tptpp(tH HtTl$t tt$ <t"(tMt$ 1$ itt"1t"t!Aty(#t mt  t Atett=<)th ttHHPt@ <P tHHLt$ $l\ttptpp(tH Ht t $ <t"(t $ 1$ itt"1t"t y(#t  mt'  t  At%et#t=<)th t((#8tr,t@ @ \tsX,tty@ p@ tt,tz@ @ tux tP@ PtPt{@ @ tv,t|@ @ PtwLxt~t}@ @ |tx|,t\ 4tp0pLtpptT@ ht@ tpt t@ tppt tp\p,t dttpp t8 $tet}m@ t,htx! t@ t|tx4HtD`tp\,t8t88 t$t tp t H(tt8 t<t-T@ ,t\ \ <t@ 8,Tt\ P\ t@ ,t\ \ tdt\ \ t8H8t@ ,dt8H\ Ht\ `\ t@ ,0tpt\ ,\ t@ t88,tt $ ttp Dt8pt,t\ ,\ t x$tht"xtPTtx4txtT8# T#t$t$txh.t!4tt"ltHt,,t t,,tTP,PtTPTt t,,4tT0(#LtHt$ Pt(#ttDt xttt ,tTT Tt t t) D`t8Lt*$ 4Xt7ht+@ <Xt,p4t6,t3t2(t;4X Tt:t9  t<dt5t.@ 4t4pt/pD0t0t1tZ@t> ,t=,$@tYpt?D`tX4t@tWtA\ tV|0ta ,tftextC PHtdxt`ht{tz8t[88 tb t_tkHtnHHtmHtg@ Hti@ \ Tto 8@ 8th tjH(dtl(tE\ dtyTtD\ txatG 5Qt}tw%ttAtItH@ ]trl}ltqt|! tv,mtsmlmtJ@ m=t]mttu8t~,t,tHtHt\ tptH HttHHPthtHHt4tHHLtdtHHtx#dtxHxtxXt#D#h t (t ! (#ttH$Ht tHTHt$tH9#9tHHtt5t$ 5tHHt1<Mt 1tIItI ItHt0t"t,,t@t,,t4t, ,t(t,,ht,t t@ Tdpt,H,tt,,Xt1Mt t,%,t % t t,m,tmtt,,t tUtUX tI4It,,ttt,,t t,m,t tH tdd`t8t ttdtdtTt\ t44tt4t t\ Pt@t0tt@ tttttxtdtHHPt $@tHttHH|t\ |tHlHt\ 4t tHHt\ 4ttHHt$ x t xth ht[tHXHttxHdthX t4tt,$ttx tMtx%At $ t $ $ u ttm =tt tt tt @ tlt $ t4ytyt \ 5t\ t  t \ tlitt, tt=x t4 tt4td(#t XHtt*xLxt$ t)xx\t 5t(xxt Et'xxt 9t&xxyt-Txt,TT t et%xxmt Yt$xxat Mt#xx t.> tpt+T5p5t/ \ t"xxt@ t Pt!dPt|(#tu =dtSw tS w t< tt t0A Tq!T3Y0 t2Q'T5T$dt4Tt;Ht<UHtyt"5t8(t9Lt:, !ththK+t=>\T>t?L% tfte t\ td,tc  tbltaPt`t_!t^x!4#t]\ Pt\ tt[xP tZltYd tX tW , tVtg$ tj$ $ thti$ tk ! tlX tmD%Tn<$TTo(T\ v t _Hlt137386673 _Hlt137386674 _Hlt137386785 _Hlt137639453 _Hlt137637788 _Hlt137637789 _Hlt137637793f@@@@@@@f44c4%#5ct%#6cl#7c#8cL#9c#:c,#;c#c#?c\#@c#Ac<#Bc#Cc#Dc#Ec#Fcl#Gc#HcL#Ic#Jc,#Kc#Lc #Mc|#Nc#Oc\#Pc#Qc<#Rc#Sc#Tc#Uc#Vcl#Wc#XcL#JNL#KN#LNl#MN#NN#ON#PN#QN<#RN#SNi#TNi#UNaMTNO1PmlllƌЍը6p  !"#$%&'()*+,-./0123C44*urn:schemas-microsoft-com:office:smarttagsmetricconverter w50 in0, in1 in1, in1. in10. a11. A150 cm160 cm170 cm18. A180 cm2 in 2.5 metrov3 in3, in3.2 a3.3 a3.6 a3.7 a310, in 4.6 metrov5 in5. In 5.7 metrov6 in6, in9 in ProductID4444 4444444444444 4 4 444 4 4 444 444444 4444444 4444444444 4 4  wz{| +3469<LSU]^`cft}~ "'-6:BCHKRSU\cdjkoz|~  145:| x~   f p s x L Q { ~   JNU[\`em#+36QXpv6:R\iu '238IWZlntux| *24<@HL^`  36<@DGKWblpw _b02356;<DEIJLMTV_`deikrtwx #$+-01  '(/04:ABFJOUZdiv{ $'/4:>EJS @CSYqt ! ! !!H!U!V!\!"" "'"3"9"""####:$B$d$i$o$t$x$}$%%%%%&%V%^%_%j%t%y%'';'B'G'N'''''(((#((() )))))))****E+J+q+v+++,,,---------------... .>.C.G.L.o.t...///02)222\3^3q3v3x3333333333444#4$4+4G4L4N4T4j4o4p4v4444444444455558"8X8]8j8q8{888888888888889!9"9&9)929H9J9i9r99999999999999999999::::::&:9:=:@:I:J:L:T:_:c:j:~:::::::::::::::::; ;;;!;";';0;9;F;K;^;b;n;s;;;;;;;;;;;;;;;;; < < <<<<0<2<~<<<<<<<<>=B===============>>>!>8>:>a>f>>>>>>>>>>>??? ????!?"?)?*?.?4?;?UFU^UcUeUkUzUUUUUUUUUUUUUUUUUUUUUUUUUUUVV V;V=VVV8W:W;WCWHWMWRWWWYW^W_WeWfWmWtW~WWWWWWWWWWWWWWWWWWWWX XXXX"X&X'X/XAXFXQXWXXX_XaXeXfXmXnXxXyXXXXXXXXXXXXXXXXXXXXXXXXXXXXYY YYYY!Y%Y(Y0Y3Y9Y>YBYFYIYJYMYRYZY[Y`YYYYYYYYYYYhZtZ-[2[H[O[p[u[|[[[[[[[[[[[[[[[[[[[[[\ \\-\/\<\A\C\J\Y\`\i\k\o\w\\\\\\\\\\\\\\\\]] ]]]]],]3]V]]]{]]]]]]]]]]]]]]^ ^k_t_u`{`|`~`aabbzd|ddd e eee5f>fBgEgFgHgIgRggh^i`injuj3k8kNkPk[k`kckgkhklkoktkukzkll llll3l8l~lllm mmmm7mr?rArGrHrNrOrPrQrXrZr[r\r]r^r_r`rerfrgrhrjrkrlrprrrrrrrrrrrrrrrrrrrrrrNs[s\sasssssssssssssssttxu|u~uuuuuuKvZv[vfvvvwwsxxxyxxxxxxxxy!y"y&y6y:yJyOyxy}yyyyyyyyyyyyz9z>znzszzzzzzzzzzzzz{{B|M|||||c}e}{}~}}}}}~~~~~~<ABJKPX]puˀ̀؁݁߁Âтւ| LQχԇ +0INchΈӈՈ +-NR`ew +MXȊӊԊՊЋՋ #)+1W\cjy~čʍ׍܍ލ',;=JMQWejwyŽώՎ׎ݎ"3:;@đّޑ !+,1>CJQ[`gnĒȒؒݒߒ ):@HOZals~Ó͓֓Õȕϕ֕ؕߕ )/4;=BCI_emstz}Ŗʖٖ(/6;JQX_krܘޘ38@GJOW^bijov}ǙΙљ֙יޙ  @BFMcjpwœȜϜRijk >Hמjm̡ѡءݡ $)02JNW]^bâǢʢ΢עܢޢ).9ATY_iȣͣӣݣ!)<AGQ)127*138@EFH05MRjoux&+jop}~ïЯѯ֯߯ ;A˰Ұ(3KRYdpw~±бѱӱԱٱڱ۱ܱ $'56;<?@ijų̳ͳгѳҳӳٳڳ  &+,-.345678=>CDKMPQRTZ[^`fhjotƴӴ X]^cjw|@FKQRTemrw~mpvy2?̸иѸӸԸָ׸۸ܸ޸ $)0459EHIVWY\_w~ǹ̹͹Ϲҹֹ %+,.:BCGHJORV]^bcerusx-0QTU]üƼؼݼ+2`f޾qtu}$zlo]dlo(-8;MQ{ 49:>CH_bz !#()*+,-.389DHIJKLMNOPQZ]^_`f~(,-/45:;=?D~-0FH`esw~ rw{5DMNSvyz589?@B%/8;qtu{|~ $17:@AGHN[adjkqrx +23:[bcj14 -2>CELWZx} "$+,/07\_ln*,=BPW\cz}~".39>IO^gipqw,0osVYZehk;AJP*1Ze#) SY QVgnIN$(]aV\&,9>KQ[aelrwx"PV`fnuHK^e[a=CY`wz{~,34<*12:u$&)*./1368<BEFGHJKS]bcdmnpqrstuwz{KPx~" dj %*+4pyz@I! ( G L O S T \ ] c d k y |                       ' - 0 5 6 : ; = > A K N q t u z                      ! " ' S W X \ a g k n o x                  AFGLQYnt0346:?@BCHZ`kxy  6:;BCIJMNQRX$+/38FNdghkruvy289ABFIMNRW]ehin !&?CMSWZ[`ae $?BCFGMZ_cgjm *-9=HST[^bjmnpquvy $49!#)*349KOSWimqu>Eovkp&-{  ~  !!!"'"2"]"c"p"}"~""""# ###1#7#B#G#T#Y#Z#d###$$$$$$$$$$ %%e%k%%%%%%%%&e&q&s&&&&['_'e'k'l'q'w'|''''''''''''(((((((((i)o)~))))))* ***/*5*++++++++++++++ ,,,,,",(,.,/,4,H,K,L,R,S,\,],g,i,l,m,s,,,,,,,,,,,,,,,,, ---!-@-G-H-M-Z-_-o-q-----------------------2.8.;.?.@.B.C.F.P.V.v.z.{.~...................///$/(/0/1/7/@/C/b/e/f/k/l/q/r/v/z/}////////////////////0000000&0)0*0-0;0C0D0J0]0`0k0o0p0s0t0w000000000000000000000011191<1=1@1A1I1Q1T1W1\1w1z1{1~11111111111111111111111111222(2*2.222>2C2\2_2k2o2z2222222222222222222222222233333 3 3333(3-3.373G3L3]3a3c3i3j3s377777777n8s8P9V95:;:::::::::::::;;;;;;6;A;W;d;k;p;;;;;<<A<F<<<<<<<<<<<<<&=+=J=O=i=t=w=z={==========$>)>>>C>L>S>Z>_>}>>>>>>>>>>>>>>B?P?W?[?q?????????????NAOAAAAAAA"B%B,B-B2B3B4B5B;BBBCCCC%D*DDDDDDDEEEE6F>FHFOFGGGGH H(H4H}HHI IIIIIIIHJTJJJJJJJJK+K/K2K>KEKRKSKWKCLJLLLLLLLMM9N=NOOOOOOOOOOOO;PAPJPMPNPWPgPjPPPPPPPPPPPPPPPPPPPPPPQ[SgSiSsSzSSSSSSSSUUUUUUBUMUPUSUTUYUpU{UUUUUUUUUU VVVEVPVSVVVWV\VsV~VVVVVVVW WWWW#W%W(W)W5W6W[[[[]]___!_<_=_?_@_F_G_Q_R_X_Y_^___`_a_c_d_m_r_s_t__________________________` ` ` ` `````` `$`*`+`,`````aa a aaaaaaa a!a$a%a+a1a6a:abbbbbbbb%b'b2b8b>b?byb|bbbbbbbbbbbbbcccc*c0c1c2c8c9cCcDcccccccccccccccccccccccccccccccccccddddddddddhh hhiiiiiiiiiiiitllllnnnnnnnnnntt t tttttttttttttttttttttttttttttttttttuu uuvvvvvvvvwww wwwwwww!w$w(w)w1w2w4w6w8w9w?w@wHwJwLwMwOwPwXwZwdwewgwhwnwtwywzwww5x6x;xxExFxLxNxPxQxWxXxZx[x`xaxgxhxmxnxvxxxzx{x}x~xxxxxxxxxxxxxxxxxxxxxxxKyLyRySyyyyyezfzozpzxzyz{{ { {\}`}e}f}m}n}9=BCJK=EJKOPĉʼnƉˉډۉƋNj #$*+./125689CDGIMNPQUV\]fgop|}$-.351267@A  Ζזߖ AEIJx{~ !$%CDEFtu~ڢۢ')78NOVXdeoz|~!"Ƨȧʧ˧ͧΧէ֧ܧݧߧ z|ĩΩ֩שة٩YZacijrsuvz{~ĪƪǪϪЪҪӪڪ۪OQYZ~Z[]^abSTUV]^)*/034+,-.89µ XZ]^deLMRSUV_`abhiqr(*2356:;<@DE+,-.89.1:;CD  $%)*17:;VW̽ͽѽҽٽڽ$%-/124578BCFGPRVWZ[]^dknoÿ˿̿_cpreghopwxly}~y}  NQXY sw~hkno  (+,-12?AILMhpr~ST[\`a   !(),-67>?EFLMOPXY[\cdnowx#$*+-7  ")*49;<=VY[]cdgh      wz|~$ $$$$$''''''----- -T4U4W4Y48 8 8888999999S>T>X>Y>>>>>z?|???AAAAAAFFFFLLLLMMMMoPpPrPtPUUUUUUYW[WcWdWhWiWY Y Y YYYYYZZZZZZ4\7\9\<\B\C\F\G\]].]5]8]8]B]B]C]C]k]k]m]]]^^M_R___C`M`U`\`````aaaaaaaaaaabb bbb#b(bpbubwb|b~bbbbbbbbbbbbbbbbbbbb$c+c8c>cscxc{ccccccccccccccccccddddddd!d"d'd8d=djdqddddddd eee e&e+e1e6e7ef@fAfEfLfQfdfifsfxfffffg gVg^gggggggggggggggh h hhh h&h+h-h2hAhFhehjhhhhhhhhhhhhi iii!i1i6iKiUiVi]iiiiijj4j9jTjYj`jljmjsjwj|j}jjjjjjjjjjk'k(k-k}kkkkkkkkklNlUlnltlllmm5m7mBmDmOmQmfmlmnmpm|m~mmmmmmmmmmmmmnnnnnnnnoopppp-q6qSq\qqqrr1r7rgrnrrrtr}rrrrrrrrrrrrss*s1ssssssssstttt-t0t1t6tFtKt\t^thtktttttttttttttttttuu'u+u6u=uCuGujunupuvuwu~uuuvvv%v,v5v?vDvLvTv_vdvfvnvxv}vvvvvvvvvvvvvvvvvvvw www>wFwMwVwvw}wwwwwwwwwwwww xx#x)xVx[xtxzxxxxxxxxxxxxxxxxxxxy yyy(y-y7y>yJyPySyWymyry{yyyyyyyyyyyyyyz zzz)z/zIzOz[zbzpzwzzzzzzzzzzzz{{{{"{K{Q{]{d{r{y{{{{{{{{{||*|,|O|U|||||||||||||||||} }}}}&}.}0}J}L}i}k}}}}}}}}}}}=~D~S~Z~`~g~m~t~z~~~~~~~~~~~~%4;AHNU[b -348@HIR[`suEJ`ex}Ɓˁ܁ށ EIOT؃ۃ܃߃#,0ILMRY]afptńƄ̄ӄׄ 8<VZswŅЅԅ 478=DHLQ[_hj͆ІцԆچ݆!;?Z^quv|͇чIK|ÈȈЈ׈ۈ7<SXprˉЉ܉މ߉&,<@JOQXw}ˊԊ$QX܋.5_fɌЌ >Ev}ˍ!;AĎƎǎ͎̎Ўю׎ڏ܏ioȐΐӑՑouŒ˒ΒԒ $(/6=AHOVdjē˓ޓ &',3:IPelߔ &(/?CI NPWY`~)*+234Ŗʖؖݖ  JQ`eҗԗ$&)-13IKƘӘؘ#+.X_ot_bx}ΚњҚך"49AFGKPUloƯ̈̀6;Ҝל AF՝ڝ16PUpu289=R[in%+,0ENRWhnѠנ:?Z_fksxšʡѡ֡ !*.3EKks ɣϣУԣգڣ+158:=>DHPTYZ`ciäƤǤˤϤԤؤݤޤ ӥեPUnu¦Ǧצܦަ<AKPX]ħͧԧ!'(/06DK[bryŲ̃Y_`dyϩԩ 7<FKLNQSTY[_chjnqstyĪʪ٪  79U[\es{?EQX{ĬɬˬҬӬڬ$-38>FKRWY_`foqӭ׭ #%,@EGNOVz®îʮ ǰʰϰаհٰް߰$'(,059>?Ciopz{ɱαֱ۱   &ó)/UZԴٴ  "%*+>?BDJKhilnst "*+HKYZ"%+,<Avx#$&(}~JLUVXYdeghstvwsu  !,-45LM}~4 6 ' + 1 3 ! " . / < = J K Y Z d e q s   , - 5 6 9 : B C F H Z [ a b s t y z       ( ) 3 4 7 9 _ ` i j xz?@OQ`arsFGJMXYklvw*,EFdeuvz|67 HIy{+-8:OP%&(0jkst  yz"$WX479:ORTUZ]_`ijmoqr{|%'ac{|"$2389MO[\abvx/0`brsz{ ! M N ^ _ d e g h ! !%!'!z!{!!!k"m"""""####`$b$$$$$ % %l%r%{%~%&&&' '''''''''';)<)))))+*-*0*3*****C+E+Y+\+++ ,,,,,,--9-<-|-}---`.c.v/w/////,1-111)2222_3q333333344D4E4i4j444444444555586:67888W8X8z8{8888888888888 9 99999&9'9G9H9x9y9999999998:9:|:~:::::::!;";E;F;m;n;;;;;;; < <2<6<@<A<<<<<<<<<<<==>=C=H=========> > >>>>>>.>1>>>>>>>>>>>????.?1?3?4?I?L?N?O?T?W?Y?Z?c?d?g?i?k?l?u?v?y?{?}?~???????@@@@@@AAaBgBBBCCCCDDkDmDDDDDDDDDEEuEwEEEgFhFFFGGHHHH9I;IiIkIIIIIRKSKKKKKHLILLLLLLLLL}MMMMeNgNNNOOOOOO*P+PqPPWQXQ-R.RRRSS T0TTTTTUUUUUUVV1W3W6W8WWW X XXXXXOYRYiYkY%Z*ZuZvZZ-[m[n[[[[[[[[[[[,\-\7\<\\\\\\\\\]] ]]6]8]A]B]z]{]]]]]]]]]"^6^__t_v___``aPbbbcd}d~d ePeeefgSgghiiaii!k#kCkDkMkNkYk[kgkhkmkokzkkkk2l3l?lDl}l~lllmmm7mSmTm]m^mgmhmkmlmzmmmmmmmmmmmmnnnnnn,n-n:nqsƊNJȊيڊ >?CGŒ VWvwÍč͍̍Ѝэ֍׍&'6;\e13kl8ƑǑ+,7<V[ty~ÒĒɒΒӒؒACTUfgxy )a•Õוؕ !()<=MRhm|}&(RS_`xy\gߘ3IJ`bЙљ!&  !/0?@PQdfɛ&/1X]kpÜȜHJמ؞vˡ̡/0IJhiâ֢ע#$KL^_ңӣ 34FGj}QX֦$2ܩߩ?Beg˪Ϊ9@Ϋϫ 9:tuܯ߯ {~бԱ !&78CDLMRTgovƴVX!#'*kmHIøŸ˸̸ 9:=?DEabegtuƹǹݹ޹$%039:LOUVgkԺy{]^ ORNR}~-. dhQZkl6DCD`)*@ASTjk}~*+Z[*+=>RSVWmrwx9:TU[\gls|%*19<=DFOPdejk+. %&89ABhiz{'(jk$%+,34eg,-^_jkrs{|uv "%jm KL.0BGtvRT+.y|.1WYabce9;DEgh.09:FHWYik;=LN68>B'(_`bl&'RSUt#$WYGHY\deKYpq}    N O enUZ99=WZux ),GJeh7:UXsu56CDmnk/!0!F!G!""+#-#k#n#}$$$$$$R%S%%%%%&&U'W'''))c)e)))**++..//11L1Q111L3O3W3X3s3v3333334-404[4^4444444 5585;5d5g555555566;6>6g6j6666666668888::>>???? @ @@@1@6@I@N@V@W@@@@@@@AAAA%A&ANAOAAAAAAAAAABBB"B%BCCCCDDDD+F0FRFUFGG IIIIUJXJJJKKKKMLNL3M4MMMNNOOwSzSSSSSSSSSSSSSUUVWWW$W%W6W;W`WeW~WWWWWWWW XXXX5X:XLXUX^X`XuXzXXXXXXXXX YY*Y/YOYTYfYoYYYYYYYZ ZZZ&Z+ZCZHZ]ZbZvZ{ZZZZZZZZZZZ [[)[.[?[H[\[a[r[{[[[[[[[[[[[[[[[[[\ \\\#\$\4\5\=\>\L\M\]\^\k\l\x\y\\\\\\\\\\\\\\\\\\\]]]]] ],]-]=]>]F]G]d]e]u]v]]]]]]]]]]]]]w^y^__4_7_m_r___%`*```,a1aaa3b8bccccccccccccccdddddd&e)eeehhxhzhiiiirltlllllllllllmm9m>mXm]m}mmmmmmmmmnnn3n8nLnUngnpnnnnnnnnnnnpp!p"pqqrr_s`sttttuuvv#w$wowtw-x0xxx2y4yIyLyzz|z{{{{{{Q|R|[}`}/48=14>E݅wzƉˉъҊ$-.Ζז @ERS\]fgpqz{ghw{runzͥΥ |WZĪ%&OQZ[ST)*~ϲвOP|}lmصڵȶLMab(*;@KM$%SV/127ĽƽfkSV^cprhhjky !#?@KMZ[cex}"%MQ >Arwgk45FGOP\]+1@Iz 6?JP_hz@B[^tv  :<VYprFHcg68RU egvx )+;=RT!"-/?AJh #9>UWfk01gh{|12LN_es|'0QZkx @Mx~-:KX!@M^gly @I )FO6? :CSYfoLM~RS%'WYrw57KMP_d*/hjmv -0tx (,nsE\`c *+9>AX\zGJqtZ_gltyRV"%np  &+=AZ_y}]f"LRX]fk9=v x z          B H O Q f k |             7 <   _ f k p                $ 2 6 ; @ l p >EJNSXjp%'5:cglq57dg~&+AFHLqtGLV pPsPQQQQQQQRRJRURhRlRRRRRRRSSFSSSSSSSS TT>TETvTyTTTTUUUEUJUjUoUUUUUU,V/VBVHVOVSV[V_VxV|VVVVVVVVW"W$W4W9WWW[WWWWWWX XX'X+X?XKXxXXXXXXXXXXY Y YYYYYYYYYYYYYZZ=Z@ZSZYZvZxZZZZ[[)[/[6[:[B[F[_[c[w[[[[[[[[[7\<\k\\\\\\\]]]%]5]8]8]B]B]C]C]D]J]V]Z]k]k]m]v]x]]]]]]]]]]]]]]]]]]]]]]]]]]]]^ ^ ^^^^^%^'^7^9^L^N^g^i^k^m^o^q^w^y^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__ _ _____$_&_,_._3_5_9_;_@_B_U_V_Z_[___`_d_e_i_j_n_o_s_t_x_y_}_~___________````` `"`$`-`.`N`O`_```j`k`u`v```````````````aaaa"a#a.a/a:a;aJaKaVaXa]a_adafakamaaaaaaaaaaaaaaaaaaaaaaaaaaabb b bbbb#b/b4b;b>bGbIbQbRb\b]b_b`bdbebibjbnbpbubwbbbbbbbbbbbbbbbbbbb cccc"c$cCcDcLcMcWcXcecfcqcscyc{cccccccccccccccdddd!d"d7d8dMdOdXd[dddfddddddddddddddddddde e,e1e>e?eQeSe\e^epeqeeeeeeeeeeeeeeeeeeeff ff/f4f7fg?g_gagfghgpgrgwgyggggggggggggggggggghhhh!h&hi@iIiKi`iaiiiiiiiiiiiiiiiiijj3j4jQjRjvjwjjjjjjjjjkkkk4k5kSkUkZk\kkkkkkkkkkk#l$lMlNlmlnlllllllllllllllmm"m%m2m5m?mBmLmOmYm\m~mmmmmmnnnnnnJpLpUpWpppppppppppppqq%q&qKqLqpqqqqqqqqqrr0r1rYr[r`rbrprrr{r}rrrrrrrrrrrss#s$s(s*sFsGsIsKsMsOsQsSsUsWsYs[s]s_szs|ssssssssssssssssstt*t+tEtFt[t\tttttttttttuuuuuu-u/uHuIuTuUuaubuuuuuuuuuuuuu v vvv>v?v\v]vwvxvvvvvvvvvvvww.w0w9w;w^wawcwewgwiwnwpwwwwwwwwwwwxxxx5x7x9x;x=x?xAxCxExGxIxKxMxOxTxVxxxxxxxxxxxyy#y(yRySyhymyyyyyyyyyyyyy zz0z2zizjzxzyzzzzzzzzz { {2{4{k{l{z{{{{{{{{{{{{{{{{| | ||||||*|2|4|9|;|@|B|G|I|n|p|t|v|x|z|||~|||||||||||||||}}}}-}.}5}:}I}J}Q}V}}}}}}}}}}})~+~4~5~R~S~_~`~l~m~y~z~~~~~~~~~~~34@AMNZ[+-89=>Z[bcqsՀ׀  BC_`uvŁƁہ܁DEJO{|ǂȂւׂ!"/0=>KLmotv˃̓σуAB`a~҄ӄ؄݄ DENOjkz{ȅɅ  ./KLghĆ+-56QRabԇևۇ݇9;=?GIY[`bz|ڈۈ45RSopƉˉ׉܉7<AJ02<=yzVWmnȌɌ56LM`auvӍՍڍ܍:;VXŽĎ؎ڎ9;=?DF[\kmy{؏ڏ  !#%,.249;NP[^fisvz}ѐӐ  $&+-24;=QRno‘đƑȑʑёӑۑݑ  9;?AFHZ\egmoÒŒגْےݒߒ46MO[]jlprtvxz͓̓ړޓ=>lm˔Д>?DIoqvx')<>RThjlnprtvxz~ĖŖՖ֖\`npЗҗ "$35KMQSUWY[dfnotu}~ҘӘ*+ko{ƙǙϙЙԙ֙89^_vxšĚ14>AFGLPqu./12OPdegh͜Μ$%9:<=Z[oprsНѝ ')KLkl-2=B^chiٟڟ %05QRy{9:WXefrs¡áСѡݡޡ -.VYbcĢŢڢۢߢ'(:;MN`astȣɣԣգ*+9:QTnowx¤äդؤ%&Υӥ#$./9:DENP֦צ 3<FKjluv̧ͧާߧ  78NOef ,9LYdqϩ67PQbcst.3=BGHbchinotuz{ìĬ?DMRjoxŭέӭޭ  ?@yz!#%')-/;=IKrt}įƯ˯ͯկׯ-.CDZ[rsְٰ  #$69CEMNST^_giopz{ñűDZɱձֱ  !#%')\^ݲ߲  34HIKLoq|}гѳ<=QRTUŴʴϴԴ۴ܴDocumentSummaryInformation8X CompObjs՜.+,D՜.+,< hp|  J5[ Naloge v Pytonu Naslov  8@ _PID_HLINKSA lB -../PYTHON/TUTORIALS/PYTHON/PRIMERI/bind1.pyw' 3../PYTHON/TUTORIALS/PYTHON/PRIMERI/addressBook.pyw<j3../PYTHON/TUTORIALS/PYTHON/PRIMERI/textEditor2.pyw2../PYTHON/TUTORIALS/PYTHON/PRIMERI/textEditor.pyw].../PYTHON/TUTORIALS/PYTHON/PRIMERI/vsota2.pywJ+../PYTHON/TUTORIALS/PYTHON/Names_v1_0.htmlxp$http://docs.python.org/lib/lib.htmlxp$http://docs.python.org/lib/lib.htmlxp~$http://docs.python.org/lib/lib.htmlxp{$http://docs.python.org/lib/lib.htmlxpx$http://docs.python.org/lib/lib.htmlxpc$http://docs.python.org/lib/lib.html8(N7http://wiki.python.org/moin/BeginnersGuide/Programmers K&http://docs.python.org/lib/types.htmlo`H/http://docs.python.org/lib/built-in-funcs.htmlxpE$http://docs.python.org/lib/lib.html'3Bhttp://www.python.org/%,/http://www.python.org/doc/current/lib/lib.html  F!Microsoft Office Wordov dokument MSWordDocWord.Document.89q        333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 %+?Ki+KZ%,L @Y#b !'!^!!""$ %r%}%& '''))-*2*w**5+[+,,,-}-->?@@mDDDEaEEHHIIKKLLLLMMMJNfNUVV2W>YkYbhhm7mmmqr.r8rArZr`rr9zZz{{||H}b}}}}}j~~oƂ(fJ؞vީ԰8CDSTho)̸ :Ebuǹ޹jkRlf~zrZ=Fe9i{_|$ DvCS;E0Y.j6N8A(`bSU7I%{$Y6D$$%%%'V'''))**O3X366??@@OAAB"BCCFTFGGyIIKK LNLMMjOOySSW%WZ[[\]G]e]]^6_r__ `&`cdd(etllmmnnxx4yLy4z|zz{{{>!yljy$.ߑזS{hxzS~j&Mab*M 3Rgcrgy*hGP] +/@AKhh|+9 $/$--U4Y4Q>g>x?|?AAEFLLpPtPUU]%]6]D]J]V]Z]m]v]x]]]]]]]]]]]]]]]]]]]]]]]]]]]]^ ^ ^^^^^%^'^7^9^L^N^g^i^k^m^o^q^w^y^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__ _ _____$_&_,_._3_5_9_;_@_B_______````` `"`$`O`````KaVaXa]a_adafakamaaaaaaaaaaaaaaaaaa4b;b>bHbIbRb`bnbpbvbccfcqcsczc8dMdOdYd[deddddd1eQeSe]e^eqeeeff%g?gagfghgpgrgwgyggggggggggAhNhPhZh[h`hehyh{hhhhhhhhhhhh+i>i@iJiKiiiiiiiiiiiiiijjkk5kSkUkZkkkkkkkkklllllllllllmm#m%m3m5m@mBmMmOmZmnnpJpLpVp[r`rbrprrr{rrrrrrrrss"s$s(s*sEsGsIsKsMsOsQsSsUsWsYs[s]s|ssssssssssssssttIubuuuuuuuuu vvvwawcwewgwiwnwpwwwwwwwwwwxxx5x7x9x;x=x?xAxCxExGxIxKxMxOxTxyyyyyy{{{{{{{{{{{ | ||||||!|2|4|9|;|@|B|G|p|t|v|x|z|||~||||||}}~~4AZ[q  EO|0Lotv˃̓σ ևۇ;=?G[`bzˉ2=zՍڍ;VĎ؎;=?D\kmy{؏ڏ  !#%,.249;NP\^gitv{}Ӑ  $&+-24;‘đƑȑʑёӑۑ  ;?AFHZ\egmÒŒגْےݒߒ46MO[]jlprtvxۓqvx')<>RThjlnprtvxz~`nЗҗ "$35KMQSUWY[o~+oЙԙ֙ڟ%1{Rwؤ:N<klv 8f7H{!#%')-/;=IKrt}Ư˯ͯկׯ9C\]_hiñűDZ !#%' Դ]m] /HP9l688rxNU ZJ;uMuEN!`g #j4?P pmT7w~^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo( hh^h`o(hH.^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHh ^`o(hH. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`OJQJo(hH ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(hh^h`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH~^`~o( ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo(^`CJOJQJo(^`CJOJQJo(opp^p`CJOJQJo(@ @ ^@ `CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(^`CJOJQJo(PP^P`CJOJQJo( ;uM8 pmN!`9l x U ZJT7wx #j/xx[P4M $$$$$$$$$$$$$$$$$$|4$$$$$$$$|4$$$$$$$$j$$$$$$$$P=-JEEWe{gu}"Z[N_:bwyQqUs)`Y?Q"s/bH? z@qn w   a v } 86 X= 9g :t-O:G;(,~e ' k"W 3xExNy "0/4G8 ?$0q=0K + .s i!u!w"""U"9#YY# $ $)$.$W$-X$%%0 %~:%g%u%@&.j&mk&'#' ,(7(:()u)0*1*<*Qv*+8+@+,G!,e2,f, =- K-Q-`-j-)$.lD.2O./"/P/u/40.0=0+1j1{1=2^2t2 43Di3k34_L44h56&6?67D84819492:L:}k;v%<s<)>1>E>?J,?c@B`@w@EAB Cm DnRDxD#E#E#Ft>FoGIG)KGJHgH I|J=K[K_KNLUEL M0dN%$O3PPoPzP3Q:Qy-R`3R<SSzNT U KUQUyU}{U+VCVE}V,W@;XkEXYX;_H_x_ `9`p`{`a"aa}a%bB2bBcWc&dBdw~deYede\f'g2gFCg--hdh+jh@i(Mi{Vi`ij@jDjlOjZk0k#Nkjl&leDm8Pm`Hnhdn3 o*o@oKo|o$pSpVdpkpr~p1qSqkq;r#brUs);titqu'vn9vqw w`w}w x4%x|ykztz {< |#|N0|b0|2|{}q~}Ef~wRQf|0rZ>wz ;3]  -:] ] pSf:6NUDF5KiU>oV fn>@C7Z0QcOPt}'.XHT$D53@1f$SqLecFi B-E3L~d>sXa$}V)TJ[\ 2*T[}5s&).bau{5H;dh#38 ]rwCV!`pHo H|B/DT4%T?i 3GlTk{'J&ENRS=RXs&a ,]Pzi%Vh[\KjB[sZDfT*(9T;2YoapB\+Og 5U'_jyc%M qYF!#HQpSh]!CT7>c,- O!d` Y+F@^TCMwM<Bc2a= q~(S_DZ,\CBmZw/F+oJa=x4v"L-N[6\N[T9bebTg[600w8nwa_M# T"%=s3!b z_6v5fXO^u}/cm  #$%+?CDKimnt!"+IJKZ#$%,=>?567:PQRU[\]`jnor| !&!'!{!!!"""a$$$$ % %m%|%}%& ' '''''''))),*1*2****D+Z+[+ ,,,,---a.b.///>>>>>>>>>?????/?0?1?4?J?K?L?O?U?V?W?Z?d?h?i?l?v?z?{?~????????@bBcBCDDlDDDDDDDEEvEEEHHH:IIIKKKLLLLLL~MMMfNNNOrPsPTVV2WjYkY7mm;n?Ebfguǹ޹%123:MNOVhij^~#$kl /CDuS,-z{/0:;GXYj<MN7?@Z[~O :;,#l#m#$$$%%%V'''d)))+M3N3:??CCCDDD,FSFTFG IIIVJWJJKKOxSySUVV_5_6_n___&```-aaa4bcccddd'e(ehyhzhisltltttuvvpw.x/xxJyKy{{{\}01923Aޅ߅xyljAst }~XYٵڵ<LM%TU3ŽƽgTU_qrijy#$N?@h""@11C11 2222 2 2 2 7777777 7"7#7$7%7'7(7)7*[+[,[-t.t/t1235689<=> @ AuBuDuEuFuHuKuLuMuNuOPQRT@V@W@]@^@`@b@c@d@e@g@i@klmnoquvwxz{|}~GGGGGGG--SS׽׾׿DDDDDDDDDDDD  !"$%&'()+6789:BCEFG'I'JKLMNOTU]_`acdfghnoqrs$w$xZyZzZ{Z|Z}ZZ44``@```````<@` `"`$`L@`(`T@`,`.``@`8`:`>`@`B`D`H`J`L`@`P`R`@`V`X`@`^`@`b`d`h`@`n`p`@`t`@`x`|`~```````$@````8@``@@````````t@``@``@```@````@```````@````@``@``@```@` `@`` @````8@``@@`$`L@`(`T@`,``@`2`h@`:`|@`@`@`F`H`@`L`@`P`@`V`@`\`^`@`b`d`f`h`j`@`r`v`x`z`|`@```````````0@```@@```L@``X@```d@```t@````@```@```````````@``` ` `@``0@```<@` `D@`$`&`(`*`X@`2`h@`<`@`B`@`F`H`L`N`@`V`@`Z`\`@`b`@`f`h`@`l`@`p`@`v`@````@``$@```8@``@@``H@````@````zUnknownGz Times New Roman5Symbol3& z Arial7&  VerdanaI"  Arial (W1)Arial?5 z Courier NeweTimes New (W1)Times New Roman;Wingdings"1 ²&C PZ5JPZ5J!74d[[ 3QHP)?2Naloge v Pytonumpircr4