Current File : /home/mmdealscpanel/yummmdeals.com/curses.zip
PK4;�Z[�r���__init__.pynu�[���"""curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

"""

from _curses import *
import os as _os
import sys as _sys

# Some constants, most notably the ACS_* ones, are only added to the C
# _curses module's dictionary after initscr() is called.  (Some
# versions of SGI's curses don't define values for those constants
# until initscr() has been called.)  This wrapper function calls the
# underlying C initscr(), and then copies the constants from the
# _curses module to the curses package's dictionary.  Don't do 'from
# curses import *' if you'll be needing the ACS_* constants.

def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.

def start_color():
    import _curses, curses
    retval = _curses.start_color()
    if hasattr(_curses, 'COLORS'):
        curses.COLORS = _curses.COLORS
    if hasattr(_curses, 'COLOR_PAIRS'):
        curses.COLOR_PAIRS = _curses.COLOR_PAIRS
    return retval

# Import Python has_key() implementation if _curses doesn't contain has_key()

try:
    has_key
except NameError:
    from .has_key import has_key

# Wrapper for the entire curses-based application.  Runs a function which
# should be the rest of your curses-based application.  If the application
# raises an exception, wrapper() will restore the terminal to a sane state so
# you can read the resulting traceback.

def wrapper(*args, **kwds):
    """Wrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    """

    if args:
        func, *args = args
    elif 'func' in kwds:
        func = kwds.pop('func')
        import warnings
        warnings.warn("Passing 'func' as keyword argument is deprecated",
                      DeprecationWarning, stacklevel=2)
    else:
        raise TypeError('wrapper expected at least 1 positional argument, '
                        'got %d' % len(args))

    try:
        # Initialize curses
        stdscr = initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        noecho()
        cbreak()

        # In keypad mode, escape sequences for special keys
        # (like the cursor keys) will be interpreted and
        # a special value like curses.KEY_LEFT will be returned
        stdscr.keypad(1)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            echo()
            nocbreak()
            endwin()
wrapper.__text_signature__ = '(func, /, *args, **kwds)'
PK4;�Z>�3��	�	ascii.pynu�[���"""Constants and membership tests for ASCII characters"""

NUL     = 0x00  # ^@
SOH     = 0x01  # ^A
STX     = 0x02  # ^B
ETX     = 0x03  # ^C
EOT     = 0x04  # ^D
ENQ     = 0x05  # ^E
ACK     = 0x06  # ^F
BEL     = 0x07  # ^G
BS      = 0x08  # ^H
TAB     = 0x09  # ^I
HT      = 0x09  # ^I
LF      = 0x0a  # ^J
NL      = 0x0a  # ^J
VT      = 0x0b  # ^K
FF      = 0x0c  # ^L
CR      = 0x0d  # ^M
SO      = 0x0e  # ^N
SI      = 0x0f  # ^O
DLE     = 0x10  # ^P
DC1     = 0x11  # ^Q
DC2     = 0x12  # ^R
DC3     = 0x13  # ^S
DC4     = 0x14  # ^T
NAK     = 0x15  # ^U
SYN     = 0x16  # ^V
ETB     = 0x17  # ^W
CAN     = 0x18  # ^X
EM      = 0x19  # ^Y
SUB     = 0x1a  # ^Z
ESC     = 0x1b  # ^[
FS      = 0x1c  # ^\
GS      = 0x1d  # ^]
RS      = 0x1e  # ^^
US      = 0x1f  # ^_
SP      = 0x20  # space
DEL     = 0x7f  # delete

controlnames = [
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
"BS",  "HT",  "LF",  "VT",  "FF",  "CR",  "SO",  "SI",
"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
"CAN", "EM",  "SUB", "ESC", "FS",  "GS",  "RS",  "US",
"SP"
]

def _ctoi(c):
    if type(c) == type(""):
        return ord(c)
    else:
        return c

def isalnum(c): return isalpha(c) or isdigit(c)
def isalpha(c): return isupper(c) or islower(c)
def isascii(c): return 0 <= _ctoi(c) <= 127          # ?
def isblank(c): return _ctoi(c) in (9, 32)
def iscntrl(c): return 0 <= _ctoi(c) <= 31 or _ctoi(c) == 127
def isdigit(c): return 48 <= _ctoi(c) <= 57
def isgraph(c): return 33 <= _ctoi(c) <= 126
def islower(c): return 97 <= _ctoi(c) <= 122
def isprint(c): return 32 <= _ctoi(c) <= 126
def ispunct(c): return isgraph(c) and not isalnum(c)
def isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32)
def isupper(c): return 65 <= _ctoi(c) <= 90
def isxdigit(c): return isdigit(c) or \
    (65 <= _ctoi(c) <= 70) or (97 <= _ctoi(c) <= 102)
def isctrl(c): return 0 <= _ctoi(c) < 32
def ismeta(c): return _ctoi(c) > 127

def ascii(c):
    if type(c) == type(""):
        return chr(_ctoi(c) & 0x7f)
    else:
        return _ctoi(c) & 0x7f

def ctrl(c):
    if type(c) == type(""):
        return chr(_ctoi(c) & 0x1f)
    else:
        return _ctoi(c) & 0x1f

def alt(c):
    if type(c) == type(""):
        return chr(_ctoi(c) | 0x80)
    else:
        return _ctoi(c) | 0x80

def unctrl(c):
    bits = _ctoi(c)
    if bits == 0x7f:
        rep = "^?"
    elif isprint(bits & 0x7f):
        rep = chr(bits & 0x7f)
    else:
        rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20)
    if bits & 0x80:
        return "!" + rep
    return rep
PK4;�Z���
has_key.pynu�[���
#
# Emulation of has_key() function for platforms that don't use ncurses
#

import _curses

# Table mapping curses keys to the terminfo capability name

_capability_names = {
    _curses.KEY_A1: 'ka1',
    _curses.KEY_A3: 'ka3',
    _curses.KEY_B2: 'kb2',
    _curses.KEY_BACKSPACE: 'kbs',
    _curses.KEY_BEG: 'kbeg',
    _curses.KEY_BTAB: 'kcbt',
    _curses.KEY_C1: 'kc1',
    _curses.KEY_C3: 'kc3',
    _curses.KEY_CANCEL: 'kcan',
    _curses.KEY_CATAB: 'ktbc',
    _curses.KEY_CLEAR: 'kclr',
    _curses.KEY_CLOSE: 'kclo',
    _curses.KEY_COMMAND: 'kcmd',
    _curses.KEY_COPY: 'kcpy',
    _curses.KEY_CREATE: 'kcrt',
    _curses.KEY_CTAB: 'kctab',
    _curses.KEY_DC: 'kdch1',
    _curses.KEY_DL: 'kdl1',
    _curses.KEY_DOWN: 'kcud1',
    _curses.KEY_EIC: 'krmir',
    _curses.KEY_END: 'kend',
    _curses.KEY_ENTER: 'kent',
    _curses.KEY_EOL: 'kel',
    _curses.KEY_EOS: 'ked',
    _curses.KEY_EXIT: 'kext',
    _curses.KEY_F0: 'kf0',
    _curses.KEY_F1: 'kf1',
    _curses.KEY_F10: 'kf10',
    _curses.KEY_F11: 'kf11',
    _curses.KEY_F12: 'kf12',
    _curses.KEY_F13: 'kf13',
    _curses.KEY_F14: 'kf14',
    _curses.KEY_F15: 'kf15',
    _curses.KEY_F16: 'kf16',
    _curses.KEY_F17: 'kf17',
    _curses.KEY_F18: 'kf18',
    _curses.KEY_F19: 'kf19',
    _curses.KEY_F2: 'kf2',
    _curses.KEY_F20: 'kf20',
    _curses.KEY_F21: 'kf21',
    _curses.KEY_F22: 'kf22',
    _curses.KEY_F23: 'kf23',
    _curses.KEY_F24: 'kf24',
    _curses.KEY_F25: 'kf25',
    _curses.KEY_F26: 'kf26',
    _curses.KEY_F27: 'kf27',
    _curses.KEY_F28: 'kf28',
    _curses.KEY_F29: 'kf29',
    _curses.KEY_F3: 'kf3',
    _curses.KEY_F30: 'kf30',
    _curses.KEY_F31: 'kf31',
    _curses.KEY_F32: 'kf32',
    _curses.KEY_F33: 'kf33',
    _curses.KEY_F34: 'kf34',
    _curses.KEY_F35: 'kf35',
    _curses.KEY_F36: 'kf36',
    _curses.KEY_F37: 'kf37',
    _curses.KEY_F38: 'kf38',
    _curses.KEY_F39: 'kf39',
    _curses.KEY_F4: 'kf4',
    _curses.KEY_F40: 'kf40',
    _curses.KEY_F41: 'kf41',
    _curses.KEY_F42: 'kf42',
    _curses.KEY_F43: 'kf43',
    _curses.KEY_F44: 'kf44',
    _curses.KEY_F45: 'kf45',
    _curses.KEY_F46: 'kf46',
    _curses.KEY_F47: 'kf47',
    _curses.KEY_F48: 'kf48',
    _curses.KEY_F49: 'kf49',
    _curses.KEY_F5: 'kf5',
    _curses.KEY_F50: 'kf50',
    _curses.KEY_F51: 'kf51',
    _curses.KEY_F52: 'kf52',
    _curses.KEY_F53: 'kf53',
    _curses.KEY_F54: 'kf54',
    _curses.KEY_F55: 'kf55',
    _curses.KEY_F56: 'kf56',
    _curses.KEY_F57: 'kf57',
    _curses.KEY_F58: 'kf58',
    _curses.KEY_F59: 'kf59',
    _curses.KEY_F6: 'kf6',
    _curses.KEY_F60: 'kf60',
    _curses.KEY_F61: 'kf61',
    _curses.KEY_F62: 'kf62',
    _curses.KEY_F63: 'kf63',
    _curses.KEY_F7: 'kf7',
    _curses.KEY_F8: 'kf8',
    _curses.KEY_F9: 'kf9',
    _curses.KEY_FIND: 'kfnd',
    _curses.KEY_HELP: 'khlp',
    _curses.KEY_HOME: 'khome',
    _curses.KEY_IC: 'kich1',
    _curses.KEY_IL: 'kil1',
    _curses.KEY_LEFT: 'kcub1',
    _curses.KEY_LL: 'kll',
    _curses.KEY_MARK: 'kmrk',
    _curses.KEY_MESSAGE: 'kmsg',
    _curses.KEY_MOVE: 'kmov',
    _curses.KEY_NEXT: 'knxt',
    _curses.KEY_NPAGE: 'knp',
    _curses.KEY_OPEN: 'kopn',
    _curses.KEY_OPTIONS: 'kopt',
    _curses.KEY_PPAGE: 'kpp',
    _curses.KEY_PREVIOUS: 'kprv',
    _curses.KEY_PRINT: 'kprt',
    _curses.KEY_REDO: 'krdo',
    _curses.KEY_REFERENCE: 'kref',
    _curses.KEY_REFRESH: 'krfr',
    _curses.KEY_REPLACE: 'krpl',
    _curses.KEY_RESTART: 'krst',
    _curses.KEY_RESUME: 'kres',
    _curses.KEY_RIGHT: 'kcuf1',
    _curses.KEY_SAVE: 'ksav',
    _curses.KEY_SBEG: 'kBEG',
    _curses.KEY_SCANCEL: 'kCAN',
    _curses.KEY_SCOMMAND: 'kCMD',
    _curses.KEY_SCOPY: 'kCPY',
    _curses.KEY_SCREATE: 'kCRT',
    _curses.KEY_SDC: 'kDC',
    _curses.KEY_SDL: 'kDL',
    _curses.KEY_SELECT: 'kslt',
    _curses.KEY_SEND: 'kEND',
    _curses.KEY_SEOL: 'kEOL',
    _curses.KEY_SEXIT: 'kEXT',
    _curses.KEY_SF: 'kind',
    _curses.KEY_SFIND: 'kFND',
    _curses.KEY_SHELP: 'kHLP',
    _curses.KEY_SHOME: 'kHOM',
    _curses.KEY_SIC: 'kIC',
    _curses.KEY_SLEFT: 'kLFT',
    _curses.KEY_SMESSAGE: 'kMSG',
    _curses.KEY_SMOVE: 'kMOV',
    _curses.KEY_SNEXT: 'kNXT',
    _curses.KEY_SOPTIONS: 'kOPT',
    _curses.KEY_SPREVIOUS: 'kPRV',
    _curses.KEY_SPRINT: 'kPRT',
    _curses.KEY_SR: 'kri',
    _curses.KEY_SREDO: 'kRDO',
    _curses.KEY_SREPLACE: 'kRPL',
    _curses.KEY_SRIGHT: 'kRIT',
    _curses.KEY_SRSUME: 'kRES',
    _curses.KEY_SSAVE: 'kSAV',
    _curses.KEY_SSUSPEND: 'kSPD',
    _curses.KEY_STAB: 'khts',
    _curses.KEY_SUNDO: 'kUND',
    _curses.KEY_SUSPEND: 'kspd',
    _curses.KEY_UNDO: 'kund',
    _curses.KEY_UP: 'kcuu1'
    }

def has_key(ch):
    if isinstance(ch, str):
        ch = ord(ch)

    # Figure out the correct capability name for the keycode.
    capability_name = _capability_names.get(ch)
    if capability_name is None:
        return False

    #Check the current terminal description for that capability;
    #if present, return true, else return false.
    if _curses.tigetstr( capability_name ):
        return True
    else:
        return False

if __name__ == '__main__':
    # Compare the output of this implementation and the ncurses has_key,
    # on platforms where has_key is already available
    try:
        L = []
        _curses.initscr()
        for key in _capability_names.keys():
            system = _curses.has_key(key)
            python = has_key(key)
            if system != python:
                L.append( 'Mismatch for key %s, system=%i, Python=%i'
                          % (_curses.keyname( key ), system, python) )
    finally:
        _curses.endwin()
        for i in L: print(i)
PK4;�Z�?���
textpad.pynu�[���"""Simple textbox editing widget with Emacs-like keybindings."""

import curses
import curses.ascii

def rectangle(win, uly, ulx, lry, lrx):
    """Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    """
    win.vline(uly+1, ulx, curses.ACS_VLINE, lry - uly - 1)
    win.hline(uly, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.hline(lry, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.vline(uly+1, lrx, curses.ACS_VLINE, lry - uly - 1)
    win.addch(uly, ulx, curses.ACS_ULCORNER)
    win.addch(uly, lrx, curses.ACS_URCORNER)
    win.addch(lry, lrx, curses.ACS_LRCORNER)
    win.addch(lry, ulx, curses.ACS_LLCORNER)

class Textbox:
    """Editing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    """
    def __init__(self, win, insert_mode=False):
        self.win = win
        self.insert_mode = insert_mode
        self._update_max_yx()
        self.stripspaces = 1
        self.lastcmd = None
        win.keypad(1)

    def _update_max_yx(self):
        maxy, maxx = self.win.getmaxyx()
        self.maxy = maxy - 1
        self.maxx = maxx - 1

    def _end_of_line(self, y):
        """Go to the location of the first blank on the given line,
        returning the index of the last non-blank character."""
        self._update_max_yx()
        last = self.maxx
        while True:
            if curses.ascii.ascii(self.win.inch(y, last)) != curses.ascii.SP:
                last = min(self.maxx, last+1)
                break
            elif last == 0:
                break
            last = last - 1
        return last

    def _insert_printable_char(self, ch):
        self._update_max_yx()
        (y, x) = self.win.getyx()
        backyx = None
        while y < self.maxy or x < self.maxx:
            if self.insert_mode:
                oldch = self.win.inch()
            # The try-catch ignores the error we trigger from some curses
            # versions by trying to write into the lowest-rightmost spot
            # in the window.
            try:
                self.win.addch(ch)
            except curses.error:
                pass
            if not self.insert_mode or not curses.ascii.isprint(oldch):
                break
            ch = oldch
            (y, x) = self.win.getyx()
            # Remember where to put the cursor back since we are in insert_mode
            if backyx is None:
                backyx = y, x

        if backyx is not None:
            self.win.move(*backyx)

    def do_command(self, ch):
        "Process a single editing command."
        self._update_max_yx()
        (y, x) = self.win.getyx()
        self.lastcmd = ch
        if curses.ascii.isprint(ch):
            if y < self.maxy or x < self.maxx:
                self._insert_printable_char(ch)
        elif ch == curses.ascii.SOH:                           # ^a
            self.win.move(y, 0)
        elif ch in (curses.ascii.STX,curses.KEY_LEFT, curses.ascii.BS,curses.KEY_BACKSPACE):
            if x > 0:
                self.win.move(y, x-1)
            elif y == 0:
                pass
            elif self.stripspaces:
                self.win.move(y-1, self._end_of_line(y-1))
            else:
                self.win.move(y-1, self.maxx)
            if ch in (curses.ascii.BS, curses.KEY_BACKSPACE):
                self.win.delch()
        elif ch == curses.ascii.EOT:                           # ^d
            self.win.delch()
        elif ch == curses.ascii.ENQ:                           # ^e
            if self.stripspaces:
                self.win.move(y, self._end_of_line(y))
            else:
                self.win.move(y, self.maxx)
        elif ch in (curses.ascii.ACK, curses.KEY_RIGHT):       # ^f
            if x < self.maxx:
                self.win.move(y, x+1)
            elif y == self.maxy:
                pass
            else:
                self.win.move(y+1, 0)
        elif ch == curses.ascii.BEL:                           # ^g
            return 0
        elif ch == curses.ascii.NL:                            # ^j
            if self.maxy == 0:
                return 0
            elif y < self.maxy:
                self.win.move(y+1, 0)
        elif ch == curses.ascii.VT:                            # ^k
            if x == 0 and self._end_of_line(y) == 0:
                self.win.deleteln()
            else:
                # first undo the effect of self._end_of_line
                self.win.move(y, x)
                self.win.clrtoeol()
        elif ch == curses.ascii.FF:                            # ^l
            self.win.refresh()
        elif ch in (curses.ascii.SO, curses.KEY_DOWN):         # ^n
            if y < self.maxy:
                self.win.move(y+1, x)
                if x > self._end_of_line(y+1):
                    self.win.move(y+1, self._end_of_line(y+1))
        elif ch == curses.ascii.SI:                            # ^o
            self.win.insertln()
        elif ch in (curses.ascii.DLE, curses.KEY_UP):          # ^p
            if y > 0:
                self.win.move(y-1, x)
                if x > self._end_of_line(y-1):
                    self.win.move(y-1, self._end_of_line(y-1))
        return 1

    def gather(self):
        "Collect and return the contents of the window."
        result = ""
        self._update_max_yx()
        for y in range(self.maxy+1):
            self.win.move(y, 0)
            stop = self._end_of_line(y)
            if stop == 0 and self.stripspaces:
                continue
            for x in range(self.maxx+1):
                if self.stripspaces and x > stop:
                    break
                result = result + chr(curses.ascii.ascii(self.win.inch(y, x)))
            if self.maxy > 0:
                result = result + "\n"
        return result

    def edit(self, validate=None):
        "Edit in the widget window and collect the results."
        while 1:
            ch = self.win.getch()
            if validate:
                ch = validate(ch)
            if not ch:
                continue
            if not self.do_command(ch):
                break
            self.win.refresh()
        return self.gather()

if __name__ == '__main__':
    def test_editbox(stdscr):
        ncols, nlines = 9, 4
        uly, ulx = 15, 20
        stdscr.addstr(uly-2, ulx, "Use Ctrl-G to end editing.")
        win = curses.newwin(nlines, ncols, uly, ulx)
        rectangle(stdscr, uly-1, ulx-1, uly + nlines, ulx + ncols)
        stdscr.refresh()
        return Textbox(win).edit()

    str = curses.wrapper(test_editbox)
    print('Contents of text box:', repr(str))
PK4;�Z�E��"__pycache__/textpad.cpython-38.pycnu�[���U

e5d��@sVdZddlZddlZdd�ZGdd�d�ZedkrRdd	�Ze�e�Ze	d
e
e��dS)z:Simple textbox editing widget with Emacs-like keybindings.�NcCs�|�|d|tj||d�|�||dtj||d�|�||dtj||d�|�|d|tj||d�|�||tj�|�||tj�|�||tj�|�||tj	�dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�&/usr/lib64/python3.8/curses/textpad.py�	rectanglesr
c@sLeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    FcCs.||_||_|��d|_d|_|�d�dS�Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrr
rrr	�__init__+szTextbox.__init__cCs&|j��\}}|d|_|d|_dSr)rZgetmaxyx�maxy�maxx)rrrrrr	r3s
zTextbox._update_max_yxcCsX|��|j}tj�|j�||��tjjkr@t|j|d�}qTn
|dkrJqT|d}q|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.rr)rrr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8s
zTextbox._end_of_linecCs�|��|j��\}}d}||jks.||jkr�|jr>|j��}z|j�|�Wntj	k
rdYnX|jr�tj
�|�szq�|}|j��\}}|dkr||f}q|dk	r�|jj|�dS)N)
rr�getyxrrr
rrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs$

zTextbox._insert_printable_charcCsV|��|j��\}}||_tj�|�rJ||jks<||jkrF|�	|��n|tjj
krh|j�|d��n�|tjjtj
tjjtjfk�r|dkr�|j�||d�nB|dkr�n8|jr�|j�|d|�|d��n|j�|d|j�|tjjtjfk�rR|j���nL|tjjk�r"|j���n0|tjjk�rb|j�rN|j�||�|��n|j�||j��n�|tjjtjfk�r�||jk�r�|j�||d�n ||jk�r�n|j�|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|j�|dd��nF|tjjk�rZ|dk�r@|�|�dk�r@|j��n|j�||�|j��n�|tjjk�rt|j��n�|tjjtjfk�r�||jk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��nz|tjj k�r�|j�!�n`|tjj"tj#fk�rR|dk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��dS)z!Process a single editing command.rr)$rrrrrrrrrr ZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr	�
do_command_sr
zTextbox.do_commandc
Cs�d}|��t|jd�D]�}|j�|d�|�|�}|dkrF|jrFqt|jd�D]4}|jrj||krjq�|tt	j
�
|j�||���}qT|jdkr|d}q|S)z.Collect and return the contents of the window.�rr�
)r�rangerrrrrr�chrrrr)r�resultr�stoprrrr	�gather�s
 

zTextbox.gatherNcCs<|j��}|r||�}|sq|�|�s(q4|j��q|��S)z2Edit in the widget window and collect the results.)rZgetchr#r"r*)rZvalidaterrrr	�edit�s

zTextbox.edit)F)N)�__name__�
__module__�__qualname__�__doc__rrrr r#r*r+rrrr	rs
Ar�__main__cCsfd\}}d\}}|�|d|d�t�||||�}t||d|d||||�|��t|���S)N)�	�)���zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr
r"rr+)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r6zContents of text box:)r/rZcurses.asciir
rr,r6�wrapper�str�print�reprrrrr	�<module>s
,	
PK4;�Z���
��&__pycache__/panel.cpython-38.opt-1.pycnu�[���U

e5dW�@sdZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__Z
_curses_panel�rr�$/usr/lib64/python3.8/curses/panel.py�<module>sPK4;�Z��V�&__pycache__/panel.cpython-38.opt-2.pycnu�[���U

e5dW�@sddlTdS)�)�*N)Z
_curses_panel�rr�$/usr/lib64/python3.8/curses/panel.py�<module>�PK4;�Z1��^^)__pycache__/__init__.cpython-38.opt-1.pycnu�[���U

e5d��@shdZddlTddlZddlZdd�Zdd�ZzeWn e	k
rTdd	lmZYnXd
d�Z
de
_dS)
z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*NcCspddl}ddl}ttj�dd�tj��d�|�	�}|j
��D],\}}|dd�dks^|dkr>t|||�q>|S)NrZTERM�unknown)Zterm�fd�ZACS_)ZLINESZCOLS)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr�stdscr�key�value�r�'/usr/lib64/python3.8/curses/__init__.pyrs�rcCs@ddl}ddl}|��}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr�start_color�hasattrrr)rrZretvalrrrr*s

r�)�has_keyc	Os�|r|^}}n<d|kr:|�d�}ddl}|jdtdd�ntdt|���zHt�}t�t
�|�d	�z
t�WnYnX||f|�|�W�Sdt�kr�|�d�t�t	�t
�XdS)
aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    �funcrNz0Passing 'func' as keyword argument is deprecated�)�
stacklevelz7wrapper expected at least 1 positional argument, got %drr)�pop�warnings�warn�DeprecationWarning�	TypeError�len�localsZkeypadZechoZnocbreakZendwinrZnoechoZcbreakr)�args�kwdsrr!rrrr�wrapper?s6

��



r)z(func, /, *args, **kwds))�__doc__r�osr�sysrrrr�	NameErrorr)�__text_signature__rrrr�<module>s
2PK4;�Z��fTT)__pycache__/__init__.cpython-38.opt-2.pycnu�[���U

e5d��@sdddlTddlZddlZdd�Zdd�ZzeWn ek
rPddlmZYnXd	d
�Z	de	_
dS)�)�*NcCspddl}ddl}ttj�dd�tj��d�|�	�}|j
��D],\}}|dd�dks^|dkr>t|||�q>|S)NrZTERM�unknown)Zterm�fd�ZACS_)ZLINESZCOLS)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr�stdscr�key�value�r�'/usr/lib64/python3.8/curses/__init__.pyrs�rcCs@ddl}ddl}|��}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr�start_color�hasattrrr)rrZretvalrrrr*s

