Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!border2.nntp.ams2.giganews.com!border1.nntp.ams2.giganews.com!border3.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!xlned.com!feeder1.xlned.com!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'else:': 0.03; 'received:209.85.223': 0.03; 'root': 0.04; '21,': 0.07; 'function,': 0.07; 'root,': 0.07; 'try:': 0.07; 'cmd': 0.09; 'err:': 0.09; 'cc:addr:python-list': 0.10; '"guess': 0.16; '"no":': 0.16; '"yes":': 0.16; '20)': 0.16; 'ans': 0.16; 'division,': 0.16; 'int(x)': 0.16; 'subject:when': 0.16; 'valueerror,': 0.16; 'mon,': 0.16; 'wrote:': 0.17; '<': 0.17; 'jan': 0.18; 'input': 0.18; 'sender:addr:gmail.com': 0.18; 'math': 0.20; 'email addr:gmail.com>': 0.20; 'import': 0.21; 'addition,': 0.21; 'cc:2**0': 0.23; '>': 0.23; 'absolute': 0.23; 'branch': 0.23; 'statement': 0.23; 'random': 0.24; 'cc:no real name:2**0': 0.24; 'cc:addr:python.org': 0.25; 'header:In- Reply-To:1': 0.25; 'am,': 0.27; 'guess': 0.27; 'message- id:@mail.gmail.com': 0.27; 'skip:( 20': 0.28; 'run': 0.28; 'url:mailman': 0.29; 'skip:& 10': 0.29; 'function': 0.30; 'url:python': 0.32; 'running': 0.32; 'print': 0.32; 'url:listinfo': 0.32; 'goes': 0.33; 'says': 0.33; 'function.': 0.33; 'code:': 0.33; 'skip:& 20': 0.33; 'program,': 0.34; 'received:google.com': 0.34; 'list': 0.35; 'received:209.85': 0.35; 'except': 0.36; 'but': 0.36; 'url:org': 0.36; 'be.': 0.36; 'modules': 0.36; 'too': 0.36; 'execute': 0.37; 'skip:z 10': 0.37; 'received:209': 0.37; 'subject:: ': 0.38; 'skip:" 10': 0.40; 'help': 0.40; 'url:mail': 0.40; 'your': 0.60; 'first': 0.61; 'back': 0.62; 'between': 0.63; 'skip:n 10': 0.63; 'here': 0.65; 'power': 0.74; 'square': 0.75; '2013': 0.84; 'divide': 0.84; 'rene': 0.84; 'power,': 0.91; 'eli': 0.93 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=9PbWx0mqyQDJbRDYLPZ4ctA78la+XLzXKUbzFrv3MHc=; b=w2rPsmHNEG/FStSdcXiBUtz8QijobBSFyw9bcUbmlENyadtXTqj5SrrXktTQ1Greh/ XDJqpPUXUv4HDKwuJQh3ITQK7pnnZrZpyqN+se4yFeytKwzigVolcqA2VqmvDT42jVqO NAT/lPjApGbbDZWxw2BC6al4htI6wxOisUfYCugypPRDi01VjVuwmvDlqjNVGXs9lt0W EDSo7Cba19h5SXY1WwPYRD4bcSPt/w6zANUorQSHf3chPDRHCTLEHwXsa27e1sfZYM5C SoUDf+1BVAU8YDw1fLKiTC4LBn9E8OUMQ5ceHAoFT22QCeo1nG8EE88XkO35Y4GFCCgX kAcQ== MIME-Version: 1.0 X-Received: by 10.50.6.169 with SMTP id c9mr8470366iga.24.1358744053618; Sun, 20 Jan 2013 20:54:13 -0800 (PST) Sender: porto143@gmail.com In-Reply-To: <2cc6791f-ba56-406c-a5b0-b23023caf4bb@googlegroups.com> References: <2cc6791f-ba56-406c-a5b0-b23023caf4bb@googlegroups.com> Date: Mon, 21 Jan 2013 05:54:13 +0100 X-Google-Sender-Auth: 60ekLUbSWLApr8S3stmUd08pXq8 Subject: Re: Else statement executing when it shouldnt From: =?UTF-8?B?UmVuw6kgS2xhxI1hbg==?= To: eli m Content-Type: multipart/alternative; boundary=e89a8f646717a817ee04d3c540cb Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 362 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1358744056 news.xs4all.nl 6906 [2001:888:2000:d::a6]:60151 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:37143 --e89a8f646717a817ee04d3c540cb Content-Type: text/plain; charset=UTF-8 You have to break while loop not to execute else branch Rene On Mon, Jan 21, 2013 at 5:40 AM, eli m wrote: > an else statement is running when it shouldnt be. It is on the last line. > Whenever i am in the math or game function, when i type in main, it goes > back to the start of the program, but it also says not a valid function. I > am stumped! > Here is my code: > #Cmd > #Created By Eli M. > #import modules > import random > import math > gtn = 0 > print ("Type in help for a list of cmd functions") > #initiate main loop > cmd = 0 > while cmd == 0: > #ask for input on function > function = raw_input("Type in a function:") > #start math loop > if function == "math": > run = 0 > while run == 0: > #ask for math operation > type = raw_input("What math operation do you want to use?") > if type == "multiplication": > x = raw_input("Type in your first number:") > y = raw_input("Multiply your first number by:") > try: > ans = int(x) * int(y) > print (ans) > try: > ans = float(x) * float(y) > print (ans) > except ValueError, err: > print ("Not a valid number") > except OverflowError, err: > print ("Number too large") > #division math function > if type == "division": > x = raw_input("Type in your first number:") > y = raw_input("Divide your first number by:") > try: > ans = float(x) / float(y) > print (ans) > except ZeroDivisionError, err: > print ("Can't divide by zero") > except ValueError, err: > print ("Not a valid number") > except OverflowError, err: > print ("Number too large") > #subtraction math function > if type == "subtraction": > x = raw_input("Type in your first number:") > y = raw_input("Subtract your first number by:") > try: > ans = float(x) - float(y) > print (ans) > except ValueError, err: > print ("Not a valid number") > #addition math function > if type == "addition": > x = raw_input("Type in your first number:") > y = raw_input("Add your first number by:") > try: > ans = float(x) + float(y) > print (ans) > except ValueError, err: > try: > ans = int(x) + int(y) > print (ans) > except ValueError, err: > print ("Not a valid number") > except OverflowError, err: > print ("Number too large") > #square root math function > if type == "square root": > x = raw_input("Type in your number:") > try: > y = float(x) > z = math.sqrt(y) > print (z) > except ValueError, err: > print ("Not a valid number") > except OverflowError, err: > print ("Number too large") > > #to the power of... math function > if type == "power": > x = raw_input("Type in your number:") > y = raw_input("Multiply your first number by the power > of:") > try: > ans = float(x) ** float(y) > print (ans) > except OverflowError, err: > print ("Number too large") > except ValueError, err: > print ("Not a valid number") > #break the math loop > if type == "main": > run = 1 > #absolute value math function > if type == "absolute value": > try: > x = float(raw_input("Type in your number:")) > y = math.fabs(x) > print (y) > except ValueError, err: > print ("Not a valid number") > if function == "random number": > try: > x = int(raw_input("Minimum number:")) > y = int(raw_input("Maximum number:")) > num = random.randint(x, y) > print (num) > except ValueError, err: > print ("Not a valid number") > if function == "games": > games = 0 > while games == 0: > gamechoice = raw_input("What game do you want to play:") > if gamechoice == "guess the number": > run = 0 > while run == 0: > print ("I am thinking of a number between 1 and 20") > num = random.randint(1, 20) > num = int(num) > guesses = 0 > guessestaken = 0 > while guesses == 0: > try: > guess = raw_input("Your guess:") > guess = int(guess) > guessestaken = (guessestaken) + 1 > guessestaken = int(guessestaken) > if guess == (num): > print 'Correct! It took you', > int(guessestaken), 'guesses!' > playagain = raw_input("Do you want to play > again?") > if playagain == "yes": > guesses = 1 > if playagain == "no": > run = 1 > guesses = 1 > if guess > num: > print ("My number is lower") > if guess < num: > print ("My number is higher") > except TypeError, err: > print ("Not a valid number") > if gamechoice == "main": > games = 1 > > #help function > if function == "help": > helpfunc = 0 > while helpfunc == 0: > #show functions > print ("Functions:") > print ("Math: multiplication, division, subtraction, addition, > square root, power, absolute value") > print ("Random Number") > print ("Games: Guess the number") > helpmain = raw_input("Type in main to go back") > if helpmain == "main": > #end helpfunction loop > helpfunc = 1 > cmd = 0 > else: > print ("Not a valid function") > -- > http://mail.python.org/mailman/listinfo/python-list > --e89a8f646717a817ee04d3c540cb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 WW91IGhhdmUgdG8gYnJlYWsgd2hpbGUgbG9vcCBub3QgdG8gZXhlY3V0ZSBlbHNlIGJyYW5jaDxk aXY+PGJyPjwvZGl2PjxkaXY+UmVuZTxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9u IE1vbiwgSmFuIDIxLCAyMDEzIGF0IDU6NDAgQU0sIGVsaSBtIDxzcGFuIGRpcj0ibHRyIj4mbHQ7 PGEgaHJlZj0ibWFpbHRvOnRlY2hnZWVrMjAxQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnRl Y2hnZWVrMjAxQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1b3Rl IGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0 OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPmFuIGVsc2Ugc3RhdGVtZW50IGlzIHJ1 bm5pbmcgd2hlbiBpdCBzaG91bGRudCBiZS4gSXQgaXMgb24gdGhlIGxhc3QgbGluZS4gV2hlbmV2 ZXIgaSBhbSBpbiB0aGUgbWF0aCBvciBnYW1lIGZ1bmN0aW9uLCB3aGVuIGkgdHlwZSBpbiBtYWlu LCBpdCBnb2VzIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtLCBidXQgaXQgYWxzbyBz YXlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uLiBJIGFtIHN0dW1wZWQhPGJyPgoKSGVyZSBpcyBteSBj b2RlOjxicj4KI0NtZDxicj4KI0NyZWF0ZWQgQnkgRWxpIE0uPGJyPgojaW1wb3J0IG1vZHVsZXM8 YnI+CmltcG9ydCByYW5kb208YnI+CmltcG9ydCBtYXRoPGJyPgpndG4gPSAwPGJyPgpwcmludCAo JnF1b3Q7VHlwZSBpbiBoZWxwIGZvciBhIGxpc3Qgb2YgY21kIGZ1bmN0aW9ucyZxdW90Oyk8YnI+ CiNpbml0aWF0ZSBtYWluIGxvb3A8YnI+CmNtZCA9IDA8YnI+CndoaWxlIGNtZCA9PSAwOjxicj4K I2FzayBmb3IgaW5wdXQgb24gZnVuY3Rpb248YnI+CsKgIMKgIGZ1bmN0aW9uID0gcmF3X2lucHV0 KCZxdW90O1R5cGUgaW4gYSBmdW5jdGlvbjomcXVvdDspPGJyPgrCoCDCoCAjc3RhcnQgbWF0aCBs b29wPGJyPgrCoCDCoCBpZiBmdW5jdGlvbiA9PSAmcXVvdDttYXRoJnF1b3Q7Ojxicj4KwqAgwqAg wqAgwqAgcnVuID0gMDxicj4KwqAgwqAgwqAgwqAgd2hpbGUgcnVuID09IDA6PGJyPgrCoCDCoCDC oCDCoCDCoCDCoCAjYXNrIGZvciBtYXRoIG9wZXJhdGlvbjxicj4KwqAgwqAgwqAgwqAgwqAgwqAg dHlwZSA9IHJhd19pbnB1dCgmcXVvdDtXaGF0IG1hdGggb3BlcmF0aW9uIGRvIHlvdSB3YW50IHRv IHVzZT8mcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBpZiB0eXBlID09ICZxdW90O211bHRp cGxpY2F0aW9uJnF1b3Q7Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeCA9IHJhd19pbnB1 dCgmcXVvdDtUeXBlIGluIHlvdXIgZmlyc3QgbnVtYmVyOiZxdW90Oyk8YnI+CsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHkgPSByYXdfaW5wdXQoJnF1b3Q7TXVsdGlwbHkgeW91ciBmaXJzdCBudW1i ZXIgYnk6JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHJ5Ojxicj4KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYW5zID0gaW50KHgpICogaW50KHkpPGJyPgrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludCAoYW5zKTxicj4KwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgdHJ5Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg YW5zID0gZmxvYXQoeCkgKiBmbG9hdCh5KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgcHJpbnQgKGFucyk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4 Y2VwdCBWYWx1ZUVycm9yLCBlcnI6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBwcmludCAoJnF1b3Q7Tm90IGEgdmFsaWQgbnVtYmVyJnF1b3Q7KTxicj4KwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZXhjZXB0IE92ZXJmbG93RXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHByaW50ICgmcXVvdDtOdW1iZXIgdG9vIGxhcmdlJnF1b3Q7KTxi cj4KwqAgwqAgwqAgwqAgwqAgwqAgI2RpdmlzaW9uIG1hdGggZnVuY3Rpb248YnI+CsKgIMKgIMKg IMKgIMKgIMKgIGlmIHR5cGUgPT0gJnF1b3Q7ZGl2aXNpb24mcXVvdDs6PGJyPgrCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB4ID0gcmF3X2lucHV0KCZxdW90O1R5cGUgaW4geW91ciBmaXJzdCBudW1i ZXI6JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeSA9IHJhd19pbnB1dCgmcXVv dDtEaXZpZGUgeW91ciBmaXJzdCBudW1iZXIgYnk6JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgdHJ5Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYW5zID0gZmxv YXQoeCkgLyBmbG9hdCh5KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQg KGFucyk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJv ciwgZXJyOjxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKCZxdW90O0Nh biYjMzk7dCBkaXZpZGUgYnkgemVybyZxdW90Oyk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGV4Y2VwdCBWYWx1ZUVycm9yLCBlcnI6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBwcmludCAoJnF1b3Q7Tm90IGEgdmFsaWQgbnVtYmVyJnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZXhjZXB0IE92ZXJmbG93RXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHByaW50ICgmcXVvdDtOdW1iZXIgdG9vIGxhcmdlJnF1b3Q7KTxicj4K wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgI3N1YnRyYWN0aW9uIG1hdGggZnVuY3Rpb248 YnI+CsKgIMKgIMKgIMKgIMKgIMKgIGlmIHR5cGUgPT0gJnF1b3Q7c3VidHJhY3Rpb24mcXVvdDs6 PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB4ID0gcmF3X2lucHV0KCZxdW90O1R5cGUgaW4g eW91ciBmaXJzdCBudW1iZXI6JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeSA9 IHJhd19pbnB1dCgmcXVvdDtTdWJ0cmFjdCB5b3VyIGZpcnN0IG51bWJlciBieTomcXVvdDspPGJy PgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0cnk6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBhbnMgPSBmbG9hdCh4KSAtIGZsb2F0KHkpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwcmludCAoYW5zKTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXhjZXB0 IFZhbHVlRXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50 ICgmcXVvdDtOb3QgYSB2YWxpZCBudW1iZXImcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCAj YWRkaXRpb24gbWF0aCBmdW5jdGlvbjxicj4KwqAgwqAgwqAgwqAgwqAgwqAgaWYgdHlwZSA9PSAm cXVvdDthZGRpdGlvbiZxdW90Ozo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHggPSByYXdf aW5wdXQoJnF1b3Q7VHlwZSBpbiB5b3VyIGZpcnN0IG51bWJlcjomcXVvdDspPGJyPgrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCB5ID0gcmF3X2lucHV0KCZxdW90O0FkZCB5b3VyIGZpcnN0IG51bWJl ciBieTomcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0cnk6PGJyPgrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhbnMgPSBmbG9hdCh4KSArIGZsb2F0KHkpPGJyPgrCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludCAoYW5zKTxicj4KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZXhjZXB0IFZhbHVlRXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHRyeTo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFu cyA9IGludCh4KSArIGludCh5KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgcHJpbnQgKGFucyk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4Y2VwdCBW YWx1ZUVycm9yLCBlcnI6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw cmludCAoJnF1b3Q7Tm90IGEgdmFsaWQgbnVtYmVyJnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZXhjZXB0IE92ZXJmbG93RXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHByaW50ICgmcXVvdDtOdW1iZXIgdG9vIGxhcmdlJnF1b3Q7KTxicj4KwqAg wqAgwqAgwqAgwqAgwqAgI3NxdWFyZSByb290IG1hdGggZnVuY3Rpb248YnI+CsKgIMKgIMKgIMKg IMKgIMKgIGlmIHR5cGUgPT0gJnF1b3Q7c3F1YXJlIHJvb3QmcXVvdDs6PGJyPgrCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB4ID0gcmF3X2lucHV0KCZxdW90O1R5cGUgaW4geW91ciBudW1iZXI6JnF1 b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHJ5Ojxicj4KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgeSA9IGZsb2F0KHgpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB6ID0gbWF0aC5zcXJ0KHkpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw cmludCAoeik8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4Y2VwdCBWYWx1ZUVycm9yLCBl cnI6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludCAoJnF1b3Q7Tm90IGEg dmFsaWQgbnVtYmVyJnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXhjZXB0IE92 ZXJmbG93RXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50 ICgmcXVvdDtOdW1iZXIgdG9vIGxhcmdlJnF1b3Q7KTxicj4KPGJyPgrCoCDCoCDCoCDCoCDCoCDC oCAjdG8gdGhlIHBvd2VyIG9mLi4uIG1hdGggZnVuY3Rpb248YnI+CsKgIMKgIMKgIMKgIMKgIMKg IGlmIHR5cGUgPT0gJnF1b3Q7cG93ZXImcXVvdDs6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB4ID0gcmF3X2lucHV0KCZxdW90O1R5cGUgaW4geW91ciBudW1iZXI6JnF1b3Q7KTxi cj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeSA9IHJhd19pbnB1dCgmcXVvdDtNdWx0 aXBseSB5b3VyIGZpcnN0IG51bWJlciBieSB0aGUgcG93ZXIgb2Y6JnF1b3Q7KTxicj4KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHJ5Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgYW5zID0gZmxvYXQoeCkgKiogZmxvYXQoeSk8YnI+CsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50IChhbnMpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBleGNlcHQgT3ZlcmZsb3dFcnJvciwgZXJyOjxicj4KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKCZxdW90O051bWJlciB0b28gbGFyZ2UmcXVvdDsp PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleGNlcHQgVmFsdWVFcnJvciwgZXJy Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKCZxdW90O05v dCBhIHZhbGlkIG51bWJlciZxdW90Oyk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgICNicmVhayB0aGUg bWF0aCBsb29wPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBpZiB0eXBlID09ICZxdW90O21haW4mcXVv dDs6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBydW4gPSAxPGJyPgrCoCDCoCDCoCDCoCDC oCDCoCAjYWJzb2x1dGUgdmFsdWUgbWF0aCBmdW5jdGlvbjxicj4KwqAgwqAgwqAgwqAgwqAgwqAg aWYgdHlwZSA9PSAmcXVvdDthYnNvbHV0ZSB2YWx1ZSZxdW90Ozo8YnI+CsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHRyeTo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHggPSBmbG9h dChyYXdfaW5wdXQoJnF1b3Q7VHlwZSBpbiB5b3VyIG51bWJlcjomcXVvdDspKTxicj4KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgeSA9IG1hdGguZmFicyh4KTxicj4KwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKHkpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBl eGNlcHQgVmFsdWVFcnJvciwgZXJyOjxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg cHJpbnQgKCZxdW90O05vdCBhIHZhbGlkIG51bWJlciZxdW90Oyk8YnI+CsKgIMKgIGlmIGZ1bmN0 aW9uID09ICZxdW90O3JhbmRvbSBudW1iZXImcXVvdDs6PGJyPgrCoCDCoCDCoCDCoCB0cnk6PGJy PgrCoCDCoCDCoCDCoCDCoCDCoCB4ID0gaW50KHJhd19pbnB1dCgmcXVvdDtNaW5pbXVtIG51bWJl cjomcXVvdDspKTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgeSA9IGludChyYXdfaW5wdXQoJnF1b3Q7 TWF4aW11bSBudW1iZXI6JnF1b3Q7KSk8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIG51bSA9IHJhbmRv bS5yYW5kaW50KHgsIHkpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBwcmludCAobnVtKTxicj4KwqAg wqAgwqAgwqAgZXhjZXB0IFZhbHVlRXJyb3IsIGVycjo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIHBy aW50ICgmcXVvdDtOb3QgYSB2YWxpZCBudW1iZXImcXVvdDspPGJyPgrCoCDCoCBpZiBmdW5jdGlv biA9PSAmcXVvdDtnYW1lcyZxdW90Ozo8YnI+CsKgIMKgIMKgIMKgIGdhbWVzID0gMDxicj4KwqAg wqAgwqAgwqAgd2hpbGUgZ2FtZXMgPT0gMDo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIGdhbWVjaG9p Y2UgPSByYXdfaW5wdXQoJnF1b3Q7V2hhdCBnYW1lIGRvIHlvdSB3YW50IHRvIHBsYXk6JnF1b3Q7 KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgaWYgZ2FtZWNob2ljZSA9PSAmcXVvdDtndWVzcyB0aGUg bnVtYmVyJnF1b3Q7Ojxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnVuID0gMDxicj4KwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgd2hpbGUgcnVuID09IDA6PGJyPgrCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwcmludCAoJnF1b3Q7SSBhbSB0aGlua2luZyBvZiBhIG51bWJlciBiZXR3 ZWVuIDEgYW5kIDIwJnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbnVt ID0gcmFuZG9tLnJhbmRpbnQoMSwgMjApPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBudW0gPSBpbnQobnVtKTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3Vlc3Nl cyA9IDA8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGd1ZXNzZXN0YWtlbiA9IDA8 YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdoaWxlIGd1ZXNzZXMgPT0gMDo8YnI+ CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRyeTo8YnI+CsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGd1ZXNzID0gcmF3X2lucHV0KCZxdW90O1lv dXIgZ3Vlc3M6JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ3Vlc3MgPSBpbnQoZ3Vlc3MpPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBndWVzc2VzdGFrZW4gPSAoZ3Vlc3Nlc3Rha2VuKSArIDE8YnI+CsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGd1ZXNzZXN0YWtlbiA9IGludChn dWVzc2VzdGFrZW4pPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZiBndWVzcyA9PSAobnVtKTo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHByaW50ICYjMzk7Q29ycmVjdCEgSXQgdG9vayB5b3UmIzM5OywgaW50 KGd1ZXNzZXN0YWtlbiksICYjMzk7Z3Vlc3NlcyEmIzM5Ozxicj4KwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGxheWFnYWluID0gcmF3X2lucHV0KCZxdW90 O0RvIHlvdSB3YW50IHRvIHBsYXkgYWdhaW4/JnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgcGxheWFnYWluID09ICZxdW90O3llcyZx dW90Ozo8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGd1ZXNzZXMgPSAxPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpZiBwbGF5YWdhaW4gPT0gJnF1b3Q7bm8mcXVvdDs6PGJyPgrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBydW4gPSAxPGJy PgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBn dWVzc2VzID0gMTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYgZ3Vlc3MgJmd0OyBudW06PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwcmludCAoJnF1b3Q7TXkgbnVtYmVyIGlzIGxvd2VyJnF1b3Q7KTxicj4K wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgZ3Vlc3MgJmx0OyBu dW06PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw cmludCAoJnF1b3Q7TXkgbnVtYmVyIGlzIGhpZ2hlciZxdW90Oyk8YnI+CsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4Y2VwdCBUeXBlRXJyb3IsIGVycjo8YnI+CsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50ICgmcXVvdDtOb3QgYSB2YWxp ZCBudW1iZXImcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBpZiBnYW1lY2hvaWNlID09ICZx dW90O21haW4mcXVvdDs6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnYW1lcyA9IDE8YnI+ Cjxicj4KwqAgwqAgI2hlbHAgZnVuY3Rpb248YnI+CsKgIMKgIGlmIGZ1bmN0aW9uID09ICZxdW90 O2hlbHAmcXVvdDs6PGJyPgrCoCDCoCDCoCDCoCBoZWxwZnVuYyA9IDA8YnI+CsKgIMKgIMKgIMKg IHdoaWxlIGhlbHBmdW5jID09IDA6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCAjc2hvdyBmdW5jdGlv bnM8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIHByaW50ICgmcXVvdDtGdW5jdGlvbnM6JnF1b3Q7KTxi cj4KwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKCZxdW90O01hdGg6IG11bHRpcGxpY2F0aW9uLCBk aXZpc2lvbiwgc3VidHJhY3Rpb24sIGFkZGl0aW9uLCBzcXVhcmUgcm9vdCwgcG93ZXIsIGFic29s dXRlIHZhbHVlJnF1b3Q7KTxicj4KwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnQgKCZxdW90O1JhbmRv bSBOdW1iZXImcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBwcmludCAoJnF1b3Q7R2FtZXM6 IEd1ZXNzIHRoZSBudW1iZXImcXVvdDspPGJyPgrCoCDCoCDCoCDCoCDCoCDCoCBoZWxwbWFpbiA9 IHJhd19pbnB1dCgmcXVvdDtUeXBlIGluIG1haW4gdG8gZ28gYmFjayZxdW90Oyk8YnI+CsKgIMKg IMKgIMKgIMKgIMKgIGlmIGhlbHBtYWluID09ICZxdW90O21haW4mcXVvdDs6PGJyPgrCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAjZW5kIGhlbHBmdW5jdGlvbiBsb29wPGJyPgrCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBoZWxwZnVuYyA9IDE8YnI+CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNtZCA9 IDA8YnI+CsKgIMKgIMKgIMKgIGVsc2U6PGJyPgrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmlu dCAoJnF1b3Q7Tm90IGEgdmFsaWQgZnVuY3Rpb24mcXVvdDspPGJyPgo8c3BhbiBjbGFzcz0iSE9F blpiIj48Zm9udCBjb2xvcj0iIzg4ODg4OCI+LS08YnI+CjxhIGhyZWY9Imh0dHA6Ly9tYWlsLnB5 dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdCIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdDwvYT48YnI+ CjwvZm9udD48L3NwYW4+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48L2Rpdj4K --e89a8f646717a817ee04d3c540cb--