Oc@sRdZddlmZdZdZdZedkr5ddlmZedd Z e j Z e d d d d de ddddd de ddddd de ddd dd de dd d d de dd d d d e j \Z Ze joe jjd!r2dd"lZejjnndd"lZdd"lZdd"lZdd"lZdd"lZdd"lZdd"lZdd"lZdd"lZdd"lZdd"l Z dd"l!Z!dd"l"Z"dd"l#Z#dd"l$Z$dd"l%Z%dd"l&Z&dd#l'm(Z)m'Z'm*Z*dd$l"m+Z+dd%l,m-Z-m.Z.ydd&l/m0Z1m2Z3Wn|e4k rydd&l5m0Z1m2Z3WnNe4k rydd&l6m0Z1m2Z3Wn e4k rd'Z1e1Z3nXnXnXe!j7Z8e8d(d)d)fkZ9e8d*d+d)fkZ:d,Z;e!j<j=e!j>j=f\Z?Z@e9rdd"lAjBZCdd"lDZEdd-lFmGZGmHZHmIZJdd.lFmKZKmLZMmNZOdd/lPmQZQdd0lRmSZTdd"lUZUdd1lVmWZWeXZYeXZZd2Z[d3Z\e]Z^ndd"lCZCdd"lEZEdd4l_mGZGmIZJdd.l%mKZKmLZMmNZOdd/l`mQZQdd5lm^Z^dd"laZUdd6lbmbZWe:rd7Zce&jdeceedd8lmHZHdd9lfmTZTd:ZgeXZhn dd8l_mHZHdd0lRmSZTe3Z[d;d<Zid;d=d>Zje9rejneiZkelZmd(d)d)fe8koHd(d*d)fknrvdd?lVmnZnd@enfdAYZmndBZodCZpdDZqdEerfdFYZsdGerfdHYZtdIerfdJYZudKevfdLYZwdMewfdNYZxdOexfdPYZydQewfdRYZzdSewfdTYZ{dUezfdVYZ|dWezfdXYZ}dYezfdZYZ~d[erfd\YZd]erfd^YZd_erfd`YZdaeTfdbYZdcZdderfdeYZdferfdgYZdhee#jfdiYZdjee#jfdkYZeZeZdlewfdmYZdnerfdoYZdperfdqYZdrerfdsYZdterfduYZdveTfdwYZdxefdyYZdzefd{YZd|eTfd}YZd~efdYZdefdYZderfdYZdddZeldZdddZdedZedZdZdZd)dZdZdZdZdZdZdZdZddZdZdddZdZedZedZedZedZedZedZedZedZedZedZedZderfdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZied6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed6ed!6ed6ed6ed6ZdZdZeZelddddeeeled Zde#jfdYZdeyfdYZderfdYZdefdYZdefdYZdefdYZdefdYZdefdYZdZejedeZejedeZejedeZejedeZdZejedeZejedeZejedeZejedeZddgZiZeaeaeCjZdedRscCs t|dS(Nt__call__(thasattr(tx((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR(Ss(RR(timap(tStringIOs?Python 2.5 support may be dropped in future versions of Bottle.(R(t DictMixincCs |jS(N(tnext(tit((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR/cstutf8cCs&t|tr|j|St|S(N(t isinstancetunicodetencodetbytes(R'tenc((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyttobkststrictcCs)t|tr|j||St|S(N(R2R5tdecodeR3(R'R6terr((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR&ms(t TextIOWrappertNCTextIOWrappercBseZdZRS(cCsdS(N((tself((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytclosews(t__name__t __module__R>(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR<vscOs2ytj||||Wntk r-nXdS(N(t functoolstupdate_wrappertAttributeError(twrappertwrappedtatka((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRBzs cCstj|tdddS(Nt stackleveli(twarningstwarntDeprecationWarning(tmessage((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytdeprscCs:t|ttttfr%t|S|r2|gSgSdS(N(R2ttupletlisttsettdict(R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytmakelists  t DictPropertycBsAeZdZdedZdZdZdZdZ RS(s= Property that maps to a key in a local dict-like attribute. cCs!||||_|_|_dS(N(tattrtkeyt read_only(R=RTRURV((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt__init__scCs9tj||dg||jp(|j|_|_|S(Ntupdated(RARBRUR?tgetter(R=tfunc((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR)scCsV|dkr|S|jt||j}}||krN|j|||target pairs. It is used to efficiently match WSGI requests against a number of routes and return the first target that satisfies the request. The target may be anything, usually a string, ID or callable object. A route consists of a path-rule and a HTTP method. The path-rule is either a static path (e.g. `/contact`) or a dynamic path that contains wildcards (e.g. `/wiki/`). The wildcard syntax and details on the matching order are described in docs:`routing`. s[^/]+tres(\\*)(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)(?::((?:\\.|[^\\>]+)+)?)?)?>))cCsbi|_i|_i|_g|_||_i|jd6|jd6|jd6|jd6|_ dS(NRRntfloattpath( trulestbuildertstatictdynamict strict_ordert re_filtert int_filtert float_filtert path_filtertfilters(R=R8((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs     cCs|p |jddfS(N(tdefault_patternR[(R=tconf((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR#scCsdtdfS(Ns-?\d+cSstt|S(N(tstrRn(R+((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR('s(Rn(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR&scCsdtdfS(Ns-?[\d.]+cSstt|S(N(RR(R+((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR(*s(R(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR)scCsdS(Ns.*?(s.*?NN(R[(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR,scCs||j| Add a new route or replace the target for an existing route. NiRls (?P<%s>%s)s(?:%s)sanon%dicSs7t|jddr&|jdS|jddS(Niiis(?:(RR(tm((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytfpat_sublss(\\*)(\(\?P<[^>]*>|\((?!\?))s^(%s)$sCould not add Route: %s (%s)csh|j}xOD]G\}}y|||||(RRR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRsN(R?R@RdR[RWR)RfRRRtpropertyRRRR(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs    tBottlecBseZdZeeddZdZdZdZdZ dZ ddZ dZ d Z d Zd Zdd ddddd Zdd dZdddZdddZdddZddZdZd dZdZddZdZdZRS(s Each Bottle object represents a single, distinct web application and consists of routes, callbacks, plugins and configuration. Instances are callable WSGI applications. cCsg|_t|_g|_i|_t|p3i|_||_t|_ |j |j |rz|j t n|j t dS(N( troutesRtrouterRt error_handlerRRtcatchallt HooksPluginthookstinstallt JSONPlugintTemplatePlugin(R=RtautojsonR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs      c sttr)|}tdng|jdD]}|r9|^q9}|sftdnt||jdt|jdd|jddj ||fd}|j ds|jddj |d ||nd S( s Mount an application (:class:`Bottle` or plain WSGI) to a specific URL prefix. Example:: root_app.mount('/admin/', admin_app) :param prefix: path prefix or `mount-point`. If it ends in a slash, that slash is mandatory. :param app: an instance of :class:`Bottle` or a WSGI application. All other parameters are passed to the underlying :meth:`route` call. s*Parameter order of Bottle.mount() changed.RsEmpty path prefix.RRRs /%s/:#.*#cszltjtgdfd}tjjtj|_tjjj SWdtj XdS(Nics:|_x$|D]\}}j||qWjjS(N(Rot add_headertbodyR (RoRsRRa(trs(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytstart_response?s ( trequestt path_shiftt BaseResponset itertoolstchainRRRkt status_codeRr(R(Rt path_depth(RshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt mountpoint:s $RN( R2t basestringRMtsplitRRt setdefaultRtrouteRtendswith(R=RRtoptionsRtpartsR ((RR shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytmount$s   ( 1cCs=t|tr|j}nx|D]}|j|q"WdS(s Merge the routes of another :cls:`Bottle` application or a list of :class:`Route` objects into this application. The routes keep their 'owner', meaning that the :data:`Route.app` attribute is not changed. N(R2RRt add_route(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytmergeKs  cCsit|dr|j|nt| rKt|d rKtdn|jj||j|S(s Add a plugin to the list of plugins and prepare it for being applied to all routes of this application. A plugin may be a simple decorator or an object that implements the :class:`Plugin` API. tsetupRvs.Plugins must be callable or implement .apply()(R*Rtcallablet TypeErrorRR R(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRUs cCsg|}}xtt|jdddD]\}}|tks~||ks~|t|ks~t|dt|kr0|j||j|=t|dr|jqq0q0W|r|j n|S(s) Uninstall plugins. Pass an instance to remove a specific plugin, a type object to remove all plugins that match that type, a string to remove all plugins with a matching ``name`` attribute or ``True`` to remove all plugins. Return the list of removed plugins. NiRR>( RORRRRR\R R*R>R(R=RtremovedtremoveR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt uninstallas /*   cKst||dS(s- Calls :func:`run` with the same parameters. N(trun(R=tkwargs((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRpscCs|dkr|j}n+t|tr3|g}n|j|g}x|D]}|jqJWtrx|D]}|jqkWn|jjddS(s Reset all routes (force plugins to be re-applied) and clear all caches. If an ID or route object is given, only that specific route is affected. t app_resetN( R[RR2RRtDEBUGRRttrigger(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRts    cCs=x-|jD]"}t|dr |jq q Wt|_dS(s2 Close the application and all installed plugins. R>N(RR*R>Rtstopped(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR>scCs|jj|S(s Search for a matching route and return a (:class:`Route` , urlargs) tuple. The second value is a dictionary with parameters extracted from the URL. Raise :exc:`HTTPError` (404/405) on a non-match.(RR(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscKsVtjjddjdd}|jj||jd}ttd||S(s, Return a string that matches a named route t SCRIPT_NAMERlR(RRRtstripRRtlstripR(R=t routenametkargst scriptnametlocation((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytget_urls"cCsL|jj||jj|j|j|d|jtrH|jndS(sS Add a route object, but do not change the :data:`Route.app` attribute.RN( RR RRRRRR R(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs%Rc  sitrd}nt|t|fd}|re||S|S(s A decorator to bind a function to a request URL. Example:: @app.route('/hello/:name') def hello(name): return 'Hello %s' % name The ``:name`` part is a wildcard. See :class:`Router` for syntax details. :param path: Request path or a list of paths to listen to. If no path is specified, it is automatically generated from the signature of the function. :param method: HTTP method (`GET`, `POST`, `PUT`, ...) or a list of methods to listen to. (default: `GET`) :param callback: An optional shortcut to avoid the decorator syntax. ``route(..., callback=func)`` equals ``route(...)(func)`` :param name: The name for this route. (default: None) :param apply: A decorator or plugin or a list of plugins. These are applied to the route callback in addition to installed plugins. :param skip: A list of plugins, plugin classes or names. Matching plugins are not installed to this route. ``True`` skips all. Any additional keyword arguments are stored as route-specific configuration and passed to plugins (see :meth:`Plugin.apply`). cst|trt|}nxztp6t|D]`}xWtD]I}|j}t|||ddd}j|qJWq7W|S(NRRR(R2R tloadRRt yieldroutesRRR(RRRR(RRR=RRRR(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt decorators N(RR[RR( R=RRRRRvRRR-((RR=RRRRRshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs    ! cKs|j|||S(s Equals :meth:`route`. (R(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRstPOSTcKs|j|||S(s8 Equals :meth:`route` with a ``POST`` method parameter. (R(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytpoststPUTcKs|j|||S(s7 Equals :meth:`route` with a ``PUT`` method parameter. (R(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytputstDELETEcKs|j|||S(s: Equals :meth:`route` with a ``DELETE`` method parameter. (R(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytdeletesicsfd}|S(s< Decorator: Register an output handler for a HTTP error codecs|jt<|S(N(RRn(thandler(R=Rz(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRDs((R=RzRD((R=RzshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscsfd}|S(s8 Return a decorator that attaches a callback to a hook. csjj||S(N(RR(RZ(R=R(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRDs((R=RRD((R=RshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pythookscCsGtdt|tr&|j|S|ji|d6|jd6S(s/ (deprecated) Execute the first matching route callback and return the result. :exc:`HTTPResponse` exceptions are catched and returned. If :attr:`Bottle.catchall` is true, other exceptions are catched as well and returned as :exc:`HTTPError` instances (500). s;This method will change semantics in 0.10. Try to avoid it.RR(RMR2RQt_handleR(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pythandles  cCsyf|jj|\}}||d<|d<||d<||dtk rW|j s6nt d d tt!d }nXt|trt|j|St|trt"j#|g|St|trt$d t"j#|g|S|jt d d t%|S(s Try to convert the parameter into something WSGI compatible and set correct HTTP headers when possible. Support: False, str, unicode, dict, HTTPResponse, HTTPError, file-like, iterable of strings and iterable of unicodes isContent-Lengths3Error handlers must not return :exc:`HTTPResponse`.treadswsgi.file_wrapperR>t__iter__RlisUnhandled exceptioni cSs|jtjS(N(R4Rutcharset(R+((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR(AssUnsupported response type: %s(&RuR2RNROR5R3RR4RARRwRvRRRoRRkRMt_castRpR*RRtWSGIFileWrappertiterR/t StopIterationRR9R:R;R<RRRR R,R(R=touttpeektfirst((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRBsb               "  cCsny|j|j|}tjdks9tjdkr^t|drU|jng}nttj t rt tj t_ n|tj t tj |SWntttfk rntk ri|jsndt|jdd }tr5|d tttttd f7}n|d j|dg}|d|t|gSXdS(s The bottle WSGI-interface. idieii0RR>s4