r�)�has_keyc	Os�|r|^}}n<d|kr:|�d�}ddl}|jdtdd�ntdt|���zHt�}t�t
�|�d�z
t�WnYnX||f|�|�W�Sdt�kr�|�d�t�t	�t
�XdS)	N�funcrz0Passing 'func' as keyword argument is deprecated�)�
stacklevelz7wrapper expected at least 1 positional argument, got %drr)�pop�warnings�warn�DeprecationWarning�	TypeError�len�localsZkeypadZechoZnocbreakZendwinrZnoechoZcbreakr)�args�kwdsrr!rrrr�wrapper?s6

��



r)z(func, /, *args, **kwds))r�osr�sysrrrr�	NameErrorr)�__text_signature__rrrr�<module>
s
2PK4;�Z�*���(__pycache__/has_key.cpython-38.opt-1.pycnu�[���U

e5d�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzVgZ�e���e����D]<Z�e��e��Z�e�e��Z�e�e�k�r�e���d�e��e��e�e�f��q�W5e���e�D]Z�e�e���qXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}t�|�}|dkr(dSt�|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.8/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__Zendwin�L�i�printZinitscr�keys�key�system�python�appendZkeynamerrrr	�<module>sx��


�PK4;�Z#�
qww&__pycache__/ascii.cpython-38.opt-1.pycnu�[���U

e5d�	�!@s~dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDdE�Z&dFdG�Z'dHdI�Z(dJdK�Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dlS)mz3Constants and membership tests for ASCII characters����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord��c�rI�$/usr/lib64/python3.8/curses/ascii.py�_ctoi0srKcCst|�pt|�S�N)�isalpha�isdigitrGrIrIrJ�isalnum6�rOcCst|�pt|�SrL)�isupper�islowerrGrIrIrJrM7rPrMcCsdt|�kodkSS)Nrr"�rKrGrIrIrJ�isascii8rPrTcCst|�dkS)N)r
r!rSrGrIrIrJ�isblank9rPrUcCs(dt|�kodknp&t|�dkS)Nrr r"rSrGrIrIrJ�iscntrl:rPrVcCsdt|�kodkSS)N�0�9rSrGrIrIrJrN;rPrNcCsdt|�kodkSS)N�!�~rSrGrIrIrJ�isgraph<rPr[cCsdt|�kodkSS)N�a�zrSrGrIrIrJrR=rPrRcCsdt|�kodkSS)Nr!rZrSrGrIrIrJ�isprint>rPr^cCst|�ot|�SrL)r[rOrGrIrIrJ�ispunct?rPr_cCst|�dkS)N)r
rrr
rr!rSrGrIrIrJ�isspace@rPr`cCsdt|�kodkSS)N�A�ZrSrGrIrIrJrQArPrQcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nra�Fr\�f)rNrKrGrIrIrJ�isxdigitBs��recCsdt|�kodkSS)Nrr!rSrGrIrIrJ�isctrlDrPrfcCst|�dkS)Nr"rSrGrIrIrJ�ismetaErPrgcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr"�rE�chrrKrGrIrIrJ�asciiGsrjcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr rhrGrIrIrJ�ctrlMsrkcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�rhrGrIrIrJ�altSsrmcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rl�!)rKr^ri)rH�bitsZreprIrIrJ�unctrlYsrqN):�__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJ�<module>s��PK4;�Z�?ݺ��(__pycache__/textpad.cpython-38.opt-2.pycnu�[���U

e5d��@sRddlZddlZdd�ZGdd�d�ZedkrNdd�Ze�e�Zed	e	e��dS)
�NcCs�|�|d|tj||d�|�||dtj||d�|�||dtj||d�|�|d|tj||d�|�||tj�|�||tj�|�||tj�|�||tj	�dS�N�)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r	�&/usr/lib64/python3.8/curses/textpad.py�	rectanglesrc@sHeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zddd�Z	dS)�TextboxFcCs.||_||_|��d|_d|_|�d�dSr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrr
r	r	r
�__init__+szTextbox.__init__cCs&|j��\}}|d|_|d|_dSr)rZgetmaxyx�maxy�maxx)rrrr	r	r
r3s
zTextbox._update_max_yxcCsX|��|j}tj�|j�||��tjjkr@t|j|d�}qTn
|dkrJqT|d}q|S)Nrr)rrr�asciir�inchZSP�min)r�yZlastr	r	r
�_end_of_line8s
zTextbox._end_of_linecCs�|��|j��\}}d}||jks.||jkr�|jr>|j��}z|j�|�Wntj	k
rdYnX|jr�tj
�|�szq�|}|j��\}}|dkr||f}q|dk	r�|jj|�dS�N)
rr�getyxrrr
rrr�errorr�isprint�move)r�chr�xZbackyxZoldchr	r	r
�_insert_printable_charFs$

zTextbox._insert_printable_charcCsV|��|j��\}}||_tj�|�rJ||jks<||jkrF|�	|��n|tjj
krh|j�|d��n�|tjjtj
tjjtjfk�r|dkr�|j�||d�nB|dkr�n8|jr�|j�|d|�|d��n|j�|d|j�|tjjtjfk�rR|j���nL|tjjk�r"|j���n0|tjjk�rb|j�rN|j�||�|��n|j�||j��n�|tjjtjfk�r�||jk�r�|j�||d�n ||jk�r�n|j�|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|j�|dd��nF|tjjk�rZ|dk�r@|�|�dk�r@|j��n|j�||�|j��n�|tjjk�rt|j��n�|tjjtjfk�r�||jk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��nz|tjj k�r�|j�!�n`|tjj"tj#fk�rR|dk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��dS)Nrr)$rrrrrrrrrr!ZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrr r	r	r
�
do_command_sr
zTextbox.do_commandc
Cs�d}|��t|jd�D]�}|j�|d�|�|�}|dkrF|jrFqt|jd�D]4}|jrj||krjq�|tt	j
�
|j�||���}qT|jdkr|d}q|S)N�rr�
)r�rangerrrrrr�chrrrr)r�resultr�stopr r	r	r
�gather�s
 

zTextbox.gatherNcCs<|j��}|r||�}|sq|�|�s(q4|j��q|��Sr)rZgetchr$r#r+)rZvalidaterr	r	r
�edit�s

zTextbox.edit)F)N)
�__name__�
__module__�__qualname__rrrr!r$r+r,r	r	r	r
rs
Ar�__main__cCsfd\}}d\}}|�|d|d�t�||||�}t||d|d||||�|��t|���S)N)�	�)���zUse Ctrl-G to end editing.r)ZaddstrrZnewwinrr#rr,)ZstdscrZncolsZnlinesrrrr	r	r
�test_editbox�s r6zContents of text box:)
rZcurses.asciirrr-r6�wrapper�str�print�reprr	r	r	r
�<module>s
,	
PK4;�Z���
�� __pycache__/panel.cpython-38.pycnu�[���U

e5dW�@sdZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__Z
_curses_panel�rr�$/usr/lib64/python3.8/curses/panel.py�<module>sPK4;�Z�p1�33&__pycache__/ascii.cpython-38.opt-2.pycnu�[���U

e5d�	�!@szdZdZdZdZdZdZdZdZdZd	Z	d	Z
d
Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBg!Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4dcdd�Z5dedf�Z6dgdh�Z7didj�Z8dkS)l����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord��c�rI�$/usr/lib64/python3.8/curses/ascii.py�_ctoi0srKcCst|�pt|�S�N)�isalpha�isdigitrGrIrIrJ�isalnum6�rOcCst|�pt|�SrL)�isupper�islowerrGrIrIrJrM7rPrMcCsdt|�kodkSS)Nrr"�rKrGrIrIrJ�isascii8rPrTcCst|�dkS)N)r
r!rSrGrIrIrJ�isblank9rPrUcCs(dt|�kodknp&t|�dkS)Nrr r"rSrGrIrIrJ�iscntrl:rPrVcCsdt|�kodkSS)N�0�9rSrGrIrIrJrN;rPrNcCsdt|�kodkSS)N�!�~rSrGrIrIrJ�isgraph<rPr[cCsdt|�kodkSS)N�a�zrSrGrIrIrJrR=rPrRcCsdt|�kodkSS)Nr!rZrSrGrIrIrJ�isprint>rPr^cCst|�ot|�SrL)r[rOrGrIrIrJ�ispunct?rPr_cCst|�dkS)N)r
rrr
rr!rSrGrIrIrJ�isspace@rPr`cCsdt|�kodkSS)N�A�ZrSrGrIrIrJrQArPrQcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nra�Fr\�f)rNrKrGrIrIrJ�isxdigitBs��recCsdt|�kodkSS)Nrr!rSrGrIrIrJ�isctrlDrPrfcCst|�dkS)Nr"rSrGrIrIrJ�ismetaErPrgcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr"�rE�chrrKrGrIrIrJ�asciiGsrjcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr rhrGrIrIrJ�ctrlMsrkcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�rhrGrIrIrJ�altSsrmcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rl�!)rKr^ri)rH�bitsZreprIrIrJ�unctrlYsrqN)9r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJ�<module>s��PK4;�Z#�
qww __pycache__/ascii.cpython-38.pycnu�[���U

e5d�	�!@s~dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDdE�Z&dFdG�Z'dHdI�Z(dJdK�Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dlS)mz3Constants and membership tests for ASCII characters����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord��c�rI�$/usr/lib64/python3.8/curses/ascii.py�_ctoi0srKcCst|�pt|�S�N)�isalpha�isdigitrGrIrIrJ�isalnum6�rOcCst|�pt|�SrL)�isupper�islowerrGrIrIrJrM7rPrMcCsdt|�kodkSS)Nrr"�rKrGrIrIrJ�isascii8rPrTcCst|�dkS)N)r
r!rSrGrIrIrJ�isblank9rPrUcCs(dt|�kodknp&t|�dkS)Nrr r"rSrGrIrIrJ�iscntrl:rPrVcCsdt|�kodkSS)N�0�9rSrGrIrIrJrN;rPrNcCsdt|�kodkSS)N�!�~rSrGrIrIrJ�isgraph<rPr[cCsdt|�kodkSS)N�a�zrSrGrIrIrJrR=rPrRcCsdt|�kodkSS)Nr!rZrSrGrIrIrJ�isprint>rPr^cCst|�ot|�SrL)r[rOrGrIrIrJ�ispunct?rPr_cCst|�dkS)N)r
rrr
rr!rSrGrIrIrJ�isspace@rPr`cCsdt|�kodkSS)N�A�ZrSrGrIrIrJrQArPrQcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nra�Fr\�f)rNrKrGrIrIrJ�isxdigitBs��recCsdt|�kodkSS)Nrr!rSrGrIrIrJ�isctrlDrPrfcCst|�dkS)Nr"rSrGrIrIrJ�ismetaErPrgcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr"�rE�chrrKrGrIrIrJ�asciiGsrjcCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr rhrGrIrIrJ�ctrlMsrkcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�rhrGrIrIrJ�altSsrmcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rl�!)rKr^ri)rH�bitsZreprIrIrJ�unctrlYsrqN):�__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJ�<module>s��PK4;�Z�E��(__pycache__/textpad.cpython-38.opt-1.pycnu�[���U

e5d��@sVdZddlZddlZdd�ZGdd�d�ZedkrRdd	�Ze�e�Ze	d
e
e��dS)z:Simple textbox editing widget with Emacs-like keybindings.�NcCs�|�|d|tj||d�|�||dtj||d�|�||dtj||d�|�|d|tj||d�|�||tj�|�||tj�|�||tj�|�||tj	�dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�&/usr/lib64/python3.8/curses/textpad.py�	rectanglesr
c@sLeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    FcCs.||_||_|��d|_d|_|�d�dS�Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrr
rrr	�__init__+szTextbox.__init__cCs&|j��\}}|d|_|d|_dSr)rZgetmaxyx�maxy�maxx)rrrrrr	r3s
zTextbox._update_max_yxcCsX|��|j}tj�|j�||��tjjkr@t|j|d�}qTn
|dkrJqT|d}q|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.rr)rrr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8s
zTextbox._end_of_linecCs�|��|j��\}}d}||jks.||jkr�|jr>|j��}z|j�|�Wntj	k
rdYnX|jr�tj
�|�szq�|}|j��\}}|dkr||f}q|dk	r�|jj|�dS)N)
rr�getyxrrr
rrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs$

zTextbox._insert_printable_charcCsV|��|j��\}}||_tj�|�rJ||jks<||jkrF|�	|��n|tjj
krh|j�|d��n�|tjjtj
tjjtjfk�r|dkr�|j�||d�nB|dkr�n8|jr�|j�|d|�|d��n|j�|d|j�|tjjtjfk�rR|j���nL|tjjk�r"|j���n0|tjjk�rb|j�rN|j�||�|��n|j�||j��n�|tjjtjfk�r�||jk�r�|j�||d�n ||jk�r�n|j�|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|j�|dd��nF|tjjk�rZ|dk�r@|�|�dk�r@|j��n|j�||�|j��n�|tjjk�rt|j��n�|tjjtjfk�r�||jk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��nz|tjj k�r�|j�!�n`|tjj"tj#fk�rR|dk�rR|j�|d|�||�|d�k�rR|j�|d|�|d��dS)z!Process a single editing command.rr)$rrrrrrrrrr ZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr	�
do_command_sr
zTextbox.do_commandc
Cs�d}|��t|jd�D]�}|j�|d�|�|�}|dkrF|jrFqt|jd�D]4}|jrj||krjq�|tt	j
�
|j�||���}qT|jdkr|d}q|S)z.Collect and return the contents of the window.�rr�
)r�rangerrrrrr�chrrrr)r�resultr�stoprrrr	�gather�s
 

zTextbox.gatherNcCs<|j��}|r||�}|sq|�|�s(q4|j��q|��S)z2Edit in the widget window and collect the results.)rZgetchr#r"r*)rZvalidaterrrr	�edit�s

zTextbox.edit)F)N)�__name__�
__module__�__qualname__�__doc__rrrr r#r*r+rrrr	rs
Ar�__main__cCsfd\}}d\}}|�|d|d�t�||||�}t||d|d||||�|��t|���S)N)�	�)���zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr
r"rr+)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r6zContents of text box:)r/rZcurses.asciir
rr,r6�wrapper�str�print�reprrrrr	�<module>s
,	
PK4;�Z�*���(__pycache__/has_key.cpython-38.opt-2.pycnu�[���U

e5d�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzVgZ�e���e����D]<Z�e��e��Z�e�e��Z�e�e�k�r�e���d�e��e��e�e�f��q�W5e���e�D]Z�e�e���qXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}t�|�}|dkr(dSt�|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.8/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__Zendwin�L�i�printZinitscr�keys�key�system�python�appendZkeynamerrrr	�<module>sx��


�PK4;�Z�*���"__pycache__/has_key.cpython-38.pycnu�[���U

e5d�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzVgZ�e���e����D]<Z�e��e��Z�e�e��Z�e�e�k�r�e���d�e��e��e�e�f��q�W5e���e�D]Z�e�e���qXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}t�|�}|dkr(dSt�|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.8/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__Zendwin�L�i�printZinitscr�keys�key�system�python�appendZkeynamerrrr	�<module>sx��


�PK4;�Z1��^^#__pycache__/__init__.cpython-38.pycnu�[���U

e5d��@shdZddlTddlZddlZdd�Zdd�ZzeWn e	k
rTdd	lmZYnXd
d�Z
de
_dS)
z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*NcCspddl}ddl}ttj�dd�tj��d�|�	�}|j
��D],\}}|dd�dks^|dkr>t|||�q>|S)NrZTERM�unknown)Zterm�fd�ZACS_)ZLINESZCOLS)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr�stdscr�key�value�r�'/usr/lib64/python3.8/curses/__init__.pyrs�rcCs@ddl}ddl}|��}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr�start_color�hasattrrr)rrZretvalrrrr*s

r�)�has_keyc	Os�|r|^}}n<d|kr:|�d�}ddl}|jdtdd�ntdt|���zHt�}t�t
�|�d	�z
t�WnYnX||f|�|�W�Sdt�kr�|�d�t�t	�t
�XdS)
aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    �funcrNz0Passing 'func' as keyword argument is deprecated�)�
stacklevelz7wrapper expected at least 1 positional argument, got %drr)�pop�warnings�warn�DeprecationWarning�	TypeError�len�localsZkeypadZechoZnocbreakZendwinrZnoechoZcbreakr)�args�kwdsrr!rrrr�wrapper?s6

��



r)z(func, /, *args, **kwds))�__doc__r�osr�sysrrrr�	NameErrorr)�__text_signature__rrrr�<module>s
2PK4;�Zxf�WWpanel.pynu�[���"""curses.panel

Module for using panels with curses.
"""

from _curses_panel import *
PK�H�ZT�~R��(__pycache__/has_key.cpython-36.opt-1.pycnu�[���3


 \�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzZgZ�ej��xHe�j��D]<Z�ej�e��Z�e�e��Z�e�e�k�r�e�j�d�ej�e��e�e�f��q�WWdej��xe�D]Z�e�e���qWXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}tj|�}|dkr(dStj|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.6/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__�LZinitscr�keys�key�system�python�appendZkeynameZendwin�i�printrrrr	�<module>sF




PK�H�Z�UT���)__pycache__/__init__.cpython-36.opt-2.pycnu�[���3


 \&
�@s^ddlTddlZddlZdd�Zdd�ZyeWn ek
rPddlmZYnXd	d
�Z	dS)�)�*NcCstddl}ddl}ttjjdd�tjj�d�|j	�}x:|j
j�D],\}}|dd�dks`|d	kr@t|||�q@W|S)
NrZTERM�unknown)Zterm�fd�ZACS_�LINES�COLS)rr)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr	�stdscr�key�value�r�'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j�}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr	�start_color�hasattrrr)rr	Zretvalrrrr*s

r�)�has_keycOsrzDt�}t�t�|jd�y
t�WnYnX||f|�|�Sdt�krl|jd�t�t�t�XdS)Nrrr)	rZnoechoZcbreakZkeypadr�localsZechoZnocbreakZendwin)�func�args�kwdsrrrr�wrapper?s



r#)
r�osr
�sysr
rrr�	NameErrorr#rrrr�<module>
s
PK�H�ZT�~R��(__pycache__/has_key.cpython-36.opt-2.pycnu�[���3


 \�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzZgZ�ej��xHe�j��D]<Z�ej�e��Z�e�e��Z�e�e�k�r�e�j�d�ej�e��e�e�f��q�WWdej��xe�D]Z�e�e���qWXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}tj|�}|dkr(dStj|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.6/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__�LZinitscr�keys�key�system�python�appendZkeynameZendwin�i�printrrrr	�<module>sF




PK�H�Zd�Q'��&__pycache__/panel.cpython-36.opt-2.pycnu�[���3


 \W�@sddlTdS)�)�*N)Z
_curses_panel�rr�$/usr/lib64/python3.6/curses/panel.py�<module>sPK�H�Zw����&__pycache__/panel.cpython-36.opt-1.pycnu�[���3


 \W�@sdZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__Z
_curses_panel�rr�$/usr/lib64/python3.6/curses/panel.py�<module>sPK�H�ZT�~R��"__pycache__/has_key.cpython-36.pycnu�[���3


 \�*@sddlZejdejdejdejdejdejdejdejd	ej	d
ej
dejdejd
ej
dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejd�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i�Z�d�d��Z�e�d�k�rzZgZ�ej��xHe�j��D]<Z�ej�e��Z�e�e��Z�e�e�k�r�e�j�d�ej�e��e�e�f��q�WWdej��xe�D]Z�e�e���qWXdS)��NZka1Zka3Zkb2ZkbsZkbegZkcbtZkc1Zkc3ZkcanZktbcZkclrZkcloZkcmdZkcpyZkcrtZkctabZkdch1Zkdl1Zkcud1ZkrmirZkendZkentZkelZkedZkextZkf0Zkf1Zkf10Zkf11Zkf12Zkf13Zkf14Zkf15Zkf16Zkf17Zkf18Zkf19Zkf2Zkf20Zkf21Zkf22Zkf23Zkf24Zkf25Zkf26Zkf27Zkf28Zkf29Zkf3Zkf30Zkf31Zkf32Zkf33Zkf34Zkf35Zkf36Zkf37Zkf38Zkf39Zkf4Zkf40Zkf41Zkf42Zkf43Zkf44Zkf45Zkf46Zkf47Zkf48Zkf49Zkf5Zkf50Zkf51Zkf52Zkf53Zkf54Zkf55Zkf56Zkf57Zkf58Zkf59Zkf6Zkf60Zkf61Zkf62Zkf63Zkf7Zkf8Zkf9ZkfndZkhlpZkhomeZkich1Zkil1Zkcub1ZkllZkmrkZkmsgZkmovZknxtZknpZkopnZkoptZkppZkprvZkprtZkrdoZkrefZkrfrZkrplZkrstZkresZkcuf1ZksavZkBEGZkCANZkCMDZkCPYZkCRTZkDCZkDLZksltZkENDZkEOLZkEXTZkindZkFNDZkHLPZkHOMZkICZkLFTZkMSGZkMOVZkNXTZkOPTZkPRVZkPRTZkriZkRDOZkRPLZkRITZkRESZkSAVZkSPDZkhtsZkUNDZkspdZkundZkcuu1cCs>t|t�rt|�}tj|�}|dkr(dStj|�r6dSdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_cursesZtigetstr)ZchZcapability_name�r�&/usr/lib64/python3.6/curses/has_key.py�has_key�s


r
�__main__z)Mismatch for key %s, system=%i, Python=%i)�rZKEY_A1ZKEY_A3ZKEY_B2Z
KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z
KEY_CANCELZ	KEY_CATABZ	KEY_CLEARZ	KEY_CLOSEZKEY_COMMANDZKEY_COPYZ
KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ	KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZKEY_MESSAGEZKEY_MOVEZKEY_NEXTZ	KEY_NPAGEZKEY_OPENZKEY_OPTIONSZ	KEY_PPAGEZKEY_PREVIOUSZ	KEY_PRINTZKEY_REDOZ
KEY_REFERENCEZKEY_REFRESHZKEY_REPLACEZKEY_RESTARTZ
KEY_RESUMEZ	KEY_RIGHTZKEY_SAVEZKEY_SBEGZKEY_SCANCELZKEY_SCOMMANDZ	KEY_SCOPYZKEY_SCREATEZKEY_SDCZKEY_SDLZ
KEY_SELECTZKEY_SENDZKEY_SEOLZ	KEY_SEXITZKEY_SFZ	KEY_SFINDZ	KEY_SHELPZ	KEY_SHOMEZKEY_SICZ	KEY_SLEFTZKEY_SMESSAGEZ	KEY_SMOVEZ	KEY_SNEXTZKEY_SOPTIONSZ
KEY_SPREVIOUSZ
KEY_SPRINTZKEY_SRZ	KEY_SREDOZKEY_SREPLACEZ
KEY_SRIGHTZ
KEY_SRSUMEZ	KEY_SSAVEZKEY_SSUSPENDZKEY_STABZ	KEY_SUNDOZKEY_SUSPENDZKEY_UNDOZKEY_UPrr
�__name__�LZinitscr�keys�key�system�python�appendZkeynameZendwin�i�printrrrr	�<module>sF




PK�H�Z���SS __pycache__/ascii.cpython-36.pycnu�[���3


 \�	�!@s~dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDdE�Z&dFdG�Z'dHdI�Z(dJdK�Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dlS)mz3Constants and membership tests for ASCII characters����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord)�c�rH�$/usr/lib64/python3.6/curses/ascii.py�_ctoi0srJcCst|�pt|�S)N)�isalpha�isdigit)rGrHrHrI�isalnum6srMcCst|�pt|�S)N)�isupper�islower)rGrHrHrIrK7srKcCsdt|�kodkSS)Nrr")rJ)rGrHrHrI�isascii8srPcCst|�dkS)Nr
r!)r
r!)rJ)rGrHrHrI�isblank9srQcCs(dt|�kodknp&t|�dkS)Nrr r")rJ)rGrHrHrI�iscntrl:srRcCsdt|�kodkSS)N�0�9)rJ)rGrHrHrIrL;srLcCsdt|�kodkSS)N�!�~)rJ)rGrHrHrI�isgraph<srWcCsdt|�kodkSS)N�a�z)rJ)rGrHrHrIrO=srOcCsdt|�kodkSS)Nr!rV)rJ)rGrHrHrI�isprint>srZcCst|�ot|�S)N)rWrM)rGrHrHrI�ispunct?sr[cCst|�dkS)Nr
rrr
rr!)r
rrr
rr!)rJ)rGrHrHrI�isspace@sr\cCsdt|�kodkSS)N�A�Z)rJ)rGrHrHrIrNAsrNcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nr]�FrX�f)rLrJ)rGrHrHrI�isxdigitBsracCsdt|�kodkSS)Nrr!)rJ)rGrHrHrI�isctrlDsrbcCst|�dkS)Nr")rJ)rGrHrHrI�ismetaEsrccCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr")rE�chrrJ)rGrHrHrI�asciiGsrecCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr )rErdrJ)rGrHrHrI�ctrlMsrfcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�)rErdrJ)rGrHrHrI�altSsrhcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rg�!)rJrZrd)rG�bitsZreprHrHrI�unctrlYsrlN):�__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrI�<module>szPK�H�Zw���� __pycache__/panel.cpython-36.pycnu�[���3


 \W�@sdZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__Z
_curses_panel�rr�$/usr/lib64/python3.6/curses/panel.py�<module>sPK�H�ZM��A&__pycache__/ascii.cpython-36.opt-2.pycnu�[���3


 \�	�!@szdZdZdZdZdZdZdZdZdZd	Z	d	Z
d
Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBg!Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4dcdd�Z5dedf�Z6dgdh�Z7didj�Z8dkS)l����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord)�c�rH�$/usr/lib64/python3.6/curses/ascii.py�_ctoi0srJcCst|�pt|�S)N)�isalpha�isdigit)rGrHrHrI�isalnum6srMcCst|�pt|�S)N)�isupper�islower)rGrHrHrIrK7srKcCsdt|�kodkSS)Nrr")rJ)rGrHrHrI�isascii8srPcCst|�dkS)Nr
r!)r
r!)rJ)rGrHrHrI�isblank9srQcCs(dt|�kodknp&t|�dkS)Nrr r")rJ)rGrHrHrI�iscntrl:srRcCsdt|�kodkSS)N�0�9)rJ)rGrHrHrIrL;srLcCsdt|�kodkSS)N�!�~)rJ)rGrHrHrI�isgraph<srWcCsdt|�kodkSS)N�a�z)rJ)rGrHrHrIrO=srOcCsdt|�kodkSS)Nr!rV)rJ)rGrHrHrI�isprint>srZcCst|�ot|�S)N)rWrM)rGrHrHrI�ispunct?sr[cCst|�dkS)Nr
rrr
rr!)r
rrr
rr!)rJ)rGrHrHrI�isspace@sr\cCsdt|�kodkSS)N�A�Z)rJ)rGrHrHrIrNAsrNcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nr]�FrX�f)rLrJ)rGrHrHrI�isxdigitBsracCsdt|�kodkSS)Nrr!)rJ)rGrHrHrI�isctrlDsrbcCst|�dkS)Nr")rJ)rGrHrHrI�ismetaEsrccCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr")rE�chrrJ)rGrHrHrI�asciiGsrecCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr )rErdrJ)rGrHrHrI�ctrlMsrfcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�)rErdrJ)rGrHrHrI�altSsrhcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rg�!)rJrZrd)rG�bitsZreprHrHrI�unctrlYsrlN)9r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrI�<module>sxPK�H�ZE�O"__pycache__/textpad.cpython-36.pycnu�[���3


 \��@sVdZddlZddlZdd�ZGdd�d�ZedkrRdd	�Zeje�Ze	d
e
e��dS)z:Simple textbox editing widget with Emacs-like keybindings.�NcCs�|j|d|tj||d�|j||dtj||d�|j||dtj||d�|j|d|tj||d�|j||tj�|j||tj�|j||tj�|j||tj	�dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�&/usr/lib64/python3.6/curses/textpad.py�	rectanglesr
c@sLeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    FcCs.||_||_|j�d|_d|_|jd�dS)Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrrrrr	�__init__+szTextbox.__init__cCs&|jj�\}}|d|_|d|_dS)Nr)rZgetmaxyx�maxy�maxx)rrrrrr	r
3s
zTextbox._update_max_yxcCs\|j�|j}xHtjj|jj||��tjjkrBt|j|d�}Pn
|dkrLP|d}qW|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.rr)r
rr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8szTextbox._end_of_linecCs�|j�|jj�\}}d}x�||jks0||jkr�|jr@|jj�}y|jj|�Wntj	k
rfYnX|js~tj
j|�r�P|}|jj�\}}|dkr||f}qW|dk	r�|jj|�dS)N)
r
r�getyxrrrrrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs$
zTextbox._insert_printable_charcCsV|j�|jj�\}}||_tjj|�rJ||jks<||jkrF|j	|��n|tjj
krh|jj|d��n�|tjjtj
tjjtjfk�r|dkr�|jj||d�nB|dkr�n8|jr�|jj|d|j|d��n|jj|d|j�|tjjtjfk�rR|jj��nL|tjjk�r"|jj��n0|tjjk�rb|j�rN|jj||j|��n|jj||j��n�|tjjtjfk�r�||jk�r�|jj||d�n ||jk�r�n|jj|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|jj|dd��nF|tjjk�rZ|dk�r@|j|�dk�r@|jj�n|jj||�|jj�n�|tjjk�rt|jj�n�|tjjtjfk�r�||jk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��nz|tjj k�r�|jj!�n`|tjj"tj#fk�rR|dk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��dS)z!Process a single editing command.rr)$r
rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refresh�SOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr	�
do_command_sr
zTextbox.do_commandcCs�d}|j�x�t|jd�D]�}|jj|d�|j|�}|dkrH|jrHqxDt|jd�D]2}|jrl||krlP|tt	j
j
|jj||���}qXW|jdkr|d}qW|S)z.Collect and return the contents of the window.�rr�
)r
�rangerrrrrr�chrrrr)r�resultr�stoprrrr	�gather�s
"
zTextbox.gatherNcCs@x6|jj�}|r||�}|sq|j|�s*P|jj�qW|j�S)z2Edit in the widget window and collect the results.)rZgetchr#r!r*)rZvalidaterrrr	�edit�s

