ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ aNc@s<dZddlmZdefdYZedZdS(s- Grant roles and logins based on IP address. i(tip4tGrantIPMiddlewarecBs5eZdZedZdZdZdZRS(s On each request, ``ip_map`` is checked against ``REMOTE_ADDR`` and logins and roles are assigned based on that. ``ip_map`` is a map of {ip_mask: (username, roles)}. Either ``username`` or ``roles`` may be None. Roles may also be prefixed with ``-``, like ``'-system'`` meaning that role should be revoked. ``'__remove__'`` for a username will remove the username. If ``clobber_username`` is true (default) then any user specification will override the current value of ``REMOTE_USER``. ``'__remove__'`` will always clobber the username. ``ip_mask`` is something that `paste.util.ip4:IP4Range `_ can parse. Simple IP addresses, IP/mask, ip<->ip ranges, and hostnames are allowed. cCso||_g|_xM|jD]?\}}|jjtj||j|d|dfqW||_dS(Nii(tapptip_maptitemstappendRtIP4Ranget_convert_user_roletclobber_username(tselfRRRtkeytvalue((sC/opt/alt/python27/lib/python2.7/site-packages/paste/auth/grantip.pyt__init__s   "cCs1|r't|tr'|jd}n||fS(Nt,(t isinstancet basestringtsplit(R tusernametroles((sC/opt/alt/python27/lib/python2.7/site-packages/paste/auth/grantip.pyR$sc Cstj|dt}t}g}x|jD]{\}\}}||kr,|r`|j|n|dkrut}q|r|jd s|jr||dsF