Critical error while processing request: %s

RRsD

Error:

%s

Traceback:

%s
i s wsgi.errorss Content-Typestext/html; charset=UTF-8s500 INTERNAL SERVER ERRORN(idieii0(s Content-Typestext/html; charset=UTF-8(RBR6Rut _status_codeRRR*R>R2t _status_lineR3RROt iter_headersR9R:R;R<Rt html_escapeRR RRRR=R7(R=RRRFR:Rr((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytwsgiFs2    ,  cCs|j||S(s9 Each instance of :class:'Bottle' is a WSGI application. (RM(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR)bsN(R?R@RdRR[RWRRRRRRR>RR*RRRR/R1R3RR5R7R6RBRMR)(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs2 '       )    D t BaseRequestcBseZdZdZdZdZedddedZe dZ e d Z edd ded Z d6d Zedd dedZd6d6dZedddedZedddedZedddedZedddedZedddedZedddedZe dZeZedddedZe dZe d Zedd!ded"Ze d#Ze d$Ze d%Zd&d'Z e d(Z!e d)Z"e d*Z#e d+Z$e d,Z%e d-Z&d.Z'd/Z(d0Z)d1Z*d2Z+d3Z,d4Z-d5Z.RS(7s A wrapper for WSGI environment dictionaries that adds a lot of convenient access methods and properties. Most of them are read-only.iidcCs||_||ds(R"RRROtvaluest MAX_PARAMSt FormsDict(R=tcookies((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWscCsY|jj|}|rO|rOt||}|rK|d|krK|dS|S|pX|S(s Return the content of a cookie. To read a `Signed Cookie`, the `secret` must match the one used to create the cookie (see :meth:`BaseResponse.set_cookie`). If anything goes wrong (missing cookie or wrong signature), return a default value. ii(RWRt cookie_decode(R=RUR tsecretRatdec((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt get_cookies  "sbottle.request.querycCsUt|jdt}t}|jdg|jdD]}|j^q(S|jjd}|r]|gSgS(s( A list of all IPs that were involved in this request, starting with the client IP and followed by zero or more proxies. This does only work if all proxies support the ```X-Forwarded-For`` header. Note that this information can be forged by malicious clients. tHTTP_X_FORWARDED_FORRt REMOTE_ADDR(RRRR$(R=tproxytiptremote((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt remote_routes &cCs|j}|r|dSdS(sg The client IP as a string. Note that this information can be forged by malicious clients. iN(RR[(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt remote_addrs cCst|jjS(sD Return a new :class:`Request` with a shallow :attr:`environ` copy. (tRequestRtcopy(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCs |j|S(N(R(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt __getitem__scCsd||<|j|=dS(NRl(R(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt __delitem__s cCs t|jS(N(RDR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR@scCs t|jS(N(RR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt__len__scCs |jjS(N(Rtkeys(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCs|jjdr!tdn||j|(t __class__R?RR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRsN(/R?R@RdRfRURWRSRRRRRRrR[RPRWR[RR`RbRcRhRoRRR.RyRRzRR]RRReRRRRRRRRR@RRRR(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRNpsR                 cCs|jjddS(Nt_t-(ttitletreplace(R'((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt_hkeystHeaderPropertycBs5eZdeddZdZdZdZRS(RlcCsA||||f\|_|_|_|_d|j|_dS(NsCurrent value of the %r header.(RtreadertwriterR RRd(R=RRRR ((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs*cCsN|dkr|S|jj|j}|rA|jrA|j|S|pM|jS(N(R[RrRRRR (R=R]R^Ra((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR`s cCs/|jr|j|}n||j|js(tResponseRoRQRR(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs  "cCs t|jS(N(RDR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR@scCs&t|jdr"|jjndS(NR>(R*RR>(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR>scCs|jS(s; The HTTP status line as a string (e.g. ``404 Not Found``).(RJ(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt status_linescCs|jS(s/ The HTTP status code as an integer (e.g. 404).(RI(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR scCst|tr(|tj|}}n=d|krY|j}t|jd}n tdd|ko|dknstdn||_|pd||_dS(Nt is+String status line without a reason phrase.idisStatus code out of range.s %d Unknown( R2Rnt_HTTP_STATUS_LINESRR$RRRIRJ(R=RoRz((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt _set_statuss    cCs|jS(N(RJ(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt _get_status ssQ A writeable property to change the HTTP response status. It accepts either a numeric code (100-999) or a string with a custom reason phrase (e.g. "404 Brain not found"). Both :data:`status_line` and :data:`status_code` are updated accordingly. The return value is always a status string. cCs$t|jd<}|j|_|S(sl An instance of :class:`HeaderDict`, a case-insensitive dict-like view on the response headers. Rr(RqRgRRQ(R=thdict((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRrs cCst||jkS(N(RR(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt __contains__scCs|jt|=dS(N(RR(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCs|jt|dS(Ni(RR(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCs t|g|jt|RRR RRRoRrRRRRRPReRRRKRRRRRnReRARyRRR(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRsJ                   8 t LocalRequestcBs eZdZdZejZRS(s2 A thread-local subclass of :class:`BaseRequest`. cCsdS(N((R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs(R?R@RdRWRNR8(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs t LocalResponsecBseZdZejZRS(s3 A thread-local subclass of :class:`BaseResponse`. (R?R@RdRRWR8(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRst PluginErrorcBseZRS((R?R@(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRsRcBs)eZdZdZedZdZRS(RhicCs ||_dS(N(R(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWscs)|jsSfd}|S(Ncs;||}t|tr7|}dt_|S|S(Nsapplication/json(R2RQRuR(RFRGtrvt json_response(RR(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRDs   (R(R=RRRD((RRshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRvs   (R?R@RRRRWRv(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs RcBsYeZdZdZd ZdZdZdZdZd Z d Z d Z RS( Ritbefore_requestt after_requestRcCs)td|jD|_d|_dS(Ncss|]}|gfVqdS(N((RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys s(RQt_namesRR[R(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWscCs|jdp|jd S(NRR(R(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt_emptyscCs ||_dS(N(R(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCsX|j}|jj|gj||jrT|rT|j rT|jjndS(s Attach a callback to a hook. N(RRRR RR(R=RRZt was_empty((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs cCsu|j}||jkrE||j|krE|j|j|n|jrq| rq|jrq|jjndS(s Remove a callback from a hook. N(RRRRR(R=RRZR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs  "cOsU|j|}|jdtr5|ddd}ng|D]}|||^q<S(s. Trigger a hook and return a list of results. RNi(RRRe(R=RRFRGRR5((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR!s cs&jrSfd}|S(Ncs3jd||}jddt|S(NRRR(R!R(RFRGR(R=R(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRDs (R(R=RRRD((RR=shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRvs (sbefore_requests after_requests app_reset( R?R@RRRRWRRRRR!Rv(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs      RcBs#eZdZdZdZdZRS(s This plugin applies the :func:`view` decorator to all routes with a `template` config parameter. If the parameter is a tuple, the second element must be a dict with additional options (e.g. `template_engine`) or default variables for the template. R}icCs|jjd}t|ttfrTt|dkrTt|d|d|St|trd|jkrtdt||jd|St|trt||S|SdS(NR}iiit template_optss,The `template_opts` parameter is deprecated.( RRR2RNRORtviewRRM(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRvs' (R?R@RdRRRv(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRst_ImportRedirectcBs&eZdZddZdZRS(cCsv||_||_tjj|tj||_|jjj it d6gd6gd6|d6tj j |dS(s@ Create a virtual package that redirects imports (see PEP 302). t__file__t__path__t__all__t __loader__N( RtimpmaskRtmodulesRtimpt new_moduletmoduleRgtupdateRt meta_pathR (R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs   !cCs?d|krdS|jdd\}}||jkr;dS|S(Nt.i(trsplitR(R=tfullnameRtpacknametmodname((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt find_modules  cCs|tjkrtj|S|jdd\}}|j|}t|tj|}tj|?s(RQR(R=RFR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRW>scCs t|jS(N(RRQ(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRAscCs t|jS(N(RDRQ(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR@BscCs ||jkS(N(RQ(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRCscCs|j|=dS(N(RQ(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRDscCs|j|dS(Ni(RQ(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyREscCs|j||dS(N(R (R=RURa((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRFscCs |jjS(N(RQR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRGscCsd|jjDS(Ncss|]}|dVqdS(iN((RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys Js(RQRT(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRTJscCsd|jjDS(Ncss%|]\}}||dfVqdS(iN((RRRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys Ks(RQR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRKscCsd|jjDS(Ncss.|]$\}}|D]}||fVqqdS(N((RRRtvlR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys Ms(RQR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRtLscCs$g|jjD]}|d^qS(Ni(RQRT(R=R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRTTscCs0g|jjD]\}}||df^qS(Ni(RQR(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRUscCs |jjS(N(RQtiterkeys(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRVscCsd|jjDS(Ncss|]}|dVqdS(iN((RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys Ws(RQt itervalues(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWscCsd|jjDS(Ncss%|]\}}||dfVqdS(iN((RRRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys Ys(RQt iteritems(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRXscCsd|jjDS(Ncss.|]$\}}|D]}||fVqqdS(N((RRRRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys [s(RQR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt iterallitemsZscCs9g|jjD]%\}}|D]}||f^q qS(N(RQR(R=RRR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRt\sicCsAy)|j||}|r$||S|SWntk r<nX|S(s Return the most recent value for a key. :param default: The default value to be returned if the key is not present or the type conversion fails. :param index: An index for the list of available values. :param type: If defined, this callable is used to cast the value into a specific type. Exception are suppressed and result in the default value to be returned. (RQR<(R=RUR tindexRtval((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR_s  cCs |jj|gj|dS(s5 Add a new value to the list of values for this key. N(RQRR (R=RURa((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR pscCs|g|j||djddjVq ||jkr |jddjVq q WdS(NiRRR(RRRR (R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR@s cCsg|D] }|^qS(N((R=R+((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCst|jS(N(RR(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRscCs|j||jkS(N(R R(R=RU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs(s CONTENT_TYPEsCONTENT_LENGTHN(R?R@RdR RWR R[R RRRR@RRR(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyROs          RcBs2eZdZdZdZdZdZRS(s A dict-subclass with some extras: You can access keys like attributes. Uppercase attributes create new ConfigDicts and act as name-spaces. Other missing attributes return None. Calling a ConfigDict updates its values and returns itself. >>> cfg = ConfigDict() >>> cfg.Namespace.value = 5 >>> cfg.OtherNamespace(a=1, b=2) >>> cfg {'Namespace': {'value': 5}, 'OtherNamespace': {'a': 1, 'b': 2}} cCs9||kr,|djr,t|| A stack-like list. Calling it returns the head of the stack. cCs|dS(s) Return the current default application. i((R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR) scCs,t|tst}n|j||S(s1 Add a new :class:`Bottle` instance to the stack (R2RR (R=Ra((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytpush s  N(R?R@RdR)R[R(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs RCcBseZddZdZRS(ii@cCsS|||_|_x9dD]1}t||rt||t||qqWdS(NtfilenoR>R?t readlinesttellRk(sfilenosclosesreads readlinesstellsseek(Rtt buffer_sizeR*RiR\(R=RtRRT((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWs ccs?|j|j}}x%tr:||}|s2dS|VqWdS(N(RR?R(R=tbuffR?Rn((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR@s   i(R?R@RWR@(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRCs is#Unknown Error: Application stopped.cCst||dS(s+ Aborts execution and causes a HTTP error. N(Rw(Rzttext((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytabort-scCsg|d kr0tjddkr'dnd}nttj|}tdd|dtd|d S( sd Aborts execution and causes a 303 or 302 redirect, depending on the HTTP protocol version. tSERVER_PROTOCOLsHTTP/1.1i/i.RlRoRstLocationN(R[RRRRRkRQ(RRzR)((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytredirect2s $iccs[|j|xG|dkrV|jt||}|s>Pn|t|8}|VqWdS(sF Yield chunks from a range in a file. No chunk is bigger than maxread.iN(RkR?RjR(RtRR5RlRn((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt_file_iter_range;s tautocCs)tjj|tj}tjjtjj||jd}t}|j|shtddStjj | stjj | rtddStj |tj stddS|dkrt j|\}}|r||d#&' cCs6tdt||D o5t|t|kS(ss Compares two strings in a cryptographically save way: Runtime is not affected by length of common prefix. css-|]#\}}||kr!dndVqdS(iiN((RRR+ty((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pys s(tsumtzipR(RFtb((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt_lscmpscCs^tjtj|d}tjtjt||j}td|td|S(s> Encode and sign a pickle-able object. Return a (byte) string it!R(RDt b64encodetpickleRthmactnewR7tdigest(RRUtmsgtsig((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs'cCst|}t|r|jtdd\}}t|dtjtjt||jrt j tj |SndS(s? Verify and decode an encoded string. Return an object or None.RiN( R7tcookie_is_encodedRRNRDRPRRRSRTRQRRER[(RRURVRU((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRXs   4cCs+t|jtdo'td|kS(s9 Return True if the argument looks like a encoded cookie.ROR(R;RR7(R((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRWscCs@|jddjddjddjddjd d S( s; Escape HTML special characters ``&<>`` and quotes ``'"``. t&s&ts>t"s"t's'(R(tstring((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRLs*cCs2dt|jddjddjddS(s; Escape and quote a string to be used as an HTTP attribute.s"%s"s s%#10;s s s s (RLR(R]((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt html_quotesccsddl}d|jjddjd}|j|}t|dt|dpZg}|d|t|d| 7}|Vx)|d|D]}|d|7}|VqWdS(s Return a generator for routes that match the signature (name, args) of the func parameter. This may yield more than one route if the function takes optional keyword arguments. The output is best described by example:: a() -> '/a' b(x, y) -> '/b/:x/:y' c(x, y=5) -> '/c/:x' and '/c/:x/:y' d(x=5, y=6) -> '/d' and '/d/:x' and '/d/:x/:y' iNRt__iis/:%s(tinspectR?RR%t getargspecRRN(RZR`Rtspectargctarg((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyR,s "$ ic Cs}|dkr||fS|jdjd}|jdjd}|re|ddkreg}n|r|ddkrg}n|dkr|t|kr|| }||}||}nh|dkr|t| kr||}||}|| }n(|dkrdnd}td|ddj|}ddj|}|jdrs|rs|d7}n||fS(sS Shift path fragments from PATH_INFO to SCRIPT_NAME and vice versa. :return: The modified paths. :param script_name: The SCRIPT_NAME path. :param script_name: The PATH_INFO path. :param shift: The number of path fragments to shift. May be negative to change the shift direction. (default: 1) iRRlR#Rs"Cannot shift. Nothing left from %s(R$RRRRR( Rt path_infoRtpathlistt scriptlisttmovedtemptytnew_script_namet new_path_info((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRs.          c stdfd}|S(s Validates and manipulates keyword arguments by user defined callables. Handles ValueError and missing arguments by raising HTTPError(403). s#Use route wildcard filters instead.cs%tjfd}|S(NcsxwjD]i\}}||kr9tdd|ny|||||RR%Rt executabletargvRt subprocesstPopentpollR[tutimeRtsleeptunlinktexitR9t_debugRR2R RRRRt server_namesR+RRuRvRt __version__RRRtFileCheckerThreadRRoR:R;R\R(RR~RRtintervaltreloaderRvRR<R'tfdtlockfileRRRRtbgcheck((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRa s            RcBs2eZdZdZdZdZdZRS(sw Interrupt main-thread as soon as a changed module file is detected, the lockfile gets deleted or gets to old. cCs0tjj||||_|_d|_dS(N(RtThreadRWRRR[Ro(R=RR((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRW scCsOtjj}d}t}xktjjD]Z}t|dd}|dd krc|d }n|r.||r.||||texec(RRzR_(R=((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytco sc sgd}ggt}}}|jpDt|jdj}d}fd}fdxB|jtD]1}|d7}t|tr|nt|d|j }|dkrt j d |} | r| j d|_ n| r|j d d }qn|jd jd dkru|jd ddj}|j|j} t jd | d} || |jks|r+|p| } | |jk}|r| r| rj} n|| jd }| jdr| nt}| rr| rrj| qrq| dkrdrddj|jdfq| dkr| jddd} t| dkrdt| d| dfqr| rdt| dqrdq| dkrh| jddd} t| dkrDdt| d| dfqr| rrdt| dqrq|q|jjdr|j dd d}nj||qW|djdS(NiR cssqxjttjd|D]P\}}|dr^|jdrPd|dfVqid|fVqd|fVqWdS(Ns \{\{(.*?)\}\}iROtRAWitCMDtTXT(RRRR(tlineRRn((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyt yield_tokens s % css dSd}xD]}xw|D]o\}}|dkrO|t|7}n:|dkrl|d|7}n|dkr|d|7}n|d7}q$W|d d }qW|d }|d jd r|d |d }nd |d}2|dS(NRlRbR`s_str(%s)Ras _escape(%s)s, is\ is\\\\\nis _printlist([s])(RR(tclineRcttokenRa(Rzt ptrbuffer(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pytflush s&     cs<x5|jD]'}jdt|jq WdS(Ns (t splitlinesR RR$(tstmtRc(t codebuffertstack(shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRz siRris%.*coding[:=]\s*([-\w\.]+)tcodingscoding (removed)t%s [^a-zA-Z0-9_]Rs\Rs #end(%s) %sitincludes_=_include(%s, _stdout, %s)s_=_include(%s, _stdout)s_printlist(_base)trebases#globals()['_rebase']=(%s, dict(%s))sglobals()['_rebase']=(%s, {})s%%s (ReRR0R_R?RiRR2R3RrRRRRR$tcountRR%R]tblockst dedent_blocksRRR R[RRRR( R=tlinenot multilinetdedenttonelineR}RdRhRcRRetcmdR((RzRgRlRkshC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyRz sn!     ' %  % cOsix|D]}|j|qW||jkrR|jd|d|j|j|| ss %try: %from bottle import DEBUG, HTTP_CODES, request, touni %status_name = HTTP_CODES.get(e.status, 'Unknown').title() Error {{e.status}}: {{status_name}}

Error {{e.status}}: {{status_name}}

Sorry, the requested URL {{repr(request.url)}} caused an error:

{{e.output}}
%if DEBUG and e.exception:

Exception:

{{repr(e.exception)}}
%end %if DEBUG and e.traceback:

Traceback:

{{e.traceback}}
%end %except ImportError: ImportError: Could not generate the error page. Please add bottle to the import path. %end s.exts bottle_%ss Bottle %s s" Error: No application specified. Rtbottlet localhostRRRR~RRR<(Rdt __future__Rt __author__Rt __license__R?toptparseRt _cmd_parsert add_optiont_optt parse_argst _cmd_optionst _cmd_argsR~Rt gevent.monkeyR RRRDRut email.utilsR=RARRRRR)R"RRRRRRturllibRIRRRRRRyRRRhRRRR%Rt simplejsontdjango.utils.simplejsont version_infotpyRtpy25RRR=tstderrRzRt http.clienttclientthttplibt_threadR t urllib.parseRRRRRR RR!t urlunquotet http.cookiesR"t collectionsR#R.RQtioR$RR R3RgRtmapR,turlparsetCookietcPickleR-RURJRKtUserDictR/R5R7R&R|R[R<R;RBRMRRtobjectRSRfRhR<RjRkRwRRRRRRRRRNRRRRRRRRRRRRRRRVRqRORQRRORRCRRRReR:RR<R/RR1RNRRXRWRLR^R,RRnRsRtRRR/R1R3RRR5RRRRuRwR{RRRRRRRRRRRRRRRRR+RRRRRRRR&R0R6R?RHR}tpartialt mako_templatetcheetah_templatetjinja2_templatetsimpletal_templateRt mako_viewt cheetah_viewt jinja2_viewtsimpletal_viewRRR Rt responsest HTTP_CODESRRR~RRuRRRRR toptRRtversionRt print_helpRtinsertRRR8RRRRR(((shC:\Users\\Desktop\ 2011-12\\\3\YS-ASK3-2011\YS-ASK3-2011\lib\bottle.pyts                    .  _bB  -$J1!  A                                   Y1G         %          "