zTextbox.edit)F)N)�__name__�
__module__�__qualname__�__doc__rr
rrr#r*r+rrrr	rs
Ar�__main__cCsfd\}}d	\}}|j|d|d�tj||||�}t||d|d||||�|j�t|�j�S)
N�	����zUse Ctrl-G to end editing.r)r1r2)r3r4)ZaddstrrZnewwinr
r!rr+)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r6zContents of text box:)r/rZcurses.asciir
rr,r6�wrapper�str�print�reprrrrr	�<module>s
,	
PK�H�ZE�O(__pycache__/textpad.cpython-36.opt-1.pycnu�[���3


 \��@sVdZddlZddlZdd�ZGdd�d�ZedkrRdd	�Zeje�Ze	d
e
e��dS)z:Simple textbox editing widget with Emacs-like keybindings.�NcCs�|j|d|tj||d�|j||dtj||d�|j||dtj||d�|j|d|tj||d�|j||tj�|j||tj�|j||tj�|j||tj	�dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�&/usr/lib64/python3.6/curses/textpad.py�	rectanglesr
c@sLeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    FcCs.||_||_|j�d|_d|_|jd�dS)Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrrrrr	�__init__+szTextbox.__init__cCs&|jj�\}}|d|_|d|_dS)Nr)rZgetmaxyx�maxy�maxx)rrrrrr	r
3s
zTextbox._update_max_yxcCs\|j�|j}xHtjj|jj||��tjjkrBt|j|d�}Pn
|dkrLP|d}qW|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.rr)r
rr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8szTextbox._end_of_linecCs�|j�|jj�\}}d}x�||jks0||jkr�|jr@|jj�}y|jj|�Wntj	k
rfYnX|js~tj
j|�r�P|}|jj�\}}|dkr||f}qW|dk	r�|jj|�dS)N)
r
r�getyxrrrrrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs$
zTextbox._insert_printable_charcCsV|j�|jj�\}}||_tjj|�rJ||jks<||jkrF|j	|��n|tjj
krh|jj|d��n�|tjjtj
tjjtjfk�r|dkr�|jj||d�nB|dkr�n8|jr�|jj|d|j|d��n|jj|d|j�|tjjtjfk�rR|jj��nL|tjjk�r"|jj��n0|tjjk�rb|j�rN|jj||j|��n|jj||j��n�|tjjtjfk�r�||jk�r�|jj||d�n ||jk�r�n|jj|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|jj|dd��nF|tjjk�rZ|dk�r@|j|�dk�r@|jj�n|jj||�|jj�n�|tjjk�rt|jj�n�|tjjtjfk�r�||jk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��nz|tjj k�r�|jj!�n`|tjj"tj#fk�rR|dk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��dS)z!Process a single editing command.rr)$r
rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refresh�SOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr	�
do_command_sr
zTextbox.do_commandcCs�d}|j�x�t|jd�D]�}|jj|d�|j|�}|dkrH|jrHqxDt|jd�D]2}|jrl||krlP|tt	j
j
|jj||���}qXW|jdkr|d}qW|S)z.Collect and return the contents of the window.�rr�
)r
�rangerrrrrr�chrrrr)r�resultr�stoprrrr	�gather�s
"
zTextbox.gatherNcCs@x6|jj�}|r||�}|sq|j|�s*P|jj�qW|j�S)z2Edit in the widget window and collect the results.)rZgetchr#r!r*)rZvalidaterrrr	�edit�s

zTextbox.edit)F)N)�__name__�
__module__�__qualname__�__doc__rr
rrr#r*r+rrrr	rs
Ar�__main__cCsfd\}}d	\}}|j|d|d�tj||||�}t||d|d||||�|j�t|�j�S)
N�	����zUse Ctrl-G to end editing.r)r1r2)r3r4)ZaddstrrZnewwinr
r!rr+)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r6zContents of text box:)r/rZcurses.asciir
rr,r6�wrapper�str�print�reprrrrr	�<module>s
,	
PK�H�Z;t��(__pycache__/textpad.cpython-36.opt-2.pycnu�[���3


 \��@sRddlZddlZdd�ZGdd�d�ZedkrNdd�Zeje�Zed	e	e��dS)
�NcCs�|j|d|tj||d�|j||dtj||d�|j||dtj||d�|j|d|tj||d�|j||tj�|j||tj�|j||tj�|j||tj	�dS)N�)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�&/usr/lib64/python3.6/curses/textpad.py�	rectanglesr
c@sHeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zddd�Z	dS)�TextboxFcCs.||_||_|j�d|_d|_|jd�dS)Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrrrrr	�__init__+szTextbox.__init__cCs&|jj�\}}|d|_|d|_dS)Nr)rZgetmaxyx�maxy�maxx)rrrrrr	r
3s
zTextbox._update_max_yxcCs\|j�|j}xHtjj|jj||��tjjkrBt|j|d�}Pn
|dkrLP|d}qW|S)Nrr)r
rr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8szTextbox._end_of_linecCs�|j�|jj�\}}d}x�||jks0||jkr�|jr@|jj�}y|jj|�Wntj	k
rfYnX|js~tj
j|�r�P|}|jj�\}}|dkr||f}qW|dk	r�|jj|�dS)N)
r
r�getyxrrrrrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs$
zTextbox._insert_printable_charcCsV|j�|jj�\}}||_tjj|�rJ||jks<||jkrF|j	|��n|tjj
krh|jj|d��n�|tjjtj
tjjtjfk�r|dkr�|jj||d�nB|dkr�n8|jr�|jj|d|j|d��n|jj|d|j�|tjjtjfk�rR|jj��nL|tjjk�r"|jj��n0|tjjk�rb|j�rN|jj||j|��n|jj||j��n�|tjjtjfk�r�||jk�r�|jj||d�n ||jk�r�n|jj|dd��n�|tjjk�r�dS|tjjk�r|jdk�r�dS||jk�rR|jj|dd��nF|tjjk�rZ|dk�r@|j|�dk�r@|jj�n|jj||�|jj�n�|tjjk�rt|jj�n�|tjjtjfk�r�||jk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��nz|tjj k�r�|jj!�n`|tjj"tj#fk�rR|dk�rR|jj|d|�||j|d�k�rR|jj|d|j|d��dS)Nrr)$r
rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refresh�SOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr	�
do_command_sr
zTextbox.do_commandcCs�d}|j�x�t|jd�D]�}|jj|d�|j|�}|dkrH|jrHqxDt|jd�D]2}|jrl||krlP|tt	j
j
|jj||���}qXW|jdkr|d}qW|S)N�rr�
)r
�rangerrrrrr�chrrrr)r�resultr�stoprrrr	�gather�s
"
zTextbox.gatherNcCs@x6|jj�}|r||�}|sq|j|�s*P|jj�qW|j�S)N)rZgetchr#r!r*)rZvalidaterrrr	�edit�s

zTextbox.edit)F)N)
�__name__�
__module__�__qualname__rr
rrr#r*r+rrrr	rs
Ar�__main__cCsfd\}}d	\}}|j|d|d�tj||||�}t||d|d||||�|j�t|�j�S)
N�	����zUse Ctrl-G to end editing.r)r0r1)r2r3)ZaddstrrZnewwinr
r!rr+)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r5zContents of text box:)
rZcurses.asciir
rr,r5�wrapper�str�print�reprrrrr	�<module>s
,	
PK�H�Z6�=��#__pycache__/__init__.cpython-36.pycnu�[���3


 \&
�@sbdZddlTddlZddlZdd�Zdd�ZyeWn e	k
rTdd	lmZYnXd
d�Z
dS)z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*NcCstddl}ddl}ttjjdd�tjj�d�|j	�}x:|j
j�D],\}}|dd�dks`|d	kr@t|||�q@W|S)
NrZTERM�unknown)Zterm�fd�ZACS_�LINES�COLS)rr)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr	�stdscr�key�value�r�'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j�}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr	�start_color�hasattrrr)rr	Zretvalrrrr*s

r�)�has_keycOsrzDt�}t�t�|jd�y
t�WnYnX||f|�|�Sdt�krl|jd�t�t�t�XdS)aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    rNrr)	rZnoechoZcbreakZkeypadr�localsZechoZnocbreakZendwin)�func�args�kwdsrrrr�wrapper?s



r#)�__doc__r�osr
�sysr
rrr�	NameErrorr#rrrr�<module>s
PK�H�Z6�=��)__pycache__/__init__.cpython-36.opt-1.pycnu�[���3


 \&
�@sbdZddlTddlZddlZdd�Zdd�ZyeWn e	k
rTdd	lmZYnXd
d�Z
dS)z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*NcCstddl}ddl}ttjjdd�tjj�d�|j	�}x:|j
j�D],\}}|dd�dks`|d	kr@t|||�q@W|S)
NrZTERM�unknown)Zterm�fd�ZACS_�LINES�COLS)rr)
�_curses�cursesZ	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)rr	�stdscr�key�value�r�'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j�}t|d�r*|j|_t|d�r<|j|_|S)Nr�COLORS�COLOR_PAIRS)rr	�start_color�hasattrrr)rr	Zretvalrrrr*s

r�)�has_keycOsrzDt�}t�t�|jd�y
t�WnYnX||f|�|�Sdt�krl|jd�t�t�t�XdS)aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    rNrr)	rZnoechoZcbreakZkeypadr�localsZechoZnocbreakZendwin)�func�args�kwdsrrrr�wrapper?s



r#)�__doc__r�osr
�sysr
rrr�	NameErrorr#rrrr�<module>s
PK�H�Z���SS&__pycache__/ascii.cpython-36.opt-1.pycnu�[���3


 \�	�!@s~dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDdE�Z&dFdG�Z'dHdI�Z(dJdK�Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dlS)mz3Constants and membership tests for ASCII characters����������	�
���
������������������� ��NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPcCs t|�td�krt|�S|SdS)N�)�type�ord)�c�rH�$/usr/lib64/python3.6/curses/ascii.py�_ctoi0srJcCst|�pt|�S)N)�isalpha�isdigit)rGrHrHrI�isalnum6srMcCst|�pt|�S)N)�isupper�islower)rGrHrHrIrK7srKcCsdt|�kodkSS)Nrr")rJ)rGrHrHrI�isascii8srPcCst|�dkS)Nr
r!)r
r!)rJ)rGrHrHrI�isblank9srQcCs(dt|�kodknp&t|�dkS)Nrr r")rJ)rGrHrHrI�iscntrl:srRcCsdt|�kodkSS)N�0�9)rJ)rGrHrHrIrL;srLcCsdt|�kodkSS)N�!�~)rJ)rGrHrHrI�isgraph<srWcCsdt|�kodkSS)N�a�z)rJ)rGrHrHrIrO=srOcCsdt|�kodkSS)Nr!rV)rJ)rGrHrHrI�isprint>srZcCst|�ot|�S)N)rWrM)rGrHrHrI�ispunct?sr[cCst|�dkS)Nr
rrr
rr!)r
rrr
rr!)rJ)rGrHrHrI�isspace@sr\cCsdt|�kodkSS)N�A�Z)rJ)rGrHrHrIrNAsrNcCs@t|�p>dt|�kodknp>dt|�ko:dkSS)Nr]�FrX�f)rLrJ)rGrHrHrI�isxdigitBsracCsdt|�kodkSS)Nrr!)rJ)rGrHrHrI�isctrlDsrbcCst|�dkS)Nr")rJ)rGrHrHrI�ismetaEsrccCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr")rE�chrrJ)rGrHrHrI�asciiGsrecCs0t|�td�kr tt|�d@�St|�d@SdS)NrDr )rErdrJ)rGrHrHrI�ctrlMsrfcCs0t|�td�kr tt|�dB�St|�dBSdS)NrD�)rErdrJ)rGrHrHrI�altSsrhcCs\t|�}|dkrd}n2t|d@�r0t|d@�}ndt|d@dBd�}|d@rXd|S|S)Nr"z^?�^r!rg�!)rJrZrd)rG�bitsZreprHrHrI�unctrlYsrlN):�__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-�NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZcontrolnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrI�<module>szPK�A�Z
�m��wrapper.pycnu�[����
|fc@sdZddlZd�ZdS(scurses.wrapper

Contains one function, wrapper(), which runs another function which
should be the rest of your curses-based application.  If the
application raises an exception, wrapper() will restore the terminal
to a sane state so you can read the resulting traceback.

i����NcOs�zYtj�}tj�tj�|jd�ytj�WnnX||||�SWddt�kr�|jd�tj�tj�tj	�nXdS(sWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    iNtstdscri(
tcursestinitscrtnoechotcbreaktkeypadtstart_colortlocalstechotnocbreaktendwin(tfunctargstkwdsR((s&/usr/lib64/python2.7/curses/wrapper.pytwrappers





(t__doc__RR(((s&/usr/lib64/python2.7/curses/wrapper.pyt<module>sPK�A�Z���__init__.pyonu�[����
|fc@s�dZdZddlTddlmZddlZddlZd�Z	d�Z
yeWn!ek
r{ddlmZnXdS(	s�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

s$Id$i����(t*(twrapperNcCs�ddl}ddl}tdtjjdd�dtjj��|j	�}xO|j
j�D]>\}}|dd!dks�|dkr_t|||�q_q_W|S(Ni����ttermtTERMtunknowntfdiitACS_tLINEStCOLS(RR(
t_cursestcursest	setuptermt_ostenvirontgett_syst
__stdout__tfilenotinitscrt__dict__titemstsetattr(R	R
tstdscrtkeytvalue((s'/usr/lib64/python2.7/curses/__init__.pyRscCsdddl}ddl}|j�}t|d�rB|j|_nt|d�r`|j|_n|S(Ni����tCOLORStCOLOR_PAIRS(R	R
tstart_colorthasattrRR(R	R
tretval((s'/usr/lib64/python2.7/curses/__init__.pyR-s(thas_key(
t__doc__t__revision__R	tcurses.wrapperRtosRtsysRRRRt	NameError(((s'/usr/lib64/python2.7/curses/__init__.pyt<module>s

		
PK�A�Z|A9���textpad.pycnu�[����
|fc@stdZddlZddlZd�Zdd	d��YZedkrpd�Zeje�ZdGe	e�GHndS(
s:Simple textbox editing widget with Emacs-like keybindings.i����NcCs�|j|d|tj||d�|j||dtj||d�|j||dtj||d�|j|d|tj||d�|j||tj�|j||tj�|j||tj�|j||tj	�dS(s^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    iN(
tvlinetcursest	ACS_VLINEthlinet	ACS_HLINEtaddchtACS_ULCORNERtACS_URCORNERtACS_LRCORNERtACS_LLCORNER(twintulytulxtlrytlrx((s&/usr/lib64/python2.7/curses/textpad.pyt	rectangles%%%%tTextboxcBsSeZdZed�Zd�Zd�Zd�Zd�Zd�Z	dd�ZRS(	sdEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    cCs?||_||_|j�d|_d|_|jd�dS(Ni(R
tinsert_modet_update_max_yxtstripspacestNonetlastcmdtkeypad(tselfR
R((s&/usr/lib64/python2.7/curses/textpad.pyt__init__+s		
		cCs3|jj�\}}|d|_|d|_dS(Ni(R
tgetmaxyxtmaxytmaxx(RRR((s&/usr/lib64/python2.7/curses/textpad.pyR3s
cCs�|j�|j}xktr�tjj|jj||��tjjkrct|j|d�}Pn|dkrsPn|d}qW|S(suGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.ii(	RRtTrueRtasciiR
tinchtSPtmin(Rtytlast((s&/usr/lib64/python2.7/curses/textpad.pyt_end_of_line8s
		-cCs
|j�|jj�\}}d}x�||jksF||jkr�|jra|jj�}ny|jj|�Wnt	j
k
r�nX|js�t	jj|�r�Pn|}|jj�\}}|dkr(||f}q(q(W|dk	r|jj
|�ndS(N(RR
tgetyxRRRRRRRterrorRtisprinttmove(RtchR!txtbackyxtoldch((s&/usr/lib64/python2.7/curses/textpad.pyt_insert_printable_charFs$
!	cCso|j�|jj�\}}||_tjj|�rk||jksX||jkrk|j	|�qkn|tjj
kr�|jj|d�n�|tjjtj
tjjtjfkrj|dkr�|jj||d�nY|dkr�nJ|jr"|jj|d|j|d��n|jj|d|j�|tjjtjfkrk|jj�qkn|tjjkr�|jj�n�|tjjkr�|jr�|jj||j|��qk|jj||j�n�|tjjtjfkrO||jkr#|jj||d�qk||jkr5qk|jj|dd�n|tjjkredS|tjjkr�|jdkr�dS||jkrk|jj|dd�qkn�|tjjkr|dkr�|j|�dkr�|jj�qk|jj||�|jj�nO|tjjkr>|jj�n-|tjjtjfkr�||jkrk|jj|d|�||j|d�kr�|jj|d|j|d��q�qkn�|tjj kr�|jj!�n�|tjj"tj#fkrk|dkrk|jj|d|�||j|d�krh|jj|d|j|d��qhqkndS(s!Process a single editing command.ii($RR
R$RRRR&RRR,tSOHR'tSTXtKEY_LEFTtBSt
KEY_BACKSPACERR#tdelchtEOTtENQtACKt	KEY_RIGHTtBELtNLtVTtdeletelntclrtoeoltFFtrefreshtSOtKEY_DOWNtSItinsertlntDLEtKEY_UP(RR(R!R)((s&/usr/lib64/python2.7/curses/textpad.pyt
do_command_sr
	*	'	!--cCs�d}|j�x�t|jd�D]�}|jj|d�|j|�}|dkrg|jrgq$nx_t|jd�D]J}|jr�||kr�Pn|tt	j
j
|jj||���}q{W|jdkr$|d}q$q$W|S(s.Collect and return the contents of the window.tiis
(RtrangeRR
R'R#RRtchrRRR(RtresultR!tstopR)((s&/usr/lib64/python2.7/curses/textpad.pytgather�s
/cCsaxT|jj�}|r'||�}n|s3qn|j|�sFPn|jj�qW|j�S(s2Edit in the widget window and collect the results.(R
tgetchRDR=RJ(RtvalidateR(((s&/usr/lib64/python2.7/curses/textpad.pytedit�sN(t__name__t
__module__t__doc__tFalseRRR#R,RDRJRRM(((s&/usr/lib64/python2.7/curses/textpad.pyRs				A	t__main__cCs�d\}}d	\}}|j|d|d�tj||||�}t||d|d||||�|j�t|�j�S(
Ni	iiiisUse Ctrl-G to end editing.i(i	i(ii(taddstrRtnewwinRR=RRM(tstdscrtncolstnlinesRRR
((s&/usr/lib64/python2.7/curses/textpad.pyttest_editbox�s&
sContents of text box:((
RPRtcurses.asciiRRRNRXtwrappertstrtrepr(((s&/usr/lib64/python2.7/curses/textpad.pyt<module>s	
�		PK�A�Z
�m��wrapper.pyonu�[����
|fc@sdZddlZd�ZdS(scurses.wrapper

Contains one function, wrapper(), which runs another function which
should be the rest of your curses-based application.  If the
application raises an exception, wrapper() will restore the terminal
to a sane state so you can read the resulting traceback.

i����NcOs�zYtj�}tj�tj�|jd�ytj�WnnX||||�SWddt�kr�|jd�tj�tj�tj	�nXdS(sWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    iNtstdscri(
tcursestinitscrtnoechotcbreaktkeypadtstart_colortlocalstechotnocbreaktendwin(tfunctargstkwdsR((s&/usr/lib64/python2.7/curses/wrapper.pytwrappers





(t__doc__RR(((s&/usr/lib64/python2.7/curses/wrapper.pyt<module>sPK�A�Z��*�44has_key.pycnu�[����
|fc@s�ddlZi�dej6dej6dej6dej6dej6dej6dej6d	ej6d
ej	6dej
6dej6d
ej6dej
6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6d�ej6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6Z�d��Z�e�d�kr�zxgZ�ej��xae�j��D]SZ�ej�e��Z�e�e��Z�e�e�kre�j�d�ej�e��e�e�f�qqWWdej��xe�D]Z�e�GHq�WXndS(�i����Ntka1tka3tkb2tkbstkbegtkcbttkc1tkc3tkcantktbctkclrtkclotkcmdtkcpytkcrttkctabtkdch1tkdl1tkcud1tkrmirtkendtkenttkeltkedtkexttkf0tkf1tkf10tkf11tkf12tkf13tkf14tkf15tkf16tkf17tkf18tkf19tkf2tkf20tkf21tkf22tkf23tkf24tkf25tkf26tkf27tkf28tkf29tkf3tkf30tkf31tkf32tkf33tkf34tkf35tkf36tkf37tkf38tkf39tkf4tkf40tkf41tkf42tkf43tkf44tkf45tkf46tkf47tkf48tkf49tkf5tkf50tkf51tkf52tkf53tkf54tkf55tkf56tkf57tkf58tkf59tkf6tkf60tkf61tkf62tkf63tkf7tkf8tkf9tkfndtkhlptkhometkich1tkil1tkcub1tklltkmrktkmsgtkmovtknxttknptkopntkopttkpptkprvtkprttkrdotkreftkrfrtkrpltkrsttkrestkcuf1tksavtkBEGtkCANtkCMDtkCPYtkCRTtkDCtkDLtkslttkENDtkEOLtkEXTtkindtkFNDtkHLPtkHOMtkICtkLFTtkMSGtkMOVtkNXTtkOPTtkPRVtkPRTtkritkRDOtkRPLtkRITtkREStkSAVtkSPDtkhtstkUNDtkspdtkundtkcuu1cCsXt|t�rt|�}ntj|�}|dkr=tStj|�rPt	StSdS(N(
t
isinstancetstrtordt_capability_namestgettNonetFalset_cursesttigetstrtTrue(tchtcapability_name((s&/usr/lib64/python2.7/curses/has_key.pythas_key�st__main__s)Mismatch for key %s, system=%i, Python=%i(�R�tKEY_A1tKEY_A3tKEY_B2t
KEY_BACKSPACEtKEY_BEGtKEY_BTABtKEY_C1tKEY_C3t
KEY_CANCELt	KEY_CATABt	KEY_CLEARt	KEY_CLOSEtKEY_COMMANDtKEY_COPYt
KEY_CREATEtKEY_CTABtKEY_DCtKEY_DLtKEY_DOWNtKEY_EICtKEY_ENDt	KEY_ENTERtKEY_EOLtKEY_EOStKEY_EXITtKEY_F0tKEY_F1tKEY_F10tKEY_F11tKEY_F12tKEY_F13tKEY_F14tKEY_F15tKEY_F16tKEY_F17tKEY_F18tKEY_F19tKEY_F2tKEY_F20tKEY_F21tKEY_F22tKEY_F23tKEY_F24tKEY_F25tKEY_F26tKEY_F27tKEY_F28tKEY_F29tKEY_F3tKEY_F30tKEY_F31tKEY_F32tKEY_F33tKEY_F34tKEY_F35tKEY_F36tKEY_F37tKEY_F38tKEY_F39tKEY_F4tKEY_F40tKEY_F41tKEY_F42tKEY_F43tKEY_F44tKEY_F45tKEY_F46tKEY_F47tKEY_F48tKEY_F49tKEY_F5tKEY_F50tKEY_F51tKEY_F52tKEY_F53tKEY_F54tKEY_F55tKEY_F56tKEY_F57tKEY_F58tKEY_F59tKEY_F6tKEY_F60tKEY_F61tKEY_F62tKEY_F63tKEY_F7tKEY_F8tKEY_F9tKEY_FINDtKEY_HELPtKEY_HOMEtKEY_ICtKEY_ILtKEY_LEFTtKEY_LLtKEY_MARKtKEY_MESSAGEtKEY_MOVEtKEY_NEXTt	KEY_NPAGEtKEY_OPENtKEY_OPTIONSt	KEY_PPAGEtKEY_PREVIOUSt	KEY_PRINTtKEY_REDOt
KEY_REFERENCEtKEY_REFRESHtKEY_REPLACEtKEY_RESTARTt
KEY_RESUMEt	KEY_RIGHTtKEY_SAVEtKEY_SBEGtKEY_SCANCELtKEY_SCOMMANDt	KEY_SCOPYtKEY_SCREATEtKEY_SDCtKEY_SDLt
KEY_SELECTtKEY_SENDtKEY_SEOLt	KEY_SEXITtKEY_SFt	KEY_SFINDt	KEY_SHELPt	KEY_SHOMEtKEY_SICt	KEY_SLEFTtKEY_SMESSAGEt	KEY_SMOVEt	KEY_SNEXTtKEY_SOPTIONSt
KEY_SPREVIOUSt
KEY_SPRINTtKEY_SRt	KEY_SREDOtKEY_SREPLACEt
KEY_SRIGHTt
KEY_SRSUMEt	KEY_SSAVEtKEY_SSUSPENDtKEY_STABt	KEY_SUNDOtKEY_SUSPENDtKEY_UNDOtKEY_UPR�R�t__name__tLtinitscrtkeystkeytsystemtpythontappendtkeynametendwinti(((s&/usr/lib64/python2.7/curses/has_key.pyt<module>sH




















































































































































	
	%

PK�A�Z��*�44has_key.pyonu�[����
|fc@s�ddlZi�dej6dej6dej6dej6dej6dej6dej6d	ej6d
ej	6dej
6dej6d
ej6dej
6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6d�ej6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6d�ej�6Z�d��Z�e�d�kr�zxgZ�ej��xae�j��D]SZ�ej�e��Z�e�e��Z�e�e�kre�j�d�ej�e��e�e�f�qqWWdej��xe�D]Z�e�GHq�WXndS(�i����Ntka1tka3tkb2tkbstkbegtkcbttkc1tkc3tkcantktbctkclrtkclotkcmdtkcpytkcrttkctabtkdch1tkdl1tkcud1tkrmirtkendtkenttkeltkedtkexttkf0tkf1tkf10tkf11tkf12tkf13tkf14tkf15tkf16tkf17tkf18tkf19tkf2tkf20tkf21tkf22tkf23tkf24tkf25tkf26tkf27tkf28tkf29tkf3tkf30tkf31tkf32tkf33tkf34tkf35tkf36tkf37tkf38tkf39tkf4tkf40tkf41tkf42tkf43tkf44tkf45tkf46tkf47tkf48tkf49tkf5tkf50tkf51tkf52tkf53tkf54tkf55tkf56tkf57tkf58tkf59tkf6tkf60tkf61tkf62tkf63tkf7tkf8tkf9tkfndtkhlptkhometkich1tkil1tkcub1tklltkmrktkmsgtkmovtknxttknptkopntkopttkpptkprvtkprttkrdotkreftkrfrtkrpltkrsttkrestkcuf1tksavtkBEGtkCANtkCMDtkCPYtkCRTtkDCtkDLtkslttkENDtkEOLtkEXTtkindtkFNDtkHLPtkHOMtkICtkLFTtkMSGtkMOVtkNXTtkOPTtkPRVtkPRTtkritkRDOtkRPLtkRITtkREStkSAVtkSPDtkhtstkUNDtkspdtkundtkcuu1cCsXt|t�rt|�}ntj|�}|dkr=tStj|�rPt	StSdS(N(
t
isinstancetstrtordt_capability_namestgettNonetFalset_cursesttigetstrtTrue(tchtcapability_name((s&/usr/lib64/python2.7/curses/has_key.pythas_key�st__main__s)Mismatch for key %s, system=%i, Python=%i(�R�tKEY_A1tKEY_A3tKEY_B2t
KEY_BACKSPACEtKEY_BEGtKEY_BTABtKEY_C1tKEY_C3t
KEY_CANCELt	KEY_CATABt	KEY_CLEARt	KEY_CLOSEtKEY_COMMANDtKEY_COPYt
KEY_CREATEtKEY_CTABtKEY_DCtKEY_DLtKEY_DOWNtKEY_EICtKEY_ENDt	KEY_ENTERtKEY_EOLtKEY_EOStKEY_EXITtKEY_F0tKEY_F1tKEY_F10tKEY_F11tKEY_F12tKEY_F13tKEY_F14tKEY_F15tKEY_F16tKEY_F17tKEY_F18tKEY_F19tKEY_F2tKEY_F20tKEY_F21tKEY_F22tKEY_F23tKEY_F24tKEY_F25tKEY_F26tKEY_F27tKEY_F28tKEY_F29tKEY_F3tKEY_F30tKEY_F31tKEY_F32tKEY_F33tKEY_F34tKEY_F35tKEY_F36tKEY_F37tKEY_F38tKEY_F39tKEY_F4tKEY_F40tKEY_F41tKEY_F42tKEY_F43tKEY_F44tKEY_F45tKEY_F46tKEY_F47tKEY_F48tKEY_F49tKEY_F5tKEY_F50tKEY_F51tKEY_F52tKEY_F53tKEY_F54tKEY_F55tKEY_F56tKEY_F57tKEY_F58tKEY_F59tKEY_F6tKEY_F60tKEY_F61tKEY_F62tKEY_F63tKEY_F7tKEY_F8tKEY_F9tKEY_FINDtKEY_HELPtKEY_HOMEtKEY_ICtKEY_ILtKEY_LEFTtKEY_LLtKEY_MARKtKEY_MESSAGEtKEY_MOVEtKEY_NEXTt	KEY_NPAGEtKEY_OPENtKEY_OPTIONSt	KEY_PPAGEtKEY_PREVIOUSt	KEY_PRINTtKEY_REDOt
KEY_REFERENCEtKEY_REFRESHtKEY_REPLACEtKEY_RESTARTt
KEY_RESUMEt	KEY_RIGHTtKEY_SAVEtKEY_SBEGtKEY_SCANCELtKEY_SCOMMANDt	KEY_SCOPYtKEY_SCREATEtKEY_SDCtKEY_SDLt
KEY_SELECTtKEY_SENDtKEY_SEOLt	KEY_SEXITtKEY_SFt	KEY_SFINDt	KEY_SHELPt	KEY_SHOMEtKEY_SICt	KEY_SLEFTtKEY_SMESSAGEt	KEY_SMOVEt	KEY_SNEXTtKEY_SOPTIONSt
KEY_SPREVIOUSt
KEY_SPRINTtKEY_SRt	KEY_SREDOtKEY_SREPLACEt
KEY_SRIGHTt
KEY_SRSUMEt	KEY_SSAVEtKEY_SSUSPENDtKEY_STABt	KEY_SUNDOtKEY_SUSPENDtKEY_UNDOtKEY_UPR�R�t__name__tLtinitscrtkeystkeytsystemtpythontappendtkeynametendwinti(((s&/usr/lib64/python2.7/curses/has_key.pyt<module>sH




















































































































































	
	%

PK�A�Z���	ascii.pyonu�[����
|fc!@s�dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dD�Z&dE�Z'dF�Z(dG�Z)dH�Z*dI�Z+dJ�Z,dK�Z-dL�Z.dM�Z/dN�Z0dO�Z1dP�Z2dQ�Z3dR�Z4dS�Z5dT�Z6dU�Z7dV�Z8dW�Z9dXS(Ys3Constants and membership tests for ASCII charactersiiiiiiiiii	i
iii
iiiiiiiiiiiiiiiiiii itNULtSOHtSTXtETXtEOTtENQtACKtBELtBStHTtLFtVTtFFtCRtSOtSItDLEtDC1tDC2tDC3tDC4tNAKtSYNtETBtCANtEMtSUBtESCtFStGStRStUStSPcCs*t|�td�kr"t|�S|SdS(Nt(ttypetord(tc((s$/usr/lib64/python2.7/curses/ascii.pyt_ctoi0s
cCst|�pt|�S(N(tisalphatisdigit(R$((s$/usr/lib64/python2.7/curses/ascii.pytisalnum6R!cCst|�pt|�S(N(tisuppertislower(R$((s$/usr/lib64/python2.7/curses/ascii.pyR&7R!cCsdt|�kodkSS(Nii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisascii8R!cCst|�dkS(Ni	i (i	i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisblank9R!cCs2dt|�kodknp1t|�dkS(Niii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytiscntrl:R!cCsdt|�kodkSS(Ni0i9(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR';R!cCsdt|�kodkSS(Ni!i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisgraph<R!cCsdt|�kodkSS(Niaiz(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR*=R!cCsdt|�kodkSS(Ni i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisprint>R!cCst|�ot|�S(N(R.R((R$((s$/usr/lib64/python2.7/curses/ascii.pytispunct?R!cCst|�dkS(Ni	i
iii
i (i	i
iii
i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisspace@R!cCsdt|�kodkSS(NiAiZ(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR)AR!cCsLt|�pKdt|�ko)dknpKdt|�koIdkSS(NiAiFiaif(R'R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisxdigitBscCsdt|�kodkSS(Nii (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisctrlDR!cCst|�dkS(Ni(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytismetaER!cCs>t|�td�kr,tt|�d@�St|�d@SdS(NR!i(R"tchrR%(R$((s$/usr/lib64/python2.7/curses/ascii.pytasciiGscCs>t|�td�kr,tt|�d@�St|�d@SdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytctrlMscCs>t|�td�kr,tt|�dB�St|�dBSdS(NR!i�(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytaltSscCsvt|�}|dkr!d}n?t|d@�rDt|d@�}ndt|d@dBd�}|d@rrd|S|S(Nis^?t^i i�t!(R%R/R5(R$tbitstrep((s$/usr/lib64/python2.7/curses/ascii.pytunctrlYs	
N(:t__doc__RRRRRRRRRtTABR	R
tNLRRR
RRRRRRRRRRRRRRRRRRR tDELtcontrolnamesR%R(R&R+R,R-R'R.R*R/R0R1R)R2R3R4R6R7R8R=(((s$/usr/lib64/python2.7/curses/ascii.pyt<module>sz																				PK�A�Z�)x	panel.pycnu�[����
|fc@sdZdZddlTdS(s3curses.panel

Module for using panels with curses.
s$Id$i����(t*N(t__doc__t__revision__t
_curses_panel(((s$/usr/lib64/python2.7/curses/panel.pyt<module>sPK�A�Z|A9���textpad.pyonu�[����
|fc@stdZddlZddlZd�Zdd	d��YZedkrpd�Zeje�ZdGe	e�GHndS(
s:Simple textbox editing widget with Emacs-like keybindings.i����NcCs�|j|d|tj||d�|j||dtj||d�|j||dtj||d�|j|d|tj||d�|j||tj�|j||tj�|j||tj�|j||tj	�dS(s^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    iN(
tvlinetcursest	ACS_VLINEthlinet	ACS_HLINEtaddchtACS_ULCORNERtACS_URCORNERtACS_LRCORNERtACS_LLCORNER(twintulytulxtlrytlrx((s&/usr/lib64/python2.7/curses/textpad.pyt	rectangles%%%%tTextboxcBsSeZdZed�Zd�Zd�Zd�Zd�Zd�Z	dd�ZRS(	sdEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    cCs?||_||_|j�d|_d|_|jd�dS(Ni(R
tinsert_modet_update_max_yxtstripspacestNonetlastcmdtkeypad(tselfR
R((s&/usr/lib64/python2.7/curses/textpad.pyt__init__+s		
		cCs3|jj�\}}|d|_|d|_dS(Ni(R
tgetmaxyxtmaxytmaxx(RRR((s&/usr/lib64/python2.7/curses/textpad.pyR3s
cCs�|j�|j}xktr�tjj|jj||��tjjkrct|j|d�}Pn|dkrsPn|d}qW|S(suGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.ii(	RRtTrueRtasciiR
tinchtSPtmin(Rtytlast((s&/usr/lib64/python2.7/curses/textpad.pyt_end_of_line8s
		-cCs
|j�|jj�\}}d}x�||jksF||jkr�|jra|jj�}ny|jj|�Wnt	j
k
r�nX|js�t	jj|�r�Pn|}|jj�\}}|dkr(||f}q(q(W|dk	r|jj
|�ndS(N(RR
tgetyxRRRRRRRterrorRtisprinttmove(RtchR!txtbackyxtoldch((s&/usr/lib64/python2.7/curses/textpad.pyt_insert_printable_charFs$
!	cCso|j�|jj�\}}||_tjj|�rk||jksX||jkrk|j	|�qkn|tjj
kr�|jj|d�n�|tjjtj
tjjtjfkrj|dkr�|jj||d�nY|dkr�nJ|jr"|jj|d|j|d��n|jj|d|j�|tjjtjfkrk|jj�qkn|tjjkr�|jj�n�|tjjkr�|jr�|jj||j|��qk|jj||j�n�|tjjtjfkrO||jkr#|jj||d�qk||jkr5qk|jj|dd�n|tjjkredS|tjjkr�|jdkr�dS||jkrk|jj|dd�qkn�|tjjkr|dkr�|j|�dkr�|jj�qk|jj||�|jj�nO|tjjkr>|jj�n-|tjjtjfkr�||jkrk|jj|d|�||j|d�kr�|jj|d|j|d��q�qkn�|tjj kr�|jj!�n�|tjj"tj#fkrk|dkrk|jj|d|�||j|d�krh|jj|d|j|d��qhqkndS(s!Process a single editing command.ii($RR
R$RRRR&RRR,tSOHR'tSTXtKEY_LEFTtBSt
KEY_BACKSPACERR#tdelchtEOTtENQtACKt	KEY_RIGHTtBELtNLtVTtdeletelntclrtoeoltFFtrefreshtSOtKEY_DOWNtSItinsertlntDLEtKEY_UP(RR(R!R)((s&/usr/lib64/python2.7/curses/textpad.pyt
do_command_sr
	*	'	!--cCs�d}|j�x�t|jd�D]�}|jj|d�|j|�}|dkrg|jrgq$nx_t|jd�D]J}|jr�||kr�Pn|tt	j
j
|jj||���}q{W|jdkr$|d}q$q$W|S(s.Collect and return the contents of the window.tiis
(RtrangeRR
R'R#RRtchrRRR(RtresultR!tstopR)((s&/usr/lib64/python2.7/curses/textpad.pytgather�s
/cCsaxT|jj�}|r'||�}n|s3qn|j|�sFPn|jj�qW|j�S(s2Edit in the widget window and collect the results.(R
tgetchRDR=RJ(RtvalidateR(((s&/usr/lib64/python2.7/curses/textpad.pytedit�sN(t__name__t
__module__t__doc__tFalseRRR#R,RDRJRRM(((s&/usr/lib64/python2.7/curses/textpad.pyRs				A	t__main__cCs�d\}}d	\}}|j|d|d�tj||||�}t||d|d||||�|j�t|�j�S(
Ni	iiiisUse Ctrl-G to end editing.i(i	i(ii(taddstrRtnewwinRR=RRM(tstdscrtncolstnlinesRRR
((s&/usr/lib64/python2.7/curses/textpad.pyttest_editbox�s&
sContents of text box:((
RPRtcurses.asciiRRRNRXtwrappertstrtrepr(((s&/usr/lib64/python2.7/curses/textpad.pyt<module>s	
�		PK�A�Zv���
wrapper.pynu�[���"""curses.wrapper

Contains one function, wrapper(), which runs another function which
should be the rest of your curses-based application.  If the
application raises an exception, wrapper() will restore the terminal
to a sane state so you can read the resulting traceback.

"""

import curses

def wrapper(func, *args, **kwds):
    """Wrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    """

    try:
        # Initialize curses
        stdscr = curses.initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        curses.noecho()
        curses.cbreak()

        # In keypad mode, escape sequences for special keys
        # (like the cursor keys) will be interpreted and
        # a special value like curses.KEY_LEFT will be returned
        stdscr.keypad(1)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            curses.start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            curses.echo()
            curses.nocbreak()
            curses.endwin()
PK�A�Z���	ascii.pycnu�[����
|fc!@s�dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dD�Z&dE�Z'dF�Z(dG�Z)dH�Z*dI�Z+dJ�Z,dK�Z-dL�Z.dM�Z/dN�Z0dO�Z1dP�Z2dQ�Z3dR�Z4dS�Z5dT�Z6dU�Z7dV�Z8dW�Z9dXS(Ys3Constants and membership tests for ASCII charactersiiiiiiiiii	i
iii
iiiiiiiiiiiiiiiiiii itNULtSOHtSTXtETXtEOTtENQtACKtBELtBStHTtLFtVTtFFtCRtSOtSItDLEtDC1tDC2tDC3tDC4tNAKtSYNtETBtCANtEMtSUBtESCtFStGStRStUStSPcCs*t|�td�kr"t|�S|SdS(Nt(ttypetord(tc((s$/usr/lib64/python2.7/curses/ascii.pyt_ctoi0s
cCst|�pt|�S(N(tisalphatisdigit(R$((s$/usr/lib64/python2.7/curses/ascii.pytisalnum6R!cCst|�pt|�S(N(tisuppertislower(R$((s$/usr/lib64/python2.7/curses/ascii.pyR&7R!cCsdt|�kodkSS(Nii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisascii8R!cCst|�dkS(Ni	i (i	i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisblank9R!cCs2dt|�kodknp1t|�dkS(Niii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytiscntrl:R!cCsdt|�kodkSS(Ni0i9(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR';R!cCsdt|�kodkSS(Ni!i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisgraph<R!cCsdt|�kodkSS(Niaiz(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR*=R!cCsdt|�kodkSS(Ni i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisprint>R!cCst|�ot|�S(N(R.R((R$((s$/usr/lib64/python2.7/curses/ascii.pytispunct?R!cCst|�dkS(Ni	i
iii
i (i	i
iii
i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisspace@R!cCsdt|�kodkSS(NiAiZ(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR)AR!cCsLt|�pKdt|�ko)dknpKdt|�koIdkSS(NiAiFiaif(R'R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisxdigitBscCsdt|�kodkSS(Nii (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisctrlDR!cCst|�dkS(Ni(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytismetaER!cCs>t|�td�kr,tt|�d@�St|�d@SdS(NR!i(R"tchrR%(R$((s$/usr/lib64/python2.7/curses/ascii.pytasciiGscCs>t|�td�kr,tt|�d@�St|�d@SdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytctrlMscCs>t|�td�kr,tt|�dB�St|�dBSdS(NR!i�(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytaltSscCsvt|�}|dkr!d}n?t|d@�rDt|d@�}ndt|d@dBd�}|d@rrd|S|S(Nis^?t^i i�t!(R%R/R5(R$tbitstrep((s$/usr/lib64/python2.7/curses/ascii.pytunctrlYs	
N(:t__doc__RRRRRRRRRtTABR	R
tNLRRR
RRRRRRRRRRRRRRRRRRR tDELtcontrolnamesR%R(R&R+R,R-R'R.R*R/R0R1R)R2R3R4R6R7R8R=(((s$/usr/lib64/python2.7/curses/ascii.pyt<module>sz																				PK�A�Z�)x	panel.pyonu�[����
|fc@sdZdZddlTdS(s3curses.panel

Module for using panels with curses.
s$Id$i����(t*N(t__doc__t__revision__t
_curses_panel(((s$/usr/lib64/python2.7/curses/panel.pyt<module>sPK�A�Z���__init__.pycnu�[����
|fc@s�dZdZddlTddlmZddlZddlZd�Z	d�Z
yeWn!ek
r{ddlmZnXdS(	s�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

s$Id$i����(t*(twrapperNcCs�ddl}ddl}tdtjjdd�dtjj��|j	�}xO|j
j�D]>\}}|dd!dks�|dkr_t|||�q_q_W|S(Ni����ttermtTERMtunknowntfdiitACS_tLINEStCOLS(RR(
t_cursestcursest	setuptermt_ostenvirontgett_syst
__stdout__tfilenotinitscrt__dict__titemstsetattr(R	R
tstdscrtkeytvalue((s'/usr/lib64/python2.7/curses/__init__.pyRscCsdddl}ddl}|j�}t|d�rB|j|_nt|d�r`|j|_n|S(Ni����tCOLORStCOLOR_PAIRS(R	R
tstart_colorthasattrRR(R	R
tretval((s'/usr/lib64/python2.7/curses/__init__.pyR-s(thas_key(
t__doc__t__revision__R	tcurses.wrapperRtosRtsysRRRRt	NameError(((s'/usr/lib64/python2.7/curses/__init__.pyt<module>s

		
PK�%�Zlҗ���	repeat.pynuȯ��#! /usr/bin/python2.7

"""repeat <shell-command>

This simple program repeatedly (at 1-second intervals) executes the
shell command given on the command line and displays the output (or as
much of it as fits on the screen).  It uses curses to paint each new
output on top of the old output, so that if nothing changes, the
screen doesn't change.  This is handy to watch for changes in e.g. a
directory or process listing.

To end, hit Control-C.
"""

# Author: Guido van Rossum

# Disclaimer: there's a Linux program named 'watch' that does the same
# thing.  Honestly, I didn't know of its existence when I wrote this!

# To do: add features until it has the same functionality as watch(1);
# then compare code size and development time.

import os
import sys
import time
import curses

def main():
    if not sys.argv[1:]:
        print __doc__
        sys.exit(0)
    cmd = " ".join(sys.argv[1:])
    p = os.popen(cmd, "r")
    text = p.read()
    sts = p.close()
    if sts:
        print >>sys.stderr, "Exit code:", sts
        sys.exit(sts)
    w = curses.initscr()
    try:
        while True:
            w.erase()
            try:
                w.addstr(text)
            except curses.error:
                pass
            w.refresh()
            time.sleep(1)
            p = os.popen(cmd, "r")
            text = p.read()
            sts = p.close()
            if sts:
                print >>sys.stderr, "Exit code:", sts
                sys.exit(sts)
    finally:
        curses.endwin()

main()
PK�%�Z�cQ��ncurses.pycnu�[����
Afc@sxddlZddlmZdd�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
eje
�dS(i����N(tpanelcCs|dkrt}n|j�S(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchars	cCst�dS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrt�n
tjt�dS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwait_a_whiles
cCs2tjtjdd�tj�tj|�dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats
c	Cs�tj||||�}tj|�}tj�r�|tjkrNtj}n	tj}|}tj|||�|j	t
d�tj|��n|j	t
d�tj�|S(Nt (
RtnewwinRt	new_panelt
has_colorst
COLOR_BLUEtCOLOR_WHITEtCOLOR_BLACKt	init_pairtbkgdsettordt
color_pairtA_BOLD(	tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s	"cCstj�tj�dS(N(Rt
update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s
cCs�|j�}|j�d}|jdd�|jd|�|j�|j�|j�\}}xVtd|d�D]A}x8td|d�D]#}|j||�|j|�q�WqwWdS(Nis-pan%c-i(	twindowtuserptrRRR
tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt
fill_panel4s

cCs6|adaddddddgatj�xTtdtjd�D]<}x3tdtj�D]}tjd	||d
�q^WqEWx�tdd�D]�}t	tj
tjddtjdddd�}|jd
�t	tjtjddtjdtjdtjd
�}|jd�t	tj
tjdtjd
tjdtjd�}|jd�t	tjtjddtjdtjddtjd�}|jd�t	tjtjddtjdtjdtjdd�}|jd�t|�t|�t|�t|�t|�|j�|j�t�td�t�td�|jdd�|j�|j�|j�|j�|j�t�t�td�|j�t�t�td�|j�t�t�td�|jtjddtjd�t�t�td�|j�t�t�td�|jtjddtjd�t�t�td�|j�t�t�td�|j�t�t�td �|j�t�t�td!�|j�t�t�td"�|j�t�t�td#�|j�t�t�td!�|j�t�t�td$�|j�t�t�xDtdd%�D]3}|j�}	|j�}
td&�|	jtjdd�|	jt|�|jtjd%|tjd�|
jtjd%d�|
jt|�t�t�td'�|	jtjd%d�|	jt|�|jtjdd|d
d%�|
jtjdd�|
jt|�t�t�q�Wtd&�|jtjd%|dtjd�t�t�td(�|j�t�t�td#�|j�t�t�td"�|j�t�t�td)�~t�t�td*�|j�t�t�td+�~t�t�td,�~t�t�td-�~t�t�tdkr(Pnd.aq�WdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di
iitp1iitp2i	tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RRtCOLSRR%t	COLOR_REDtset_userptrtCOLOR_GREENtCOLOR_YELLOWRt
COLOR_MAGENTAR4thideR(RR
RtshowtbottomttopR)(RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytdemo_panelsCsN
!		
	


	



	

	





















"


"
















"
#
&











(RRRRRR
RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt<module>s							�PK�%�ZXA?��
ncurses.pynuȯ��#! /usr/bin/python2.7
#
# $Id$
#
# (n)curses exerciser in Python, an interactive test for the curses
# module. Currently, only the panel demos are ported.

import curses
from curses import panel

def wGetchar(win = None):
    if win is None: win = stdscr
    return win.getch()

def Getchar():
    wGetchar()

#
# Panels tester
#
def wait_a_while():
    if nap_msec == 1:
        Getchar()
    else:
        curses.napms(nap_msec)

def saywhat(text):
    stdscr.move(curses.LINES - 1, 0)
    stdscr.clrtoeol()
    stdscr.addstr(text)

def mkpanel(color, rows, cols, tly, tlx):
    win = curses.newwin(rows, cols, tly, tlx)
    pan = panel.new_panel(win)
    if curses.has_colors():
        if color == curses.COLOR_BLUE:
            fg = curses.COLOR_WHITE
        else:
            fg = curses.COLOR_BLACK
        bg = color
        curses.init_pair(color, fg, bg)
        win.bkgdset(ord(' '), curses.color_pair(color))
    else:
        win.bkgdset(ord(' '), curses.A_BOLD)

    return pan

def pflush():
    panel.update_panels()
    curses.doupdate()

def fill_panel(pan):
    win = pan.window()
    num = pan.userptr()[1]

    win.move(1, 1)
    win.addstr("-pan%c-" % num)
    win.clrtoeol()
    win.box()

    maxy, maxx = win.getmaxyx()
    for y in range(2, maxy - 1):
        for x in range(1, maxx - 1):
            win.move(y, x)
            win.addch(num)

def demo_panels(win):
    global stdscr, nap_msec, mod
    stdscr = win
    nap_msec = 1
    mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"]

    stdscr.refresh()

    for y in range(0, curses.LINES - 1):
        for x in range(0, curses.COLS):
            stdscr.addstr("%d" % ((y + x) % 10))
    for y in range(0, 1):
        p1 = mkpanel(curses.COLOR_RED,
                     curses.LINES // 2 - 2,
                     curses.COLS // 8 + 1,
                     0,
                     0)
        p1.set_userptr("p1")

        p2 = mkpanel(curses.COLOR_GREEN,
                     curses.LINES // 2 + 1,
                     curses.COLS // 7,
                     curses.LINES // 4,
                     curses.COLS // 10)
        p2.set_userptr("p2")

        p3 = mkpanel(curses.COLOR_YELLOW,
                     curses.LINES // 4,
                     curses.COLS // 10,
                     curses.LINES // 2,
                     curses.COLS // 9)
        p3.set_userptr("p3")

        p4 = mkpanel(curses.COLOR_BLUE,
                     curses.LINES // 2 - 2,
                     curses.COLS // 8,
                     curses.LINES // 2 - 2,
                     curses.COLS // 3)
        p4.set_userptr("p4")

        p5 = mkpanel(curses.COLOR_MAGENTA,
                     curses.LINES // 2 - 2,
                     curses.COLS // 8,
                     curses.LINES // 2,
                     curses.COLS // 2 - 2)
        p5.set_userptr("p5")

        fill_panel(p1)
        fill_panel(p2)
        fill_panel(p3)
        fill_panel(p4)
        fill_panel(p5)
        p4.hide()
        p5.hide()
        pflush()
        saywhat("press any key to continue")
        wait_a_while()

        saywhat("h3 s1 s2 s4 s5;press any key to continue")
        p1.move(0, 0)
        p3.hide()
        p1.show()
        p2.show()
        p4.show()
        p5.show()
        pflush()
        wait_a_while()

        saywhat("s1; press any key to continue")
        p1.show()
        pflush()
        wait_a_while()

        saywhat("s2; press any key to continue")
        p2.show()
        pflush()
        wait_a_while()

        saywhat("m2; press any key to continue")
        p2.move(curses.LINES // 3 + 1, curses.COLS // 8)
        pflush()
        wait_a_while()

        saywhat("s3; press any key to continue")
        p3.show()
        pflush()
        wait_a_while()

        saywhat("m3; press any key to continue")
        p3.move(curses.LINES // 4 + 1, curses.COLS // 15)
        pflush()
        wait_a_while()

        saywhat("b3; press any key to continue")
        p3.bottom()
        pflush()
        wait_a_while()

        saywhat("s4; press any key to continue")
        p4.show()
        pflush()
        wait_a_while()

        saywhat("s5; press any key to continue")
        p5.show()
        pflush()
        wait_a_while()

        saywhat("t3; press any key to continue")
        p3.top()
        pflush()
        wait_a_while()

        saywhat("t1; press any key to continue")
        p1.show()
        pflush()
        wait_a_while()

        saywhat("t2; press any key to continue")
        p2.show()
        pflush()
        wait_a_while()

        saywhat("t3; press any key to continue")
        p3.show()
        pflush()
        wait_a_while()

        saywhat("t4; press any key to continue")
        p4.show()
        pflush()
        wait_a_while()

        for itmp in range(0, 6):
            w4 = p4.window()
            w5 = p5.window()

            saywhat("m4; press any key to continue")
            w4.move(curses.LINES // 8, 1)
            w4.addstr(mod[itmp])
            p4.move(curses.LINES // 6, itmp * curses.COLS // 8)
            w5.move(curses.LINES // 6, 1)
            w5.addstr(mod[itmp])
            pflush()
            wait_a_while()

            saywhat("m5; press any key to continue")
            w4.move(curses.LINES // 6, 1)
            w4.addstr(mod[itmp])
            p5.move(curses.LINES // 3 - 1, itmp * 10 + 6)
            w5.move(curses.LINES // 8, 1)
            w5.addstr(mod[itmp])
            pflush()
            wait_a_while()

        saywhat("m4; press any key to continue")
        p4.move(curses.LINES // 6, (itmp + 1) * curses.COLS // 8)
        pflush()
        wait_a_while()

        saywhat("t5; press any key to continue")
        p5.top()
        pflush()
        wait_a_while()

        saywhat("t2; press any key to continue")
        p2.top()
        pflush()
        wait_a_while()

        saywhat("t1; press any key to continue")
        p1.top()
        pflush()
        wait_a_while()

        saywhat("d2; press any key to continue")
        del p2
        pflush()
        wait_a_while()

        saywhat("h3; press any key to continue")
        p3.hide()
        pflush()
        wait_a_while()

        saywhat("d1; press any key to continue")
        del p1
        pflush()
        wait_a_while()

        saywhat("d4; press any key to continue")
        del p4
        pflush()
        wait_a_while()

        saywhat("d5; press any key to continue")
        del p5
        pflush()
        wait_a_while()
        if nap_msec == 1:
            break
        nap_msec = 100

#
# one fine day there'll be the menu at this place
#
curses.wrapper(demo_panels)
PK�%�Zϐ���rain.pyonu�[����
Afc@s?ddlZddlmZd�Zd�Zeje�dS(i����N(t	randrangecCss|dkrd}n
|d8}tj�rotdd�}tj|�}|r_|tjB}ntj|�n|S(Niiii(tcursest
has_colorsRt
color_pairtA_BOLDtstdscrtattrset(tjtztcolor((s(/usr/lib64/python2.7/Demo/curses/rain.pytnext_j
s	
c
Cs|atj�rJtj}tjdtj|�tjdtj|�ntj�tj�tj	d�tj
d}tjd}dg|}dg|}xHtddd�D]4}t
d|�d||<t
d|�d||<q�Wd}xtr
t
d|�d}t
d|�d}tj||td��tj||||td��t|�}tj||||td��t|�}tj||d||td	��tj||||dd
�tj||d||td	��t|�}tj||d||td	��tj||d||dd�tj||||dd�tj||d||dd
�tj||d||td	��t|�}tj||d||td��tj||d||dd�tj||||dd�tj||d||dd�tj||d||td��|||<|||<tj�}	|	td�ks�|	td�kr�dS|	td�kr�tjd�n"|	td�kr�tjd�ntjd�q�WdS(Niiiii����t.totOt-s|.|s/ \s| O |s\ /t s   s     tqtQtsi2(RRRtCOLOR_BLACKt	init_pairt
COLOR_BLUEt
COLOR_CYANtnltnoechottimeouttCOLStLINEStrangeRtTruetaddchtordR
taddstrtgetchtnodelaytnapms(
twintbgtctrtxpostyposRtxtytch((s(/usr/lib64/python2.7/Demo/curses/rain.pytmainsb	






	!!%%%##%%##%

$(RtrandomRR
R-twrapper(((s(/usr/lib64/python2.7/Demo/curses/rain.pyt<module>s		EPK�%�Z�%����
repeat.pyonu�[����
Afc@sJdZddlZddlZddlZddlZd�Ze�dS(s�repeat <shell-command>

This simple program repeatedly (at 1-second intervals) executes the
shell command given on the command line and displays the output (or as
much of it as fits on the screen).  It uses curses to paint each new
output on top of the old output, so that if nothing changes, the
screen doesn't change.  This is handy to watch for changes in e.g. a
directory or process listing.

To end, hit Control-C.
i����NcCsVtjds"tGHtjd�ndjtjd�}tj|d�}|j�}|j�}|r�tj	dI|IJtj|�nt
j�}z�x�trB|j
�y|j|�Wnt
jk
r�nX|j�tjd�tj|d�}|j�}|j�}|r�tj	dI|IJtj|�q�q�WWdt
j�XdS(Niit trs
Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6
	


(RRRRRR(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt<module>
s
	PK�%�Z̥��TTREADMEnu�[���This is a collection of demos and tests for the curses module. 

ncurses demos
=============

These demos are converted from the C versions in the ncurses
distribution, and were contributed by Thomas Gellekum <tg@FreeBSD.org>
I didn't strive for a `pythonic' style, but bluntly copied the
originals. I won't attempt to `beautify' the program anytime soon, but
I wouldn't mind someone else making an effort in that direction, of
course.

ncurses.py      -- currently only a panels demo
rain.py         -- raindrops keep falling on my desktop
tclock.py       -- ASCII clock, by Howard Jones
xmas.py         -- I'm dreaming of an ASCII christmas

Please submit bugfixes and new contributions to the Python bug tracker.


Other demos
===========

life.py         -- Simple game of Life
repeat.py       -- Repeatedly execute a shell command (like watch(1))
PK�%�Z�
�fcfcxmas.pynu�[���# asciixmas
# December 1989             Larry Bartz           Indianapolis, IN
#
# $Id$
#
# I'm dreaming of an ascii character-based monochrome Christmas,
# Just like the ones I used to know!
# Via a full duplex communications channel,
# At 9600 bits per second,
# Even though it's kinda slow.
#
# I'm dreaming of an ascii character-based monochrome Christmas,
# With ev'ry C program I write!
# May your screen be merry and bright!
# And may all your Christmases be amber or green,
# (for reduced eyestrain and improved visibility)!
#
#
# Notes on the Python version:
# I used a couple of `try...except curses.error' to get around some functions
# returning ERR. The errors come from using wrapping functions to fill
# windows to the last character cell. The C version doesn't have this problem,
# it simply ignores any return values.
#

import curses
import sys

FROMWHO = "Thomas Gellekum <tg@FreeBSD.org>"

def set_color(win, color):
    if curses.has_colors():
        n = color + 1
        curses.init_pair(n, color, my_bg)
        win.attroff(curses.A_COLOR)
        win.attron(curses.color_pair(n))

def unset_color(win):
    if curses.has_colors():
        win.attrset(curses.color_pair(0))

def look_out(msecs):
    curses.napms(msecs)
    if stdscr.getch() != -1:
        curses.beep()
        sys.exit(0)

def boxit():
    for y in range(0, 20):
        stdscr.addch(y, 7, ord('|'))

    for x in range(8, 80):
        stdscr.addch(19, x, ord('_'))

    for x in range(0, 80):
        stdscr.addch(22, x, ord('_'))

    return

def seas():
    stdscr.addch(4, 1, ord('S'))
    stdscr.addch(6, 1, ord('E'))
    stdscr.addch(8, 1, ord('A'))
    stdscr.addch(10, 1, ord('S'))
    stdscr.addch(12, 1, ord('O'))
    stdscr.addch(14, 1, ord('N'))
    stdscr.addch(16, 1, ord("'"))
    stdscr.addch(18, 1, ord('S'))

    return

def greet():
    stdscr.addch(3, 5, ord('G'))
    stdscr.addch(5, 5, ord('R'))
    stdscr.addch(7, 5, ord('E'))
    stdscr.addch(9, 5, ord('E'))
    stdscr.addch(11, 5, ord('T'))
    stdscr.addch(13, 5, ord('I'))
    stdscr.addch(15, 5, ord('N'))
    stdscr.addch(17, 5, ord('G'))
    stdscr.addch(19, 5, ord('S'))

    return

def fromwho():
    stdscr.addstr(21, 13, FROMWHO)
    return

def tree():
    set_color(treescrn, curses.COLOR_GREEN)
    treescrn.addch(1, 11, ord('/'))
    treescrn.addch(2, 11, ord('/'))
    treescrn.addch(3, 10, ord('/'))
    treescrn.addch(4, 9, ord('/'))
    treescrn.addch(5, 9, ord('/'))
    treescrn.addch(6, 8, ord('/'))
    treescrn.addch(7, 7, ord('/'))
    treescrn.addch(8, 6, ord('/'))
    treescrn.addch(9, 6, ord('/'))
    treescrn.addch(10, 5, ord('/'))
    treescrn.addch(11, 3, ord('/'))
    treescrn.addch(12, 2, ord('/'))

    treescrn.addch(1, 13, ord('\\'))
    treescrn.addch(2, 13, ord('\\'))
    treescrn.addch(3, 14, ord('\\'))
    treescrn.addch(4, 15, ord('\\'))
    treescrn.addch(5, 15, ord('\\'))
    treescrn.addch(6, 16, ord('\\'))
    treescrn.addch(7, 17, ord('\\'))
    treescrn.addch(8, 18, ord('\\'))
    treescrn.addch(9, 18, ord('\\'))
    treescrn.addch(10, 19, ord('\\'))
    treescrn.addch(11, 21, ord('\\'))
    treescrn.addch(12, 22, ord('\\'))

    treescrn.addch(4, 10, ord('_'))
    treescrn.addch(4, 14, ord('_'))
    treescrn.addch(8, 7, ord('_'))
    treescrn.addch(8, 17, ord('_'))

    treescrn.addstr(13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\")

    treescrn.addstr(14, 11, "| |")
    treescrn.addstr(15, 11, "|_|")

    unset_color(treescrn)
    treescrn.refresh()
    w_del_msg.refresh()

    return

def balls():
    treescrn.overlay(treescrn2)

    set_color(treescrn2, curses.COLOR_BLUE)
    treescrn2.addch(3, 9, ord('@'))
    treescrn2.addch(3, 15, ord('@'))
    treescrn2.addch(4, 8, ord('@'))
    treescrn2.addch(4, 16, ord('@'))
    treescrn2.addch(5, 7, ord('@'))
    treescrn2.addch(5, 17, ord('@'))
    treescrn2.addch(7, 6, ord('@'))
    treescrn2.addch(7, 18, ord('@'))
    treescrn2.addch(8, 5, ord('@'))
    treescrn2.addch(8, 19, ord('@'))
    treescrn2.addch(10, 4, ord('@'))
    treescrn2.addch(10, 20, ord('@'))
    treescrn2.addch(11, 2, ord('@'))
    treescrn2.addch(11, 22, ord('@'))
    treescrn2.addch(12, 1, ord('@'))
    treescrn2.addch(12, 23, ord('@'))

    unset_color(treescrn2)
    treescrn2.refresh()
    w_del_msg.refresh()
    return

def star():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_YELLOW)

    treescrn2.addch(0, 12, ord('*'))
    treescrn2.standend()

    unset_color(treescrn2)
    treescrn2.refresh()
    w_del_msg.refresh()
    return

def strng1():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_WHITE)

    treescrn2.addch(3, 13, ord('\''))
    treescrn2.addch(3, 12, ord(':'))
    treescrn2.addch(3, 11, ord('.'))

    treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
    unset_color(treescrn2)

    treescrn2.refresh()
    w_del_msg.refresh()
    return

def strng2():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_WHITE)

    treescrn2.addch(5, 14, ord('\''))
    treescrn2.addch(5, 13, ord(':'))
    treescrn2.addch(5, 12, ord('.'))
    treescrn2.addch(5, 11, ord(','))
    treescrn2.addch(6, 10, ord('\''))
    treescrn2.addch(6, 9, ord(':'))

    treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
    unset_color(treescrn2)

    treescrn2.refresh()
    w_del_msg.refresh()
    return

def strng3():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_WHITE)

    treescrn2.addch(7, 16, ord('\''))
    treescrn2.addch(7, 15, ord(':'))
    treescrn2.addch(7, 14, ord('.'))
    treescrn2.addch(7, 13, ord(','))
    treescrn2.addch(8, 12, ord('\''))
    treescrn2.addch(8, 11, ord(':'))
    treescrn2.addch(8, 10, ord('.'))
    treescrn2.addch(8, 9, ord(','))

    treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
    unset_color(treescrn2)

    treescrn2.refresh()
    w_del_msg.refresh()
    return

def strng4():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_WHITE)

    treescrn2.addch(9, 17, ord('\''))
    treescrn2.addch(9, 16, ord(':'))
    treescrn2.addch(9, 15, ord('.'))
    treescrn2.addch(9, 14, ord(','))
    treescrn2.addch(10, 13, ord('\''))
    treescrn2.addch(10, 12, ord(':'))
    treescrn2.addch(10, 11, ord('.'))
    treescrn2.addch(10, 10, ord(','))
    treescrn2.addch(11, 9, ord('\''))
    treescrn2.addch(11, 8, ord(':'))
    treescrn2.addch(11, 7, ord('.'))
    treescrn2.addch(11, 6, ord(','))
    treescrn2.addch(12, 5, ord('\''))

    treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
    unset_color(treescrn2)

    treescrn2.refresh()
    w_del_msg.refresh()
    return

def strng5():
    treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
    set_color(treescrn2, curses.COLOR_WHITE)

    treescrn2.addch(11, 19, ord('\''))
    treescrn2.addch(11, 18, ord(':'))
    treescrn2.addch(11, 17, ord('.'))
    treescrn2.addch(11, 16, ord(','))
    treescrn2.addch(12, 15, ord('\''))
    treescrn2.addch(12, 14, ord(':'))
    treescrn2.addch(12, 13, ord('.'))
    treescrn2.addch(12, 12, ord(','))

    treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
    unset_color(treescrn2)

    # save a fully lit tree
    treescrn2.overlay(treescrn)

    treescrn2.refresh()
    w_del_msg.refresh()
    return

def blinkit():
    treescrn8.touchwin()

    for cycle in range(5):
        if cycle == 0:
            treescrn3.overlay(treescrn8)
            treescrn8.refresh()
            w_del_msg.refresh()
            break
        elif cycle == 1:
            treescrn4.overlay(treescrn8)
            treescrn8.refresh()
            w_del_msg.refresh()
            break
        elif cycle == 2:
            treescrn5.overlay(treescrn8)
            treescrn8.refresh()
            w_del_msg.refresh()
            break
        elif cycle == 3:
            treescrn6.overlay(treescrn8)
            treescrn8.refresh()
            w_del_msg.refresh()
            break
        elif cycle == 4:
            treescrn7.overlay(treescrn8)
            treescrn8.refresh()
            w_del_msg.refresh()
            break

        treescrn8.touchwin()

    # ALL ON
    treescrn.overlay(treescrn8)
    treescrn8.refresh()
    w_del_msg.refresh()

    return

def deer_step(win, y, x):
    win.mvwin(y, x)
    win.refresh()
    w_del_msg.refresh()
    look_out(5)

def reindeer():
    y_pos = 0

    for x_pos in range(70, 62, -1):
        if x_pos < 66: y_pos = 1
        for looper in range(0, 4):
            dotdeer0.addch(y_pos, x_pos, ord('.'))
            dotdeer0.refresh()
            w_del_msg.refresh()
            dotdeer0.erase()
            dotdeer0.refresh()
            w_del_msg.refresh()
            look_out(50)

    y_pos = 2

    for x_pos in range(x_pos - 1, 50, -1):
        for looper in range(0, 4):
            if x_pos < 56:
                y_pos = 3

                try:
                    stardeer0.addch(y_pos, x_pos, ord('*'))
                except curses.error:
                    pass
                stardeer0.refresh()
                w_del_msg.refresh()
                stardeer0.erase()
                stardeer0.refresh()
                w_del_msg.refresh()
            else:
                dotdeer0.addch(y_pos, x_pos, ord('*'))
                dotdeer0.refresh()
                w_del_msg.refresh()
                dotdeer0.erase()
                dotdeer0.refresh()
                w_del_msg.refresh()

    x_pos = 58

    for y_pos in range(2, 5):
        lildeer0.touchwin()
        lildeer0.refresh()
        w_del_msg.refresh()

        for looper in range(0, 4):
            deer_step(lildeer3, y_pos, x_pos)
            deer_step(lildeer2, y_pos, x_pos)
            deer_step(lildeer1, y_pos, x_pos)
            deer_step(lildeer2, y_pos, x_pos)
            deer_step(lildeer3, y_pos, x_pos)

            lildeer0.touchwin()
            lildeer0.refresh()
            w_del_msg.refresh()

            x_pos -= 2

    x_pos = 35

    for y_pos in range(5, 10):

        middeer0.touchwin()
        middeer0.refresh()
        w_del_msg.refresh()

        for looper in range(2):
            deer_step(middeer3, y_pos, x_pos)
            deer_step(middeer2, y_pos, x_pos)
            deer_step(middeer1, y_pos, x_pos)
            deer_step(middeer2, y_pos, x_pos)
            deer_step(middeer3, y_pos, x_pos)

            middeer0.touchwin()
            middeer0.refresh()
            w_del_msg.refresh()

            x_pos -= 3

    look_out(300)

    y_pos = 1

    for x_pos in range(8, 16):
        deer_step(bigdeer4, y_pos, x_pos)
        deer_step(bigdeer3, y_pos, x_pos)
        deer_step(bigdeer2, y_pos, x_pos)
        deer_step(bigdeer1, y_pos, x_pos)
        deer_step(bigdeer2, y_pos, x_pos)
        deer_step(bigdeer3, y_pos, x_pos)
        deer_step(bigdeer4, y_pos, x_pos)
        deer_step(bigdeer0, y_pos, x_pos)

    x_pos -= 1

    for looper in range(0, 6):
        deer_step(lookdeer4, y_pos, x_pos)
        deer_step(lookdeer3, y_pos, x_pos)
        deer_step(lookdeer2, y_pos, x_pos)
        deer_step(lookdeer1, y_pos, x_pos)
        deer_step(lookdeer2, y_pos, x_pos)
        deer_step(lookdeer3, y_pos, x_pos)
        deer_step(lookdeer4, y_pos, x_pos)

    deer_step(lookdeer0, y_pos, x_pos)

    for y_pos in range(y_pos, 10):
        for looper in range(0, 2):
            deer_step(bigdeer4, y_pos, x_pos)
            deer_step(bigdeer3, y_pos, x_pos)
            deer_step(bigdeer2, y_pos, x_pos)
            deer_step(bigdeer1, y_pos, x_pos)
            deer_step(bigdeer2, y_pos, x_pos)
            deer_step(bigdeer3, y_pos, x_pos)
            deer_step(bigdeer4, y_pos, x_pos)
        deer_step(bigdeer0, y_pos, x_pos)

    y_pos -= 1

    deer_step(lookdeer3, y_pos, x_pos)
    return

def main(win):
    global stdscr
    stdscr = win

    global my_bg, y_pos, x_pos
    global treescrn, treescrn2, treescrn3, treescrn4
    global treescrn5, treescrn6, treescrn7, treescrn8
    global dotdeer0, stardeer0
    global lildeer0, lildeer1, lildeer2, lildeer3
    global middeer0, middeer1, middeer2, middeer3
    global bigdeer0, bigdeer1, bigdeer2, bigdeer3, bigdeer4
    global lookdeer0, lookdeer1, lookdeer2, lookdeer3, lookdeer4
    global w_holiday, w_del_msg

    my_bg = curses.COLOR_BLACK
    # curses.curs_set(0)

    treescrn = curses.newwin(16, 27, 3, 53)
    treescrn2 = curses.newwin(16, 27, 3, 53)
    treescrn3 = curses.newwin(16, 27, 3, 53)
    treescrn4 = curses.newwin(16, 27, 3, 53)
    treescrn5 = curses.newwin(16, 27, 3, 53)
    treescrn6 = curses.newwin(16, 27, 3, 53)
    treescrn7 = curses.newwin(16, 27, 3, 53)
    treescrn8 = curses.newwin(16, 27, 3, 53)

    dotdeer0 = curses.newwin(3, 71, 0, 8)

    stardeer0 = curses.newwin(4, 56, 0, 8)

    lildeer0 = curses.newwin(7, 53, 0, 8)
    lildeer1 = curses.newwin(2, 4, 0, 0)
    lildeer2 = curses.newwin(2, 4, 0, 0)
    lildeer3 = curses.newwin(2, 4, 0, 0)

    middeer0 = curses.newwin(15, 42, 0, 8)
    middeer1 = curses.newwin(3, 7, 0, 0)
    middeer2 = curses.newwin(3, 7, 0, 0)
    middeer3 = curses.newwin(3, 7, 0, 0)

    bigdeer0 = curses.newwin(10, 23, 0, 0)
    bigdeer1 = curses.newwin(10, 23, 0, 0)
    bigdeer2 = curses.newwin(10, 23, 0, 0)
    bigdeer3 = curses.newwin(10, 23, 0, 0)
    bigdeer4 = curses.newwin(10, 23, 0, 0)

    lookdeer0 = curses.newwin(10, 25, 0, 0)
    lookdeer1 = curses.newwin(10, 25, 0, 0)
    lookdeer2 = curses.newwin(10, 25, 0, 0)
    lookdeer3 = curses.newwin(10, 25, 0, 0)
    lookdeer4 = curses.newwin(10, 25, 0, 0)

    w_holiday = curses.newwin(1, 27, 3, 27)

    w_del_msg = curses.newwin(1, 20, 23, 60)

    try:
        w_del_msg.addstr(0, 0, "Hit any key to quit")
    except curses.error:
        pass

    try:
        w_holiday.addstr(0, 0, "H A P P Y  H O L I D A Y S")
    except curses.error:
        pass

    # set up the windows for our various reindeer
    lildeer1.addch(0, 0, ord('V'))
    lildeer1.addch(1, 0, ord('@'))
    lildeer1.addch(1, 1, ord('<'))
    lildeer1.addch(1, 2, ord('>'))
    try:
        lildeer1.addch(1, 3, ord('~'))
    except curses.error:
        pass

    lildeer2.addch(0, 0, ord('V'))
    lildeer2.addch(1, 0, ord('@'))
    lildeer2.addch(1, 1, ord('|'))
    lildeer2.addch(1, 2, ord('|'))
    try:
        lildeer2.addch(1, 3, ord('~'))
    except curses.error:
        pass

    lildeer3.addch(0, 0, ord('V'))
    lildeer3.addch(1, 0, ord('@'))
    lildeer3.addch(1, 1, ord('>'))
    lildeer3.addch(1, 2, ord('<'))
    try:
        lildeer2.addch(1, 3, ord('~'))  # XXX
    except curses.error:
        pass

    middeer1.addch(0, 2, ord('y'))
    middeer1.addch(0, 3, ord('y'))
    middeer1.addch(1, 2, ord('0'))
    middeer1.addch(1, 3, ord('('))
    middeer1.addch(1, 4, ord('='))
    middeer1.addch(1, 5, ord(')'))
    middeer1.addch(1, 6, ord('~'))
    middeer1.addch(2, 3, ord('\\'))
    middeer1.addch(2, 5, ord('/'))

    middeer2.addch(0, 2, ord('y'))
    middeer2.addch(0, 3, ord('y'))
    middeer2.addch(1, 2, ord('0'))
    middeer2.addch(1, 3, ord('('))
    middeer2.addch(1, 4, ord('='))
    middeer2.addch(1, 5, ord(')'))
    middeer2.addch(1, 6, ord('~'))
    middeer2.addch(2, 3, ord('|'))
    middeer2.addch(2, 5, ord('|'))

    middeer3.addch(0, 2, ord('y'))
    middeer3.addch(0, 3, ord('y'))
    middeer3.addch(1, 2, ord('0'))
    middeer3.addch(1, 3, ord('('))
    middeer3.addch(1, 4, ord('='))
    middeer3.addch(1, 5, ord(')'))
    middeer3.addch(1, 6, ord('~'))
    middeer3.addch(2, 3, ord('/'))
    middeer3.addch(2, 5, ord('\\'))

    bigdeer1.addch(0, 17, ord('\\'))
    bigdeer1.addch(0, 18, ord('/'))
    bigdeer1.addch(0, 19, ord('\\'))
    bigdeer1.addch(0, 20, ord('/'))
    bigdeer1.addch(1, 18, ord('\\'))
    bigdeer1.addch(1, 20, ord('/'))
    bigdeer1.addch(2, 19, ord('|'))
    bigdeer1.addch(2, 20, ord('_'))
    bigdeer1.addch(3, 18, ord('/'))
    bigdeer1.addch(3, 19, ord('^'))
    bigdeer1.addch(3, 20, ord('0'))
    bigdeer1.addch(3, 21, ord('\\'))
    bigdeer1.addch(4, 17, ord('/'))
    bigdeer1.addch(4, 18, ord('/'))
    bigdeer1.addch(4, 19, ord('\\'))
    bigdeer1.addch(4, 22, ord('\\'))
    bigdeer1.addstr(5, 7, "^~~~~~~~~//  ~~U")
    bigdeer1.addstr(6, 7, "( \\_____( /")       # ))
    bigdeer1.addstr(7, 8, "( )    /")
    bigdeer1.addstr(8, 9, "\\\\   /")
    bigdeer1.addstr(9, 11, "\\>/>")

    bigdeer2.addch(0, 17, ord('\\'))
    bigdeer2.addch(0, 18, ord('/'))
    bigdeer2.addch(0, 19, ord('\\'))
    bigdeer2.addch(0, 20, ord('/'))
    bigdeer2.addch(1, 18, ord('\\'))
    bigdeer2.addch(1, 20, ord('/'))
    bigdeer2.addch(2, 19, ord('|'))
    bigdeer2.addch(2, 20, ord('_'))
    bigdeer2.addch(3, 18, ord('/'))
    bigdeer2.addch(3, 19, ord('^'))
    bigdeer2.addch(3, 20, ord('0'))
    bigdeer2.addch(3, 21, ord('\\'))
    bigdeer2.addch(4, 17, ord('/'))
    bigdeer2.addch(4, 18, ord('/'))
    bigdeer2.addch(4, 19, ord('\\'))
    bigdeer2.addch(4, 22, ord('\\'))
    bigdeer2.addstr(5, 7, "^~~~~~~~~//  ~~U")
    bigdeer2.addstr(6, 7, "(( )____( /")        # ))
    bigdeer2.addstr(7, 7, "( /    |")
    bigdeer2.addstr(8, 8, "\\/    |")
    bigdeer2.addstr(9, 9, "|>   |>")

    bigdeer3.addch(0, 17, ord('\\'))
    bigdeer3.addch(0, 18, ord('/'))
    bigdeer3.addch(0, 19, ord('\\'))
    bigdeer3.addch(0, 20, ord('/'))
    bigdeer3.addch(1, 18, ord('\\'))
    bigdeer3.addch(1, 20, ord('/'))
    bigdeer3.addch(2, 19, ord('|'))
    bigdeer3.addch(2, 20, ord('_'))
    bigdeer3.addch(3, 18, ord('/'))
    bigdeer3.addch(3, 19, ord('^'))
    bigdeer3.addch(3, 20, ord('0'))
    bigdeer3.addch(3, 21, ord('\\'))
    bigdeer3.addch(4, 17, ord('/'))
    bigdeer3.addch(4, 18, ord('/'))
    bigdeer3.addch(4, 19, ord('\\'))
    bigdeer3.addch(4, 22, ord('\\'))
    bigdeer3.addstr(5, 7, "^~~~~~~~~//  ~~U")
    bigdeer3.addstr(6, 6, "( ()_____( /")       # ))
    bigdeer3.addstr(7, 6, "/ /       /")
    bigdeer3.addstr(8, 5, "|/          \\")
    bigdeer3.addstr(9, 5, "/>           \\>")

    bigdeer4.addch(0, 17, ord('\\'))
    bigdeer4.addch(0, 18, ord('/'))
    bigdeer4.addch(0, 19, ord('\\'))
    bigdeer4.addch(0, 20, ord('/'))
    bigdeer4.addch(1, 18, ord('\\'))
    bigdeer4.addch(1, 20, ord('/'))
    bigdeer4.addch(2, 19, ord('|'))
    bigdeer4.addch(2, 20, ord('_'))
    bigdeer4.addch(3, 18, ord('/'))
    bigdeer4.addch(3, 19, ord('^'))
    bigdeer4.addch(3, 20, ord('0'))
    bigdeer4.addch(3, 21, ord('\\'))
    bigdeer4.addch(4, 17, ord('/'))
    bigdeer4.addch(4, 18, ord('/'))
    bigdeer4.addch(4, 19, ord('\\'))
    bigdeer4.addch(4, 22, ord('\\'))
    bigdeer4.addstr(5, 7, "^~~~~~~~~//  ~~U")
    bigdeer4.addstr(6, 6, "( )______( /")       # )
    bigdeer4.addstr(7, 5, "(/          \\")     # )
    bigdeer4.addstr(8, 0, "v___=             ----^")

    lookdeer1.addstr(0, 16, "\\/     \\/")
    lookdeer1.addstr(1, 17, "\\Y/ \\Y/")
    lookdeer1.addstr(2, 19, "\\=/")
    lookdeer1.addstr(3, 17, "^\\o o/^")
    lookdeer1.addstr(4, 17, "//( )")
    lookdeer1.addstr(5, 7, "^~~~~~~~~// \\O/")
    lookdeer1.addstr(6, 7, "( \\_____( /")      # ))
    lookdeer1.addstr(7, 8, "( )    /")
    lookdeer1.addstr(8, 9, "\\\\   /")
    lookdeer1.addstr(9, 11, "\\>/>")

    lookdeer2.addstr(0, 16, "\\/     \\/")
    lookdeer2.addstr(1, 17, "\\Y/ \\Y/")
    lookdeer2.addstr(2, 19, "\\=/")
    lookdeer2.addstr(3, 17, "^\\o o/^")
    lookdeer2.addstr(4, 17, "//( )")
    lookdeer2.addstr(5, 7, "^~~~~~~~~// \\O/")
    lookdeer2.addstr(6, 7, "(( )____( /")       # ))
    lookdeer2.addstr(7, 7, "( /    |")
    lookdeer2.addstr(8, 8, "\\/    |")
    lookdeer2.addstr(9, 9, "|>   |>")

    lookdeer3.addstr(0, 16, "\\/     \\/")
    lookdeer3.addstr(1, 17, "\\Y/ \\Y/")
    lookdeer3.addstr(2, 19, "\\=/")
    lookdeer3.addstr(3, 17, "^\\o o/^")
    lookdeer3.addstr(4, 17, "//( )")
    lookdeer3.addstr(5, 7, "^~~~~~~~~// \\O/")
    lookdeer3.addstr(6, 6, "( ()_____( /")      # ))
    lookdeer3.addstr(7, 6, "/ /       /")
    lookdeer3.addstr(8, 5, "|/          \\")
    lookdeer3.addstr(9, 5, "/>           \\>")

    lookdeer4.addstr(0, 16, "\\/     \\/")
    lookdeer4.addstr(1, 17, "\\Y/ \\Y/")
    lookdeer4.addstr(2, 19, "\\=/")
    lookdeer4.addstr(3, 17, "^\\o o/^")
    lookdeer4.addstr(4, 17, "//( )")
    lookdeer4.addstr(5, 7, "^~~~~~~~~// \\O/")
    lookdeer4.addstr(6, 6, "( )______( /")      # )
    lookdeer4.addstr(7, 5, "(/          \\")    # )
    lookdeer4.addstr(8, 0, "v___=             ----^")

    ###############################################
    curses.cbreak()
    stdscr.nodelay(1)

    while 1:
        stdscr.clear()
        treescrn.erase()
        w_del_msg.touchwin()
        treescrn.touchwin()
        treescrn2.erase()
        treescrn2.touchwin()
        treescrn8.erase()
        treescrn8.touchwin()
        stdscr.refresh()
        look_out(150)
        boxit()
        stdscr.refresh()
        look_out(150)
        seas()
        stdscr.refresh()
        greet()
        stdscr.refresh()
        look_out(150)
        fromwho()
        stdscr.refresh()
        look_out(150)
        tree()
        look_out(150)
        balls()
        look_out(150)
        star()
        look_out(150)
        strng1()
        strng2()
        strng3()
        strng4()
        strng5()

        # set up the windows for our blinking trees
        #
        # treescrn3
        treescrn.overlay(treescrn3)

        # balls
        treescrn3.addch(4, 18, ord(' '))
        treescrn3.addch(7, 6, ord(' '))
        treescrn3.addch(8, 19, ord(' '))
        treescrn3.addch(11, 22, ord(' '))

        # star
        treescrn3.addch(0, 12, ord('*'))

        # strng1
        treescrn3.addch(3, 11, ord(' '))

        # strng2
        treescrn3.addch(5, 13, ord(' '))
        treescrn3.addch(6, 10, ord(' '))

        # strng3
        treescrn3.addch(7, 16, ord(' '))
        treescrn3.addch(7, 14, ord(' '))

        # strng4
        treescrn3.addch(10, 13, ord(' '))
        treescrn3.addch(10, 10, ord(' '))
        treescrn3.addch(11, 8, ord(' '))

        # strng5
        treescrn3.addch(11, 18, ord(' '))
        treescrn3.addch(12, 13, ord(' '))

        # treescrn4
        treescrn.overlay(treescrn4)

        # balls
        treescrn4.addch(3, 9, ord(' '))
        treescrn4.addch(4, 16, ord(' '))
        treescrn4.addch(7, 6, ord(' '))
        treescrn4.addch(8, 19, ord(' '))
        treescrn4.addch(11, 2, ord(' '))
        treescrn4.addch(12, 23, ord(' '))

        # star
        treescrn4.standout()
        treescrn4.addch(0, 12, ord('*'))
        treescrn4.standend()

        # strng1
        treescrn4.addch(3, 13, ord(' '))

        # strng2

        # strng3
        treescrn4.addch(7, 15, ord(' '))
        treescrn4.addch(8, 11, ord(' '))

        # strng4
        treescrn4.addch(9, 16, ord(' '))
        treescrn4.addch(10, 12, ord(' '))
        treescrn4.addch(11, 8, ord(' '))

        # strng5
        treescrn4.addch(11, 18, ord(' '))
        treescrn4.addch(12, 14, ord(' '))

        # treescrn5
        treescrn.overlay(treescrn5)

        # balls
        treescrn5.addch(3, 15, ord(' '))
        treescrn5.addch(10, 20, ord(' '))
        treescrn5.addch(12, 1, ord(' '))

        # star
        treescrn5.addch(0, 12, ord(' '))

        # strng1
        treescrn5.addch(3, 11, ord(' '))

        # strng2
        treescrn5.addch(5, 12, ord(' '))

        # strng3
        treescrn5.addch(7, 14, ord(' '))
        treescrn5.addch(8, 10, ord(' '))

        # strng4
        treescrn5.addch(9, 15, ord(' '))
        treescrn5.addch(10, 11, ord(' '))
        treescrn5.addch(11, 7, ord(' '))

        # strng5
        treescrn5.addch(11, 17, ord(' '))
        treescrn5.addch(12, 13, ord(' '))

        # treescrn6
        treescrn.overlay(treescrn6)

        # balls
        treescrn6.addch(6, 7, ord(' '))
        treescrn6.addch(7, 18, ord(' '))
        treescrn6.addch(10, 4, ord(' '))
        treescrn6.addch(11, 23, ord(' '))

        # star
        treescrn6.standout()
        treescrn6.addch(0, 12, ord('*'))
        treescrn6.standend()

        # strng1

        # strng2
        treescrn6.addch(5, 11, ord(' '))

        # strng3
        treescrn6.addch(7, 13, ord(' '))
        treescrn6.addch(8, 9, ord(' '))

        # strng4
        treescrn6.addch(9, 14, ord(' '))
        treescrn6.addch(10, 10, ord(' '))
        treescrn6.addch(11, 6, ord(' '))

        # strng5
        treescrn6.addch(11, 16, ord(' '))
        treescrn6.addch(12, 12, ord(' '))

        #  treescrn7

        treescrn.overlay(treescrn7)

        # balls
        treescrn7.addch(3, 15, ord(' '))
        treescrn7.addch(6, 7, ord(' '))
        treescrn7.addch(7, 18, ord(' '))
        treescrn7.addch(10, 4, ord(' '))
        treescrn7.addch(11, 22, ord(' '))

        # star
        treescrn7.addch(0, 12, ord('*'))

        # strng1
        treescrn7.addch(3, 12, ord(' '))

        # strng2
        treescrn7.addch(5, 13, ord(' '))
        treescrn7.addch(6, 9, ord(' '))

        # strng3
        treescrn7.addch(7, 15, ord(' '))
        treescrn7.addch(8, 11, ord(' '))

        # strng4
        treescrn7.addch(9, 16, ord(' '))
        treescrn7.addch(10, 12, ord(' '))
        treescrn7.addch(11, 8, ord(' '))

        # strng5
        treescrn7.addch(11, 18, ord(' '))
        treescrn7.addch(12, 14, ord(' '))

        look_out(150)
        reindeer()

        w_holiday.touchwin()
        w_holiday.refresh()
        w_del_msg.refresh()

        look_out(500)
        for i in range(0, 20):
            blinkit()

curses.wrapper(main)
PK�%�Z�`gj�M�Mxmas.pyonu�[����
��^c@s�ddlZddlZdZd�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zeje�dS(i����Ns Thomas Gellekum <tg@FreeBSD.org>cCsVtj�rR|d}tj||t�|jtj�|jtj|��ndS(Ni(tcursest
has_colorst	init_pairtmy_bgtattrofftA_COLORtattront
color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt	set_colors

cCs)tj�r%|jtjd��ndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pytunset_color&scCs=tj|�tj�dkr9tj�tjd�ndS(Ni����i(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s

cCs�x0tdd�D]}tj|dtd��qWx0tdd�D]}tjd|td��qCWx0tdd�D]}tjd	|td��qvWdS(
Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCs�tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd
��tjddtd��tjd
dtd��tjddtd��dS(NiitSitEitAi
itOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCs�tjddtd��tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjddtd
��tjddtd��tjddtd��dS(NiitGtRiRi	itTi
tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddt�dS(Nii
(RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttj�tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd��tjd
dtd��tjddtd��tjdd
td��tjdd
td��tjdd	td��tjddtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddd�tjddd�tjddd�tt�tj�t	j�dS(Niit/iii
ii	iiiiii
s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|(
RttreescrnRtCOLOR_GREENRRR*R
trefresht	w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH


cCs�tjt�tttj�tjddtd��tjddtd��tjddtd��tjddtd��tjdd	td��tjdd
td��tjd	dtd��tjd	dtd��tjddtd��tjdd
td��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tt�tj	�t
j	�dS(Nii	t@iiiiiiiiiii
iiiiiii(R.toverlayt	treescrn2RRt
COLOR_BLUERRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballs�s,



cCsltjtjtjB�tttj�tjddtd��tj	�t
t�tj�tj�dS(Niit*(
R5RRtA_BOLDtA_BLINKRtCOLOR_YELLOWRRtstandendR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstar�s



cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tj	tjtjB�t
t�tj�tj�dS(Nii
s'it:it.(
R5RRR9R:RtCOLOR_WHITERRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1�s


cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tj	tjtjB�t
t�tj�tj�dS(
Niis'i
R>iR?it,ii
i	(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2�s


cCs(tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
dtd	��tj	tjtjB�t
t�tj�tj�dS(Niis'iR>iR?i
RBiiii
i	(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3�s


cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
d
td	��tjd
dtd��tjd
dtd��tjd
dtd��tjd
dtd	��tjddtd��tj	tjtjB�t
t�tj�tj�dS(Ni	is'iR>iR?iRBi
i
iiiiii(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4�s(


cCs5tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
d
td	��tj	tjtjB�t
t�tjt�tj
�tj
�dS(Niis'iR>iR?iRBiiii
(R5RRR9R:RR@RRRR
R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5�s 



cCsEtj�xtd�D]}|dkrNtjt�tj�tj�Pn�|dkrtjt�tj�tj�Pn�|dkr�tjt�tj�tj�Pnb|dkr�t	jt�tj�tj�Pn1|dkrt
jt�tj�tj�Pntj�qWtjt�tj�tj�dS(Niiiiii(t	treescrn8ttouchwinRt	treescrn3R4R0R1t	treescrn4t	treescrn5t	treescrn6t	treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@


















cCs2|j||�|j�tj�td�dS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt	deer_step7s

cCskd}x�tddd�D]�}|dkr4d}nxltdd�D][}tj||td��tj�tj�tj�tj�tj�td	�qDWqWd
}x�t|dd	d�D]�}x�tdd�D]�}|dkr[d}ytj||td
��Wnt	j
k
r%nXtj�tj�tj�tj�tj�q�tj||td
��tj�tj�tj�tj�tj�q�Wq�Wd}x�td
d�D]�}tj�tj�tj�x�tdd�D]~}t
t||�t
t||�t
t||�t
t||�t
t||�tj�tj�tj�|d
8}q�Wq�Wd}x�tdd�D]�}tj�tj�tj�x�td
�D]~}t
t||�t
t||�t
t||�t
t||�t
t||�tj�tj�tj�|d8}q�Wq�Wtd�d}x�tdd�D]�}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�qkW|d8}x�tdd�D]v}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�qWt
t||�x�t|d�D]�}x�tdd
�D]v}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�q�Wt
t||�q�W|d8}t
t||�dS(NiiFi>i����iBiiR?i2ii8iR8i:ii#i
i,iii(Rtdotdeer0RRR0R1teraseRt	stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t	lookdeer4t	lookdeer3t	lookdeer2t	lookdeer1t	lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s�	




























cCs=|atjatjdddd�atjdddd�atjdddd�atjdddd�atjdddd�a	tjdddd�a
tjdddd�atjdddd�atjdddd�a
tjdd	dd�atjd
ddd�atjdddd�atjdddd�atjdddd�atjdd
dd�atjdd
dd�atjdd
dd�atjdd
dd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�a tjdddd�a!tjdddd�a"yt"j#ddd�Wntj$k
rnXyt!j#ddd�Wntj$k
r:nXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
r�nXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
rjnXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
rnXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d#��tj%dd t&d$��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d��tj%dd t&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d$��tj%dd t&d#��tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d
d-�tj#d
dd.�tj#dd/d0�tj#d/d1d2�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d
d3�tj#d
d
d4�tj#ddd5�tj#d/d/d6�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d"d7�tj#d
d"d8�tj#dd d9�tj#d/d d:�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d"d;�tj#d
d d<�tj#ddd=�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d
d-�tj#d
dd.�tj#dd/d0�tj#d/d1d2�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d
d3�tj#d
d
d4�tj#ddd5�tj#d/d/d6�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d"d7�tj#d
d"d8�tj#dd d9�tj#d/d d:�t j#ddd>�t j#dd%d?�t j#dd'd@�t j#dd%dA�t j#dd%dB�t j#d d
dC�t j#d"d"d;�t j#d
d d<�t j#ddd=�tj'�tj(d�x�tj)�tj*�t"j+�tj+�tj*�tj+�tj*�tj+�tj,�t-dD�t.�tj,�t-dD�t/�tj,�t0�tj,�t-dD�t1�tj,�t-dD�t2�t-dD�t3�t-dD�t4�t-dD�t5�t6�t7�t8�t9�tj:t�tj%dd&t&dE��tj%d
d"t&dE��tj%dd't&dE��tj%d1d+t&dE��tj%ddFt&dG��tj%dd1t&dE��tj%d dHt&dE��tj%d"dt&dE��tj%d
dt&dE��tj%d
dIt&dE��tj%ddHt&dE��tj%ddt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdHt&dE��tj:t�tj%dd/t&dE��tj%ddt&dE��tj%d
d"t&dE��tj%dd't&dE��tj%d1dt&dE��tj%dFdt&dE��tj;�tj%ddFt&dG��tj<�tj%ddHt&dE��tj%d
dt&dE��tj%dd1t&dE��tj%d/dt&dE��tj%ddFt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdIt&dE��tj:t	�t	j%ddt&dE��t	j%ddt&dE��t	j%dFdt&dE��t	j%ddFt&dE��t	j%dd1t&dE��t	j%d dFt&dE��t	j%d
dIt&dE��t	j%ddt&dE��t	j%d/dt&dE��t	j%dd1t&dE��t	j%d1d
t&dE��t	j%d1d%t&dE��t	j%dFdHt&dE��tj:t
�t
j%d"d
t&dE��t
j%d
d&t&dE��t
j%ddt&dE��t
j%d1dt&dE��t
j;�t
j%ddFt&dG��t
j<�t
j%d d1t&dE��t
j%d
dHt&dE��t
j%dd/t&dE��t
j%d/dIt&dE��t
j%ddt&dE��t
j%d1d"t&dE��t
j%d1dt&dE��t
j%dFdFt&dE��tj:t�tj%ddt&dE��tj%d"d
t&dE��tj%d
d&t&dE��tj%ddt&dE��tj%d1d+t&dE��tj%ddFt&dG��tj%ddFt&dE��tj%d dHt&dE��tj%d"d/t&dE��tj%d
dt&dE��tj%dd1t&dE��tj%d/dt&dE��tj%ddFt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdIt&dE��t-dD�t=�t!j+�t!j,�t"j,�t-dJ�xt>dd�D]
}t?�q$WqNWdS(KNiiii5iGiiii8iiii*i
iiiii<sHit any key to quitsH A P P Y  H O L I D A Y StVR3t<t>t~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~//  ~~Us( \_____( /s( )    /i	s\\   /is\>/>s(( )____( /s( /    |s\/    |s|>   |>s( ()_____( /s/ /       /s
|/          \s/>           \>s( )______( /s
(/          \sv___=             ----^s	\/     \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/i�t iR8i
ii�(@RRtCOLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct	w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmain�s�	



































(RRR+RR
RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt<module>s.						
		,								'		z	��PK�%�Z2��O��life.pyonu�[����
Afc@s�ddlZddlZddlZddlZdd	d��YZd�Zd�Zd�Zd�Ze	dkr�ej
e�ndS(
i����Nt	LifeBoardcBsPeZdZed�d�Zd�Zd�Zd�Zed�Z	d�Z
RS(s�Encapsulates a Life board

    Attributes:
    X,Y : horizontal and vertical size of the board
    state : dictionary mapping (x,y) to 0 or 1

    Methods:
    display(update_board) -- If update_board is true, compute the
                             next generation.  Then display the state
                             of the board and refresh the screen.
    erase() -- clear the entire board
    makeRandom() -- fill the board randomly
    set(y,x) -- set the given cell to Live; doesn't refresh the screen
    toggle(y,x) -- change the given cell from live to dead, or vice
                   versa, and refresh the screen display

    t*cCs
i|_||_|jj�\}}|d|dd|_|_||_|jj�d|jdd}|jjdd|�|jj|jdd|�xUtd|j�D]A}|jjd|dd�|jjd||jdd�q�W|jj	�dS(s�Create a new LifeBoard instance.

        scr -- curses screen object to use for display
        char -- character used to render live cells (default: '*')
        iit+t-it|N(
tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR
R	Rtborder_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s			
%cCsc|dks6|j|ks6|dks6|j|krLtd||f�nd|j||f<dS(sSet a cell to the live stateisCoordinates out of range %i,%iiN(RR	t
ValueErrorR(RRtx((s(/usr/lib64/python2.7/Demo/curses/life.pytset?s6cCs�|dks6|j|ks6|dks6|j|krLtd||f�n|jj||f�r�|j||f=|jj|d|dd�n4d|j||f<|jj|d|d|j�|jj�dS(s+Toggle a cell's state between live and deadisCoordinates out of range %i,%iit N(	RR	RRthas_keyRtaddchR
R(RRR((s(/usr/lib64/python2.7/Demo/curses/life.pyttoggleEs6!!cCsi|_|jdt�dS(s3Clear the entire board and update the board displaytupdate_boardN(RtdisplaytFalse(R((s(/usr/lib64/python2.7/Demo/curses/life.pyteraseQs	cCsw|j|j}}|s�x�td|�D]z}xqtd|�D]`}|jj||f�r�|jj|d|d|j�q?|jj|d|dd�q?Wq)W|jj�dSi}d|_	x�td|�D]�}tt
d|d�t||d��}xPtd|�D]?}d}|jj||f�}	xgtt
d|d�t||d��D]<}
x3|D]+}|jj||
f�rq|d7}qqqqWqdW||	8}|dkrd|||f<|jj|d|d|j�|	sUd|_	qUq|dkr%|	r%d|||f<q|	r|jj|d|dd�d|_	qqWq�W||_|jj�dS(s<Display the whole board, optionally computing one generationiiRNii(RR	R
RRRRR
Rtboringtmaxtmin(RRtMtNtitjtdtLtstlivetktl((s(/usr/lib64/python2.7/Demo/curses/life.pyRVsB$&
	)0

!	cCsli|_x\td|j�D]H}x?td|j�D]+}tj�dkr5|j||�q5q5WqWdS(s$Fill the board with a random patternig�?N(RR
RR	trandomR(RR#R$((s(/usr/lib64/python2.7/Demo/curses/life.pyt
makeRandom|s
	(t__name__t
__module__t__doc__tordRRRRtTrueRR,(((s(/usr/lib64/python2.7/Demo/curses/life.pyRs			&cCs<|j|d�|j�|j|dd�|j�dS(s&Clear the space where the menu residesiiN(tmovetclrtoeol(tstdscrtmenu_y((s(/usr/lib64/python2.7/Demo/curses/life.pyt
erase_menu�s
cCs;t||�|j|dd�|j|ddd�dS(s/Display the menu of possible keystroke commandsisAUse the cursor keys to move, and space or Enter to toggle a cell.isBE)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uitN(R6R(R4R5((s(/usr/lib64/python2.7/Demo/curses/life.pytdisplay_menu�s

c	Cs�|j�|j�\}}|dd}t||�|j|d|dd�}t|dtd��}|jdt�|jd|j	d}}xR|j
d|d|�|j�}d|ko�dknr9t|�}|d	kr|j
||�q�|d
kr�t||�|j|dd�|j�|jd�xd|j�}|d
krfPn|jddd�|j�|j�|jddd�|j�qJW|jd�t||�q�|dkr�|j�q�|dkr�Pq�|dkr|j�|jdt�q�|dkr�|j�q�q�|tjkra|dkra|d8}q�|tjkr�||j	dkr�|d7}q�|tjkr�|dkr�|d8}q�|tjkr�||jdkr�|d7}q�q�WdS(NiiiR
RRiis 
tCcis6 Hit any key to stop continuously updating the screen.i����t/RtEetQqtRrtSs(RRR7tsubwinRR0RRRR	R2tgetchtchrRR6RRtnodelayRR,tcursestKEY_UPtKEY_DOWNtKEY_LEFTt	KEY_RIGHT(	R4tstdscr_ytstdscr_xR5R>tboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloop�sd











"

"
cCst|�dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmain�st__main__((R+tstringt	tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyt<module>s$n			?	PK�%�Z�`gj�M�Mxmas.pycnu�[����
��^c@s�ddlZddlZdZd�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zeje�dS(i����Ns Thomas Gellekum <tg@FreeBSD.org>cCsVtj�rR|d}tj||t�|jtj�|jtj|��ndS(Ni(tcursest
has_colorst	init_pairtmy_bgtattrofftA_COLORtattront
color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt	set_colors

cCs)tj�r%|jtjd��ndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pytunset_color&scCs=tj|�tj�dkr9tj�tjd�ndS(Ni����i(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s

cCs�x0tdd�D]}tj|dtd��qWx0tdd�D]}tjd|td��qCWx0tdd�D]}tjd	|td��qvWdS(
Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCs�tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd
��tjddtd��tjd
dtd��tjddtd��dS(NiitSitEitAi
itOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCs�tjddtd��tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjddtd
��tjddtd��tjddtd��dS(NiitGtRiRi	itTi
tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddt�dS(Nii
(RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttj�tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd��tjd
dtd��tjddtd��tjdd
td��tjdd
td��tjdd	td��tjddtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjd	dtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tjd
dtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddd�tjddd�tjddd�tt�tj�t	j�dS(Niit/iii
ii	iiiiii
s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|(
RttreescrnRtCOLOR_GREENRRR*R
trefresht	w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH


cCs�tjt�tttj�tjddtd��tjddtd��tjddtd��tjddtd��tjdd	td��tjdd
td��tjd	dtd��tjd	dtd��tjddtd��tjdd
td��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tjddtd��tt�tj	�t
j	�dS(Nii	t@iiiiiiiiiii
iiiiiii(R.toverlayt	treescrn2RRt
COLOR_BLUERRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballs�s,



cCsltjtjtjB�tttj�tjddtd��tj	�t
t�tj�tj�dS(Niit*(
R5RRtA_BOLDtA_BLINKRtCOLOR_YELLOWRRtstandendR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstar�s



cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tj	tjtjB�t
t�tj�tj�dS(Nii
s'it:it.(
R5RRR9R:RtCOLOR_WHITERRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1�s


cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tj	tjtjB�t
t�tj�tj�dS(
Niis'i
R>iR?it,ii
i	(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2�s


cCs(tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
dtd	��tj	tjtjB�t
t�tj�tj�dS(Niis'iR>iR?i
RBiiii
i	(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3�s


cCs�tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
d
td	��tjd
dtd��tjd
dtd��tjd
dtd��tjd
dtd	��tjddtd��tj	tjtjB�t
t�tj�tj�dS(Ni	is'iR>iR?iRBi
i
iiiiii(
R5RRR9R:RR@RRRR
R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4�s(


cCs5tjtjtjB�tttj�tjddtd��tjddtd��tjddtd��tjddtd	��tjd
dtd��tjd
dtd��tjd
d
td��tjd
d
td	��tj	tjtjB�t
t�tjt�tj
�tj
�dS(Niis'iR>iR?iRBiiii
(R5RRR9R:RR@RRRR
R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5�s 



cCsEtj�xtd�D]}|dkrNtjt�tj�tj�Pn�|dkrtjt�tj�tj�Pn�|dkr�tjt�tj�tj�Pnb|dkr�t	jt�tj�tj�Pn1|dkrt
jt�tj�tj�Pntj�qWtjt�tj�tj�dS(Niiiiii(t	treescrn8ttouchwinRt	treescrn3R4R0R1t	treescrn4t	treescrn5t	treescrn6t	treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@


















cCs2|j||�|j�tj�td�dS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt	deer_step7s

cCskd}x�tddd�D]�}|dkr4d}nxltdd�D][}tj||td��tj�tj�tj�tj�tj�td	�qDWqWd
}x�t|dd	d�D]�}x�tdd�D]�}|dkr[d}ytj||td
��Wnt	j
k
r%nXtj�tj�tj�tj�tj�q�tj||td
��tj�tj�tj�tj�tj�q�Wq�Wd}x�td
d�D]�}tj�tj�tj�x�tdd�D]~}t
t||�t
t||�t
t||�t
t||�t
t||�tj�tj�tj�|d
8}q�Wq�Wd}x�tdd�D]�}tj�tj�tj�x�td
�D]~}t
t||�t
t||�t
t||�t
t||�t
t||�tj�tj�tj�|d8}q�Wq�Wtd�d}x�tdd�D]�}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�qkW|d8}x�tdd�D]v}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�qWt
t||�x�t|d�D]�}x�tdd
�D]v}t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�t
t||�q�Wt
t||�q�W|d8}t
t||�dS(NiiFi>i����iBiiR?i2ii8iR8i:ii#i
i,iii(Rtdotdeer0RRR0R1teraseRt	stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t	lookdeer4t	lookdeer3t	lookdeer2t	lookdeer1t	lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s�	




























cCs=|atjatjdddd�atjdddd�atjdddd�atjdddd�atjdddd�a	tjdddd�a
tjdddd�atjdddd�atjdddd�a
tjdd	dd�atjd
ddd�atjdddd�atjdddd�atjdddd�atjdd
dd�atjdd
dd�atjdd
dd�atjdd
dd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�atjdddd�a tjdddd�a!tjdddd�a"yt"j#ddd�Wntj$k
rnXyt!j#ddd�Wntj$k
r:nXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
r�nXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
rjnXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��ytj%ddt&d��Wntj$k
rnXtj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d#��tj%dd t&d$��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d��tj%dd t&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%ddt&d��tj%dd t&d!��tj%dd"t&d��tj%ddt&d$��tj%dd t&d#��tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d
d-�tj#d
dd.�tj#dd/d0�tj#d/d1d2�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d
d3�tj#d
d
d4�tj#ddd5�tj#d/d/d6�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d"d7�tj#d
d"d8�tj#dd d9�tj#d/d d:�tj%dd%t&d#��tj%dd&t&d$��tj%dd't&d#��tj%ddt&d$��tj%dd&t&d#��tj%ddt&d$��tj%dd't&d��tj%ddt&d(��tj%dd&t&d$��tj%dd't&d)��tj%ddt&d��tj%dd*t&d#��tj%dd%t&d$��tj%dd&t&d$��tj%dd't&d#��tj%dd+t&d#��tj#d d
d,�tj#d"d"d;�tj#d
d d<�tj#ddd=�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d
d-�tj#d
dd.�tj#dd/d0�tj#d/d1d2�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d
d3�tj#d
d
d4�tj#ddd5�tj#d/d/d6�tj#ddd>�tj#dd%d?�tj#dd'd@�tj#dd%dA�tj#dd%dB�tj#d d
dC�tj#d"d"d7�tj#d
d"d8�tj#dd d9�tj#d/d d:�t j#ddd>�t j#dd%d?�t j#dd'd@�t j#dd%dA�t j#dd%dB�t j#d d
dC�t j#d"d"d;�t j#d
d d<�t j#ddd=�tj'�tj(d�x�tj)�tj*�t"j+�tj+�tj*�tj+�tj*�tj+�tj,�t-dD�t.�tj,�t-dD�t/�tj,�t0�tj,�t-dD�t1�tj,�t-dD�t2�t-dD�t3�t-dD�t4�t-dD�t5�t6�t7�t8�t9�tj:t�tj%dd&t&dE��tj%d
d"t&dE��tj%dd't&dE��tj%d1d+t&dE��tj%ddFt&dG��tj%dd1t&dE��tj%d dHt&dE��tj%d"dt&dE��tj%d
dt&dE��tj%d
dIt&dE��tj%ddHt&dE��tj%ddt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdHt&dE��tj:t�tj%dd/t&dE��tj%ddt&dE��tj%d
d"t&dE��tj%dd't&dE��tj%d1dt&dE��tj%dFdt&dE��tj;�tj%ddFt&dG��tj<�tj%ddHt&dE��tj%d
dt&dE��tj%dd1t&dE��tj%d/dt&dE��tj%ddFt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdIt&dE��tj:t	�t	j%ddt&dE��t	j%ddt&dE��t	j%dFdt&dE��t	j%ddFt&dE��t	j%dd1t&dE��t	j%d dFt&dE��t	j%d
dIt&dE��t	j%ddt&dE��t	j%d/dt&dE��t	j%dd1t&dE��t	j%d1d
t&dE��t	j%d1d%t&dE��t	j%dFdHt&dE��tj:t
�t
j%d"d
t&dE��t
j%d
d&t&dE��t
j%ddt&dE��t
j%d1dt&dE��t
j;�t
j%ddFt&dG��t
j<�t
j%d d1t&dE��t
j%d
dHt&dE��t
j%dd/t&dE��t
j%d/dIt&dE��t
j%ddt&dE��t
j%d1d"t&dE��t
j%d1dt&dE��t
j%dFdFt&dE��tj:t�tj%ddt&dE��tj%d"d
t&dE��tj%d
d&t&dE��tj%ddt&dE��tj%d1d+t&dE��tj%ddFt&dG��tj%ddFt&dE��tj%d dHt&dE��tj%d"d/t&dE��tj%d
dt&dE��tj%dd1t&dE��tj%d/dt&dE��tj%ddFt&dE��tj%d1dt&dE��tj%d1d&t&dE��tj%dFdIt&dE��t-dD�t=�t!j+�t!j,�t"j,�t-dJ�xt>dd�D]
}t?�q$WqNWdS(KNiiii5iGiiii8iiii*i
iiiii<sHit any key to quitsH A P P Y  H O L I D A Y StVR3t<t>t~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~//  ~~Us( \_____( /s( )    /i	s\\   /is\>/>s(( )____( /s( /    |s\/    |s|>   |>s( ()_____( /s/ /       /s
|/          \s/>           \>s( )______( /s
(/          \sv___=             ----^s	\/     \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/i�t iR8i
ii�(@RRtCOLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct	w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmain�s�	



































(RRR+RR
RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt<module>s.						
		,								'		z	��PK�%�Z�cQ��ncurses.pyonu�[����
Afc@sxddlZddlmZdd�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
eje
�dS(i����N(tpanelcCs|dkrt}n|j�S(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchars	cCst�dS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrt�n
tjt�dS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwait_a_whiles
cCs2tjtjdd�tj�tj|�dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats
c	Cs�tj||||�}tj|�}tj�r�|tjkrNtj}n	tj}|}tj|||�|j	t
d�tj|��n|j	t
d�tj�|S(Nt (
RtnewwinRt	new_panelt
has_colorst
COLOR_BLUEtCOLOR_WHITEtCOLOR_BLACKt	init_pairtbkgdsettordt
color_pairtA_BOLD(	tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s	"cCstj�tj�dS(N(Rt
update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s
cCs�|j�}|j�d}|jdd�|jd|�|j�|j�|j�\}}xVtd|d�D]A}x8td|d�D]#}|j||�|j|�q�WqwWdS(Nis-pan%c-i(	twindowtuserptrRRR
tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt
fill_panel4s

cCs6|adaddddddgatj�xTtdtjd�D]<}x3tdtj�D]}tjd	||d
�q^WqEWx�tdd�D]�}t	tj
tjddtjdddd�}|jd
�t	tjtjddtjdtjdtjd
�}|jd�t	tj
tjdtjd
tjdtjd�}|jd�t	tjtjddtjdtjddtjd�}|jd�t	tjtjddtjdtjdtjdd�}|jd�t|�t|�t|�t|�t|�|j�|j�t�td�t�td�|jdd�|j�|j�|j�|j�|j�t�t�td�|j�t�t�td�|j�t�t�td�|jtjddtjd�t�t�td�|j�t�t�td�|jtjddtjd�t�t�td�|j�t�t�td�|j�t�t�td �|j�t�t�td!�|j�t�t�td"�|j�t�t�td#�|j�t�t�td!�|j�t�t�td$�|j�t�t�xDtdd%�D]3}|j�}	|j�}
td&�|	jtjdd�|	jt|�|jtjd%|tjd�|
jtjd%d�|
jt|�t�t�td'�|	jtjd%d�|	jt|�|jtjdd|d
d%�|
jtjdd�|
jt|�t�t�q�Wtd&�|jtjd%|dtjd�t�t�td(�|j�t�t�td#�|j�t�t�td"�|j�t�t�td)�~t�t�td*�|j�t�t�td+�~t�t�td,�~t�t�td-�~t�t�tdkr(Pnd.aq�WdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di
iitp1iitp2i	tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RRtCOLSRR%t	COLOR_REDtset_userptrtCOLOR_GREENtCOLOR_YELLOWRt
COLOR_MAGENTAR4thideR(RR
RtshowtbottomttopR)(RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytdemo_panelsCsN
!		
	


	



	

	





















"


"
















"
#
&











(RRRRRR
RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt<module>s							�PK�%�Z��@@
tclock.pyonu�[����
Afc@sfddlTddlZddlZdZd�Zd�Zd�Zd�Zd�Zej	e�dS(	i����(t*Ng������@cCs|dkrdSdS(Nii����i((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsignscCs:ttt|t|���tt|t|���fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||�dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttj�r%tjtj|��n||}||}t|d�}t|d�}	t|�}
t|�}|}|}
||	kr�|	|d}x�tr�t||
|�||kr�dS|dkr�|
|7}
||8}n||
7}||	7}q�Wnr||	d}xatrot||
|�|
|kr5dS|dkrX||
7}||	8}n|
|7}
||7}qWdS(Nii(	tcursest
has_colorsRtattrsett
color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR
Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>

	


	


cCs$|ad}tj}tjd�tjd�tj�r�tjdtj|�tjdtj|�tjdtj	|�ntj
dd}tjd}t|dt
|t�d�}d|d}|d}d|d}xetdd	�D]T}	|	dd
td}
t|
|�\}}tj||||d|	d�q�Wtjddd
�t|dd�}x�trtjd�tj�}
tj|
�}|d|dd}|dkr�|d8}n|ddtd}t||�\}}|dtd}t||�\}}|ddtd}
t|
|�\}}td||||||td��tjtj�td||||||td��tjtj�tj�r�tjtjd��nt||||td��tj�r&tjtjd��ntjtjddtj|
��tj �|dddkr�|d|kr�|d}tj!�ntj"�}|td�kr�dSt||||td��td||||||td��td||||||td��qvWdS(Ni����iiiiiiiig@g(@s%ds5ASCII Clock by Howard Jones <ha.jones@ic.ac.uk>, 1994ii�gN@t#t.tOtqt (#RRtCOLOR_BLACKtnodelayttimeoutRt	init_pairt	COLOR_REDt
COLOR_MAGENTAtCOLOR_GREENtCOLStLINEStminRRtrangetpiR
taddstrtmaxRtnapmsttimet	localtimeR$tordRt	A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn	


!
'	

''#
$

'(
tmathRR9RRR
RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyt<module>s
				+	PPK�%�Z�%����
repeat.pycnu�[����
Afc@sJdZddlZddlZddlZddlZd�Ze�dS(s�repeat <shell-command>

This simple program repeatedly (at 1-second intervals) executes the
shell command given on the command line and displays the output (or as
much of it as fits on the screen).  It uses curses to paint each new
output on top of the old output, so that if nothing changes, the
screen doesn't change.  This is handy to watch for changes in e.g. a
directory or process listing.

To end, hit Control-C.
i����NcCsVtjds"tGHtjd�ndjtjd�}tj|d�}|j�}|j�}|r�tj	dI|IJtj|�nt
j�}z�x�trB|j
�y|j|�Wnt
jk
r�nX|j�tjd�tj|d�}|j�}|j�}|r�tj	dI|IJtj|�q�q�WWdt
j�XdS(Niit trs
Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6
	


(RRRRRR(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt<module>
s
	PK�%�Z�٪�

	tclock.pynuȯ��#! /usr/bin/python2.7
#
# $Id$
#
# From tclock.c, Copyright Howard Jones <ha.jones@ic.ac.uk>, September 1994.

from math import *
import curses, time

ASPECT = 2.2

def sign(_x):
    if _x < 0: return -1
    return 1

def A2XY(angle, radius):
    return (int(round(ASPECT * radius * sin(angle))),
            int(round(radius * cos(angle))))

def plot(x, y, col):
    stdscr.addch(y, x, col)

# draw a diagonal line using Bresenham's algorithm
def dline(pair, from_x, from_y, x2, y2, ch):
    if curses.has_colors():
        stdscr.attrset(curses.color_pair(pair))

    dx = x2 - from_x
    dy = y2 - from_y

    ax = abs(dx * 2)
    ay = abs(dy * 2)

    sx = sign(dx)
    sy = sign(dy)

    x = from_x
    y = from_y

    if ax > ay:
        d = ay - ax // 2

        while True:
            plot(x, y, ch)
            if x == x2:
                return

            if d >= 0:
                y += sy
                d -= ax
            x += sx
            d += ay
    else:
        d = ax - ay // 2

        while True:
            plot(x, y, ch)
            if y == y2:
                return

            if d >= 0:
                x += sx
                d -= ay
            y += sy
            d += ax

def main(win):
    global stdscr
    stdscr = win

    lastbeep = -1
    my_bg = curses.COLOR_BLACK

    stdscr.nodelay(1)
    stdscr.timeout(0)
#    curses.curs_set(0)
    if curses.has_colors():
        curses.init_pair(1, curses.COLOR_RED, my_bg)
        curses.init_pair(2, curses.COLOR_MAGENTA, my_bg)
        curses.init_pair(3, curses.COLOR_GREEN, my_bg)

    cx = (curses.COLS - 1) // 2
    cy = curses.LINES // 2
    ch = min( cy-1, int(cx // ASPECT) - 1)
    mradius = (3 * ch) // 4
    hradius = ch // 2
    sradius = 5 * ch // 6

    for i in range(0, 12):
        sangle = (i + 1) * 2.0 * pi / 12.0
        sdx, sdy = A2XY(sangle, sradius)

        stdscr.addstr(cy - sdy, cx + sdx, "%d" % (i + 1))

    stdscr.addstr(0, 0,
                  "ASCII Clock by Howard Jones <ha.jones@ic.ac.uk>, 1994")

    sradius = max(sradius-4, 8)

    while True:
        curses.napms(1000)

        tim = time.time()
        t = time.localtime(tim)

        hours = t[3] + t[4] / 60.0
        if hours > 12.0:
            hours -= 12.0

        mangle = t[4] * 2 * pi / 60.0
        mdx, mdy = A2XY(mangle, mradius)

        hangle = hours * 2 * pi / 12.0
        hdx, hdy = A2XY(hangle, hradius)

        sangle = t[5] * 2 * pi / 60.0
        sdx, sdy = A2XY(sangle, sradius)

        dline(3, cx, cy, cx + mdx, cy - mdy, ord('#'))

        stdscr.attrset(curses.A_REVERSE)
        dline(2, cx, cy, cx + hdx, cy - hdy, ord('.'))
        stdscr.attroff(curses.A_REVERSE)

        if curses.has_colors():
            stdscr.attrset(curses.color_pair(1))

        plot(cx + sdx, cy - sdy, ord('O'))

        if curses.has_colors():
            stdscr.attrset(curses.color_pair(0))

        stdscr.addstr(curses.LINES - 2, 0, time.ctime(tim))
        stdscr.refresh()
        if (t[5] % 5) == 0 and t[5] != lastbeep:
            lastbeep = t[5]
            curses.beep()

        ch = stdscr.getch()
        if ch == ord('q'):
            return 0

        plot(cx + sdx, cy - sdy, ord(' '))
        dline(0, cx, cy, cx + hdx, cy - hdy, ord(' '))
        dline(0, cx, cy, cx + mdx, cy - mdy, ord(' '))

curses.wrapper(main)
PK�%�Z��@@
tclock.pycnu�[����
Afc@sfddlTddlZddlZdZd�Zd�Zd�Zd�Zd�Zej	e�dS(	i����(t*Ng������@cCs|dkrdSdS(Nii����i((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsignscCs:ttt|t|���tt|t|���fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||�dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttj�r%tjtj|��n||}||}t|d�}t|d�}	t|�}
t|�}|}|}
||	kr�|	|d}x�tr�t||
|�||kr�dS|dkr�|
|7}
||8}n||
7}||	7}q�Wnr||	d}xatrot||
|�|
|kr5dS|dkrX||
7}||	8}n|
|7}
||7}qWdS(Nii(	tcursest
has_colorsRtattrsett
color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR
Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>

	


	


cCs$|ad}tj}tjd�tjd�tj�r�tjdtj|�tjdtj|�tjdtj	|�ntj
dd}tjd}t|dt
|t�d�}d|d}|d}d|d}xetdd	�D]T}	|	dd
td}
t|
|�\}}tj||||d|	d�q�Wtjddd
�t|dd�}x�trtjd�tj�}
tj|
�}|d|dd}|dkr�|d8}n|ddtd}t||�\}}|dtd}t||�\}}|ddtd}
t|
|�\}}td||||||td��tjtj�td||||||td��tjtj�tj�r�tjtjd��nt||||td��tj�r&tjtjd��ntjtjddtj|
��tj �|dddkr�|d|kr�|d}tj!�ntj"�}|td�kr�dSt||||td��td||||||td��td||||||td��qvWdS(Ni����iiiiiiiig@g(@s%ds5ASCII Clock by Howard Jones <ha.jones@ic.ac.uk>, 1994ii�gN@t#t.tOtqt (#RRtCOLOR_BLACKtnodelayttimeoutRt	init_pairt	COLOR_REDt
COLOR_MAGENTAtCOLOR_GREENtCOLStLINEStminRRtrangetpiR
taddstrtmaxRtnapmsttimet	localtimeR$tordRt	A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn	


!
'	

''#
$

'(
tmathRR9RRR
RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyt<module>s
				+	PPK�%�Z���c	c	rain.pynuȯ��#! /usr/bin/python2.7
#
# $Id$
#
# somebody should probably check the randrange()s...

import curses
from random import randrange

def next_j(j):
    if j == 0:
        j = 4
    else:
        j -= 1

    if curses.has_colors():
        z = randrange(0, 3)
        color = curses.color_pair(z)
        if z:
            color = color | curses.A_BOLD
        stdscr.attrset(color)

    return j

def main(win):
    # we know that the first argument from curses.wrapper() is stdscr.
    # Initialize it globally for convenience.
    global stdscr
    stdscr = win

    if curses.has_colors():
        bg = curses.COLOR_BLACK
        curses.init_pair(1, curses.COLOR_BLUE, bg)
        curses.init_pair(2, curses.COLOR_CYAN, bg)

    curses.nl()
    curses.noecho()
    # XXX curs_set() always returns ERR
    # curses.curs_set(0)
    stdscr.timeout(0)

    c = curses.COLS - 4
    r = curses.LINES - 4
    xpos = [0] * c
    ypos = [0] * r
    for j in range(4, -1, -1):
        xpos[j] = randrange(0, c) + 2
        ypos[j] = randrange(0, r) + 2

    j = 0
    while True:
        x = randrange(0, c) + 2
        y = randrange(0, r) + 2

        stdscr.addch(y, x, ord('.'))

        stdscr.addch(ypos[j], xpos[j], ord('o'))

        j = next_j(j)
        stdscr.addch(ypos[j], xpos[j], ord('O'))

        j = next_j(j)
        stdscr.addch( ypos[j] - 1, xpos[j],     ord('-'))
        stdscr.addstr(ypos[j],     xpos[j] - 1, "|.|")
        stdscr.addch( ypos[j] + 1, xpos[j],     ord('-'))

        j = next_j(j)
        stdscr.addch( ypos[j] - 2, xpos[j],     ord('-'))
        stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "/ \\")
        stdscr.addstr(ypos[j],     xpos[j] - 2, "| O |")
        stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "\\ /")
        stdscr.addch( ypos[j] + 2, xpos[j],     ord('-'))

        j = next_j(j)
        stdscr.addch( ypos[j] - 2, xpos[j],     ord(' '))
        stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "   ")
        stdscr.addstr(ypos[j],     xpos[j] - 2, "     ")
        stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "   ")
        stdscr.addch( ypos[j] + 2, xpos[j],     ord(' '))

        xpos[j] = x
        ypos[j] = y

        ch = stdscr.getch()
        if ch == ord('q') or ch == ord('Q'):
            return
        elif ch == ord('s'):
            stdscr.nodelay(0)
        elif ch == ord(' '):
            stdscr.nodelay(1)

        curses.napms(50)

curses.wrapper(main)
PK�%�Z�r;5��life.pynuȯ��#! /usr/bin/python2.7
# life.py -- A curses-based version of Conway's Game of Life.
# Contributed by AMK
#
# An empty board will be displayed, and the following commands are available:
#  E : Erase the board
#  R : Fill the board randomly
#  S : Step for a single generation
#  C : Update continuously until a key is struck
#  Q : Quit
#  Cursor keys :  Move the cursor around the board
#  Space or Enter : Toggle the contents of the cursor's position
#
# TODO :
#   Support the mouse
#   Use colour if available
#   Make board updates faster
#

import random, string, traceback
import curses

class LifeBoard:
    """Encapsulates a Life board

    Attributes:
    X,Y : horizontal and vertical size of the board
    state : dictionary mapping (x,y) to 0 or 1

    Methods:
    display(update_board) -- If update_board is true, compute the
                             next generation.  Then display the state
                             of the board and refresh the screen.
    erase() -- clear the entire board
    makeRandom() -- fill the board randomly
    set(y,x) -- set the given cell to Live; doesn't refresh the screen
    toggle(y,x) -- change the given cell from live to dead, or vice
                   versa, and refresh the screen display

    """
    def __init__(self, scr, char=ord('*')):
        """Create a new LifeBoard instance.

        scr -- curses screen object to use for display
        char -- character used to render live cells (default: '*')
        """
        self.state = {}
        self.scr = scr
        Y, X = self.scr.getmaxyx()
        self.X, self.Y = X-2, Y-2-1
        self.char = char
        self.scr.clear()

        # Draw a border around the board
        border_line = '+'+(self.X*'-')+'+'
        self.scr.addstr(0, 0, border_line)
        self.scr.addstr(self.Y+1,0, border_line)
        for y in range(0, self.Y):
            self.scr.addstr(1+y, 0, '|')
            self.scr.addstr(1+y, self.X+1, '|')
        self.scr.refresh()

    def set(self, y, x):
        """Set a cell to the live state"""
        if x<0 or self.X<=x or y<0 or self.Y<=y:
            raise ValueError, "Coordinates out of range %i,%i"% (y,x)
        self.state[x,y] = 1

    def toggle(self, y, x):
        """Toggle a cell's state between live and dead"""
        if x<0 or self.X<=x or y<0 or self.Y<=y:
            raise ValueError, "Coordinates out of range %i,%i"% (y,x)
        if self.state.has_key( (x,y) ):
            del self.state[x,y]
            self.scr.addch(y+1, x+1, ' ')
        else:
            self.state[x,y] = 1
            self.scr.addch(y+1, x+1, self.char)
        self.scr.refresh()

    def erase(self):
        """Clear the entire board and update the board display"""
        self.state = {}
        self.display(update_board=False)

    def display(self, update_board=True):
        """Display the whole board, optionally computing one generation"""
        M,N = self.X, self.Y
        if not update_board:
            for i in range(0, M):
                for j in range(0, N):
                    if self.state.has_key( (i,j) ):
                        self.scr.addch(j+1, i+1, self.char)
                    else:
                        self.scr.addch(j+1, i+1, ' ')
            self.scr.refresh()
            return

        d = {}
        self.boring = 1
        for i in range(0, M):
            L = range( max(0, i-1), min(M, i+2) )
            for j in range(0, N):
                s = 0
                live = self.state.has_key( (i,j) )
                for k in range( max(0, j-1), min(N, j+2) ):
                    for l in L:
                        if self.state.has_key( (l,k) ):
                            s += 1
                s -= live
                if s == 3:
                    # Birth
                    d[i,j] = 1
                    self.scr.addch(j+1, i+1, self.char)
                    if not live: self.boring = 0
                elif s == 2 and live: d[i,j] = 1       # Survival
                elif live:
                    # Death
                    self.scr.addch(j+1, i+1, ' ')
                    self.boring = 0
        self.state = d
        self.scr.refresh()

    def makeRandom(self):
        "Fill the board with a random pattern"
        self.state = {}
        for i in range(0, self.X):
            for j in range(0, self.Y):
                if random.random() > 0.5:
                    self.set(j,i)


def erase_menu(stdscr, menu_y):
    "Clear the space where the menu resides"
    stdscr.move(menu_y, 0)
    stdscr.clrtoeol()
    stdscr.move(menu_y+1, 0)
    stdscr.clrtoeol()

def display_menu(stdscr, menu_y):
    "Display the menu of possible keystroke commands"
    erase_menu(stdscr, menu_y)
    stdscr.addstr(menu_y, 4,
                  'Use the cursor keys to move, and space or Enter to toggle a cell.')
    stdscr.addstr(menu_y+1, 4,
                  'E)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uit')

def keyloop(stdscr):
    # Clear the screen and display the menu of keys
    stdscr.clear()
    stdscr_y, stdscr_x = stdscr.getmaxyx()
    menu_y = (stdscr_y-3)-1
    display_menu(stdscr, menu_y)

    # Allocate a subwindow for the Life board and create the board object
    subwin = stdscr.subwin(stdscr_y-3, stdscr_x, 0, 0)
    board = LifeBoard(subwin, char=ord('*'))
    board.display(update_board=False)

    # xpos, ypos are the cursor's position
    xpos, ypos = board.X//2, board.Y//2

    # Main loop:
    while (1):
        stdscr.move(1+ypos, 1+xpos)     # Move the cursor
        c = stdscr.getch()                # Get a keystroke
        if 0<c<256:
            c = chr(c)
            if c in ' \n':
                board.toggle(ypos, xpos)
            elif c in 'Cc':
                erase_menu(stdscr, menu_y)
                stdscr.addstr(menu_y, 6, ' Hit any key to stop continuously '
                              'updating the screen.')
                stdscr.refresh()
                # Activate nodelay mode; getch() will return -1
                # if no keystroke is available, instead of waiting.
                stdscr.nodelay(1)
                while (1):
                    c = stdscr.getch()
                    if c != -1:
                        break
                    stdscr.addstr(0,0, '/')
                    stdscr.refresh()
                    board.display()
                    stdscr.addstr(0,0, '+')
                    stdscr.refresh()

                stdscr.nodelay(0)       # Disable nodelay mode
                display_menu(stdscr, menu_y)

            elif c in 'Ee':
                board.erase()
            elif c in 'Qq':
                break
            elif c in 'Rr':
                board.makeRandom()
                board.display(update_board=False)
            elif c in 'Ss':
                board.display()
            else: pass                  # Ignore incorrect keys
        elif c == curses.KEY_UP and ypos>0:            ypos -= 1
        elif c == curses.KEY_DOWN and ypos<board.Y-1:  ypos += 1
        elif c == curses.KEY_LEFT and xpos>0:          xpos -= 1
        elif c == curses.KEY_RIGHT and xpos<board.X-1: xpos += 1
        else:
            # Ignore incorrect keys
            pass


def main(stdscr):
    keyloop(stdscr)                    # Enter the main loop


if __name__ == '__main__':
    curses.wrapper(main)
PK�%�Zϐ���rain.pycnu�[����
Afc@s?ddlZddlmZd�Zd�Zeje�dS(i����N(t	randrangecCss|dkrd}n
|d8}tj�rotdd�}tj|�}|r_|tjB}ntj|�n|S(Niiii(tcursest
has_colorsRt
color_pairtA_BOLDtstdscrtattrset(tjtztcolor((s(/usr/lib64/python2.7/Demo/curses/rain.pytnext_j
s	
c
Cs|atj�rJtj}tjdtj|�tjdtj|�ntj�tj�tj	d�tj
d}tjd}dg|}dg|}xHtddd�D]4}t
d|�d||<t
d|�d||<q�Wd}xtr
t
d|�d}t
d|�d}tj||td��tj||||td��t|�}tj||||td��t|�}tj||d||td	��tj||||dd
�tj||d||td	��t|�}tj||d||td	��tj||d||dd�tj||||dd�tj||d||dd
�tj||d||td	��t|�}tj||d||td��tj||d||dd�tj||||dd�tj||d||dd�tj||d||td��|||<|||<tj�}	|	td�ks�|	td�kr�dS|	td�kr�tjd�n"|	td�kr�tjd�ntjd�q�WdS(Niiiii����t.totOt-s|.|s/ \s| O |s\ /t s   s     tqtQtsi2(RRRtCOLOR_BLACKt	init_pairt
COLOR_BLUEt
COLOR_CYANtnltnoechottimeouttCOLStLINEStrangeRtTruetaddchtordR
taddstrtgetchtnodelaytnapms(
twintbgtctrtxpostyposRtxtytch((s(/usr/lib64/python2.7/Demo/curses/rain.pytmainsb	






	!!%%%##%%##%

$(RtrandomRR
R-twrapper(((s(/usr/lib64/python2.7/Demo/curses/rain.pyt<module>s		EPK�%�Z2��O��life.pycnu�[����
Afc@s�ddlZddlZddlZddlZdd	d��YZd�Zd�Zd�Zd�Ze	dkr�ej
e�ndS(
i����Nt	LifeBoardcBsPeZdZed�d�Zd�Zd�Zd�Zed�Z	d�Z
RS(s�Encapsulates a Life board

    Attributes:
    X,Y : horizontal and vertical size of the board
    state : dictionary mapping (x,y) to 0 or 1

    Methods:
    display(update_board) -- If update_board is true, compute the
                             next generation.  Then display the state
                             of the board and refresh the screen.
    erase() -- clear the entire board
    makeRandom() -- fill the board randomly
    set(y,x) -- set the given cell to Live; doesn't refresh the screen
    toggle(y,x) -- change the given cell from live to dead, or vice
                   versa, and refresh the screen display

    t*cCs
i|_||_|jj�\}}|d|dd|_|_||_|jj�d|jdd}|jjdd|�|jj|jdd|�xUtd|j�D]A}|jjd|dd�|jjd||jdd�q�W|jj	�dS(s�Create a new LifeBoard instance.

        scr -- curses screen object to use for display
        char -- character used to render live cells (default: '*')
        iit+t-it|N(
tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR
R	Rtborder_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s			
%cCsc|dks6|j|ks6|dks6|j|krLtd||f�nd|j||f<dS(sSet a cell to the live stateisCoordinates out of range %i,%iiN(RR	t
ValueErrorR(RRtx((s(/usr/lib64/python2.7/Demo/curses/life.pytset?s6cCs�|dks6|j|ks6|dks6|j|krLtd||f�n|jj||f�r�|j||f=|jj|d|dd�n4d|j||f<|jj|d|d|j�|jj�dS(s+Toggle a cell's state between live and deadisCoordinates out of range %i,%iit N(	RR	RRthas_keyRtaddchR
R(RRR((s(/usr/lib64/python2.7/Demo/curses/life.pyttoggleEs6!!cCsi|_|jdt�dS(s3Clear the entire board and update the board displaytupdate_boardN(RtdisplaytFalse(R((s(/usr/lib64/python2.7/Demo/curses/life.pyteraseQs	cCsw|j|j}}|s�x�td|�D]z}xqtd|�D]`}|jj||f�r�|jj|d|d|j�q?|jj|d|dd�q?Wq)W|jj�dSi}d|_	x�td|�D]�}tt
d|d�t||d��}xPtd|�D]?}d}|jj||f�}	xgtt
d|d�t||d��D]<}
x3|D]+}|jj||
f�rq|d7}qqqqWqdW||	8}|dkrd|||f<|jj|d|d|j�|	sUd|_	qUq|dkr%|	r%d|||f<q|	r|jj|d|dd�d|_	qqWq�W||_|jj�dS(s<Display the whole board, optionally computing one generationiiRNii(RR	R
RRRRR
Rtboringtmaxtmin(RRtMtNtitjtdtLtstlivetktl((s(/usr/lib64/python2.7/Demo/curses/life.pyRVsB$&
	)0

!	cCsli|_x\td|j�D]H}x?td|j�D]+}tj�dkr5|j||�q5q5WqWdS(s$Fill the board with a random patternig�?N(RR
RR	trandomR(RR#R$((s(/usr/lib64/python2.7/Demo/curses/life.pyt
makeRandom|s
	(t__name__t
__module__t__doc__tordRRRRtTrueRR,(((s(/usr/lib64/python2.7/Demo/curses/life.pyRs			&cCs<|j|d�|j�|j|dd�|j�dS(s&Clear the space where the menu residesiiN(tmovetclrtoeol(tstdscrtmenu_y((s(/usr/lib64/python2.7/Demo/curses/life.pyt
erase_menu�s
cCs;t||�|j|dd�|j|ddd�dS(s/Display the menu of possible keystroke commandsisAUse the cursor keys to move, and space or Enter to toggle a cell.isBE)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uitN(R6R(R4R5((s(/usr/lib64/python2.7/Demo/curses/life.pytdisplay_menu�s

c	Cs�|j�|j�\}}|dd}t||�|j|d|dd�}t|dtd��}|jdt�|jd|j	d}}xR|j
d|d|�|j�}d|ko�dknr9t|�}|d	kr|j
||�q�|d
kr�t||�|j|dd�|j�|jd�xd|j�}|d
krfPn|jddd�|j�|j�|jddd�|j�qJW|jd�t||�q�|dkr�|j�q�|dkr�Pq�|dkr|j�|jdt�q�|dkr�|j�q�q�|tjkra|dkra|d8}q�|tjkr�||j	dkr�|d7}q�|tjkr�|dkr�|d8}q�|tjkr�||jdkr�|d7}q�q�WdS(NiiiR
RRiis 
tCcis6 Hit any key to stop continuously updating the screen.i����t/RtEetQqtRrtSs(RRR7tsubwinRR0RRRR	R2tgetchtchrRR6RRtnodelayRR,tcursestKEY_UPtKEY_DOWNtKEY_LEFTt	KEY_RIGHT(	R4tstdscr_ytstdscr_xR5R>tboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloop�sd











"

"
cCst|�dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmain�st__main__((R+tstringt	tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyt<module>s$n			?	PK4;�Z[�r���__init__.pynu�[���PK4;�Z>�3��	�	ascii.pynu�[���PK4;�Z���
>has_key.pynu�[���PK4;�Z�?���
z/textpad.pynu�[���PK4;�Z�E��"�M__pycache__/textpad.cpython-38.pycnu�[���PK4;�Z���
��&e__pycache__/panel.cpython-38.opt-1.pycnu�[���PK4;�Z��V�&;f__pycache__/panel.cpython-38.opt-2.pycnu�[���PK4;�Z1��^^).g__pycache__/__init__.cpython-38.opt-1.pycnu�[���PK4;�Z��fTT)�o__pycache__/__init__.cpython-38.opt-2.pycnu�[���PK4;�Z�*���(�v__pycache__/has_key.cpython-38.opt-1.pycnu�[���PK4;�Z#�
qww&��__pycache__/ascii.cpython-38.opt-1.pycnu�[���PK4;�Z�?ݺ��(��__pycache__/textpad.cpython-38.opt-2.pycnu�[���PK4;�Z���
�� ש__pycache__/panel.cpython-38.pycnu�[���PK4;�Z�p1�33&�__pycache__/ascii.cpython-38.opt-2.pycnu�[���PK4;�Z#�
qww ��__pycache__/ascii.cpython-38.pycnu�[���PK4;�Z�E��(X�__pycache__/textpad.cpython-38.opt-1.pycnu�[���PK4;�Z�*���(��__pycache__/has_key.cpython-38.opt-2.pycnu�[���PK4;�Z�*���"��__pycache__/has_key.cpython-38.pycnu�[���PK4;�Z1��^^#	__pycache__/__init__.cpython-38.pycnu�[���PK4;�Zxf�WW�panel.pynu�[���PK�H�ZT�~R��(I__pycache__/has_key.cpython-36.opt-1.pycnu�[���PK�H�Z�UT���)8 __pycache__/__init__.cpython-36.opt-2.pycnu�[���PK�H�ZT�~R��(�%__pycache__/has_key.cpython-36.opt-2.pycnu�[���PK�H�Zd�Q'��&o6__pycache__/panel.cpython-36.opt-2.pycnu�[���PK�H�Zw����&Z7__pycache__/panel.cpython-36.opt-1.pycnu�[���PK�H�ZT�~R��"�8__pycache__/has_key.cpython-36.pycnu�[���PK�H�Z���SS rI__pycache__/ascii.cpython-36.pycnu�[���PK�H�Zw���� Y__pycache__/panel.cpython-36.pycnu�[���PK�H�ZM��A&>Z__pycache__/ascii.cpython-36.opt-2.pycnu�[���PK�H�ZE�O"�i__pycache__/textpad.cpython-36.pycnu�[���PK�H�ZE�O(�__pycache__/textpad.cpython-36.opt-1.pycnu�[���PK�H�Z;t��(y�__pycache__/textpad.cpython-36.opt-2.pycnu�[���PK�H�Z6�=��#Ω__pycache__/__init__.cpython-36.pycnu�[���PK�H�Z6�=��)�__pycache__/__init__.cpython-36.opt-1.pycnu�[���PK�H�Z���SS&l�__pycache__/ascii.cpython-36.opt-1.pycnu�[���PK�A�Z
�m���wrapper.pycnu�[���PK�A�Z����__init__.pyonu�[���PK�A�Z|A9���_�textpad.pycnu�[���PK�A�Z
�m����wrapper.pyonu�[���PK�A�Z��*�44��has_key.pycnu�[���PK�A�Z��*�44�has_key.pyonu�[���PK�A�Z���	d#ascii.pyonu�[���PK�A�Z�)x	�7panel.pycnu�[���PK�A�Z|A9����8textpad.pyonu�[���PK�A�Zv���
$Uwrapper.pynu�[���PK�A�Z���	�[ascii.pycnu�[���PK�A�Z�)x	7ppanel.pyonu�[���PK�A�Z����q__init__.pycnu�[���PK�%�Zlҗ���	�wrepeat.pynuȯ��PK�%�Z�cQ���}ncurses.pycnu�[���PK�%�ZXA?��
�ncurses.pynuȯ��PK�%�Zϐ���8�rain.pyonu�[���PK�%�Z�%����
g�repeat.pyonu�[���PK�%�Z̥��TTN�READMEnu�[���PK�%�Z�
�fcfc�xmas.pynu�[���PK�%�Z�`gj�M�Mu%xmas.pyonu�[���PK�%�Z2��O��Eslife.pyonu�[���PK�%�Z�`gj�M�M�xmas.pycnu�[���PK�%�Z�cQ����ncurses.pyonu�[���PK�%�Z��@@
��tclock.pyonu�[���PK�%�Z�%����
Zrepeat.pycnu�[���PK�%�Z�٪�

	Atclock.pynuȯ��PK�%�Z��@@
}tclock.pycnu�[���PK�%�Z���c	c	�"rain.pynuȯ��PK�%�Z�r;5���,life.pynuȯ��PK�%�Zϐ���}Irain.pycnu�[���PK�%�Z2��O���Rlife.pycnu�[���PKCC~gm