
Rc           @` s   d  d k  l Z l Z l Z d  d k Z d  d k l Z l Z d d k l	 Z	 d d k
 l Z d e f d     YZ d	 e	 e f d
     YZ d S(   i    (   t   absolute_importt   divisiont   unicode_literalsN(   t   escapet   unescapei   (   t   HTMLTokenizer(   t
   tokenTypest   HTMLSanitizerMixinc           B` s+  e  Z d  Z d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc gc Z dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ g Z d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d g# Z d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d( d d d d d d d d d d d d d d d d d7 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d ddddddddd	d
ddddddQ dddddddddd dddddddd d!d"d#d$d%d&g Z d'd d(d(d(d)d*d+d,d-d.d/d0d1d2d3d d d4d5d6d7d8d8d9d:d;d<d<d<d=d>d
d?d@dAdBdCd$d$dDdEdFdGdHg- Z dIdJdKdLdMdNdOdPdQdRdSdTdUdVd dWd dXdYdZd[d\d]d^d_d-d`d dadbdcdddedfdgdhdidjdkdldmdndodpdqd drdsd dtdudvdwdxd dydzd{d|d}d~dd d d dddddddd ddddddddddddddddddddddddddddddddddddddddddddddd$ddddddddDddEddFdd&ddGdHddddg Z d dd d d d dDdg Z	 dWdddadd d{dzdyddg Z
 dd d d d dddd d d ddd d g Z ddddddddd d ddd-ddd' dddedgdhdid dddddddddddddddddddddd!dd$g. Z dddddddddd ddddddddddddd~ d dd dddddddd	d
ddddg' Z dadbdcdddddg Z ddddddddddddddddddd d!d"d#g Z e e e Z e e e Z e Z e Z e Z e Z d$  Z d%  Z d&  Z d'  Z RS((  uA    sanitization of XHTML+MathML+SVG and of inline style attributes.u   au   abbru   acronymu   addressu   areau   articleu   asideu   audiou   bu   bigu
   blockquoteu   bru   buttonu   canvasu   captionu   centeru   citeu   codeu   colu   colgroupu   commandu   datagridu   datalistu   ddu   delu   detailsu   dfnu   dialogu   diru   divu   dlu   dtu   emu   event-sourceu   fieldsetu
   figcaptionu   figureu   footeru   fontu   formu   headeru   h1u   h2u   h3u   h4u   h5u   h6u   hru   iu   imgu   inputu   insu   keygenu   kbdu   labelu   legendu   liu   mu   mapu   menuu   meteru   multicolu   navu   nextidu   olu   outputu   optgroupu   optionu   pu   preu   progressu   qu   su   sampu   sectionu   selectu   smallu   soundu   sourceu   spaceru   spanu   strikeu   strongu   subu   supu   tableu   tbodyu   tdu   textareau   timeu   tfootu   thu   theadu   tru   ttu   uu   ulu   varu   videou   mactionu   mathu   merroru   mfracu   miu   mmultiscriptsu   mnu   mou   moveru   mpaddedu   mphantomu   mprescriptsu   mrootu   mrowu   mspaceu   msqrtu   mstyleu   msubu   msubsupu   msupu   mtableu   mtdu   mtextu   mtru   munderu
   munderoveru   noneu   animateu   animateColoru   animateMotionu   animateTransformu   clipPathu   circleu   defsu   descu   ellipseu	   font-faceu   font-face-nameu   font-face-srcu   gu   glyphu   hkernu   linearGradientu   lineu   markeru   metadatau   missing-glyphu   mpathu   pathu   polygonu   polylineu   radialGradientu   rectu   setu   stopu   svgu   switchu   textu   titleu   tspanu   useu   acceptu   accept-charsetu	   accesskeyu   actionu   alignu   altu   autocompleteu	   autofocusu   axisu
   backgroundu   balanceu   bgcoloru   bgpropertiesu   borderu   bordercoloru   bordercolordarku   bordercolorlightu   bottompaddingu   cellpaddingu   cellspacingu   chu	   challengeu   charu   charoffu   choffu   charsetu   checkedu   classu   clearu   coloru   colsu   colspanu   compactu   contenteditableu   controlsu   coordsu   datau   datafldu   datapagesizeu   datasrcu   datetimeu   defaultu   delayu   disabledu	   draggableu   dynsrcu   enctypeu   endu   faceu   foru   frameu
   galleryimgu   gutteru   headersu   heightu	   hidefocusu   hiddenu   highu   hrefu   hreflangu   hspaceu   iconu   idu	   inputmodeu   ismapu   keytypeu   leftspacingu   langu   listu   longdescu   loopu	   loopcountu   loopendu	   loopstartu   lowu   lowsrcu   maxu	   maxlengthu   mediau   methodu   minu   multipleu   nameu   nohrefu   noshadeu   nowrapu   openu   optimumu   patternu   pingu
   point-sizeu   posteru   pqgu   preloadu   promptu
   radiogroupu   readonlyu   relu
   repeat-maxu
   repeat-minu   replaceu   requiredu   revu   rightspacingu   rowsu   rowspanu   rulesu   scopeu   selectedu   shapeu   sizeu   srcu   startu   stepu   styleu   summaryu   suppressu   tabindexu   targetu   templateu
   toppaddingu   typeu   unselectableu   usemapu   urnu   valignu   valueu   variableu   volumeu   vspaceu   vrmlu   widthu   wrapu   xml:langu
   actiontypeu   columnalignu   columnlinesu   columnspacingu
   columnspanu   depthu   displayu   displaystyleu   equalcolumnsu	   equalrowsu   fenceu	   fontstyleu
   fontweightu   linethicknessu   lspaceu   mathbackgroundu	   mathcoloru   mathvariantu   maxsizeu   minsizeu   otheru   rowalignu   rowlinesu
   rowspacingu   rspaceu   scriptlevelu	   selectionu	   separatoru   stretchyu
   xlink:hrefu
   xlink:showu
   xlink:typeu   xmlnsu   xmlns:xlinku   accent-heightu
   accumulateu   additiveu
   alphabeticu   arabic-formu   ascentu   attributeNameu   attributeTypeu   baseProfileu   bboxu   beginu   byu   calcModeu
   cap-heightu	   clip-pathu   color-renderingu   contentu   cxu   cyu   du   dxu   dyu   descentu   duru   fillu   fill-opacityu	   fill-ruleu   font-familyu	   font-sizeu   font-stretchu
   font-styleu   font-variantu   font-weightu   fromu   fxu   fyu   g1u   g2u
   glyph-nameu   gradientUnitsu   hangingu   horiz-adv-xu   horiz-origin-xu   ideographicu   ku	   keyPointsu
   keySplinesu   keyTimesu
   marker-endu
   marker-midu   marker-startu   markerHeightu   markerUnitsu   markerWidthu   mathematicalu   offsetu   opacityu   orientu   originu   overline-positionu   overline-thicknessu   panose-1u
   pathLengthu   pointsu   preserveAspectRatiou   ru   refXu   refYu   repeatCountu	   repeatDuru   requiredExtensionsu   requiredFeaturesu   restartu   rotateu   rxu   ryu   slopeu   stemhu   stemvu
   stop-coloru   stop-opacityu   strikethrough-positionu   strikethrough-thicknessu   strokeu   stroke-dasharrayu   stroke-dashoffsetu   stroke-linecapu   stroke-linejoinu   stroke-miterlimitu   stroke-opacityu   stroke-widthu   systemLanguageu   text-anchoru   tou	   transformu   u1u   u2u   underline-positionu   underline-thicknessu   unicodeu   unicode-rangeu   units-per-emu   valuesu   versionu   viewBoxu
   visibilityu   widthsu   xu   x-heightu   x1u   x2u   xlink:actuateu   xlink:arcroleu
   xlink:roleu   xlink:titleu   xml:baseu	   xml:spaceu   yu   y1u   y2u
   zoomAndPanu   color-profileu   cursoru   filteru   masku   altGlyphu   feImageu   textpathu   trefu   azimuthu   background-coloru   border-bottom-coloru   border-collapseu   border-coloru   border-left-coloru   border-right-coloru   border-top-coloru	   directionu	   elevationu   floatu   letter-spacingu   line-heightu   overflowu   pauseu   pause-afteru   pause-beforeu   pitchu   pitch-rangeu   richnessu   speaku   speak-headeru   speak-numeralu   speak-punctuationu   speech-rateu   stressu
   text-alignu   text-decorationu   text-indentu   unicode-bidiu   vertical-alignu   voice-familyu   white-spaceu   autou   aquau   blacku   blocku   blueu   boldu   bothu   bottomu   brownu   collapseu   dashedu   dottedu   fuchsiau   grayu   greenu
   !importantu   italicu   leftu   limeu   maroonu   mediumu   navyu   normalu   oliveu   pointeru   purpleu   redu   rightu   solidu   silveru   tealu   topu   transparentu	   underlineu   whiteu   yellowu   ed2ku   ftpu   httpu   httpsu   ircu   mailtou   newsu   gopheru   nntpu   telnetu   webcalu   xmppu   calltou   feedu   aimu   rsyncu   tagu   sshu   sftpu   rtspu   afsc         C` s   | d } | t  t i    j o t | } n | t d t d t d f j o9 | d |  i j o |  i | |  S|  i | |  Sn | t d j o n | Sd  S(   Nu   typeu   StartTagu   EndTagu   EmptyTagu   nameu   Comment(   t   listR   t   keyst   allowed_elementst   allowed_tokent   disallowed_token(   t   selft   tokent
   token_type(    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyt   sanitize_token   s    
c   
      C` s  d | j ot  g  } | d d  d  d  D]- \ } } | |  i j o | | | f q, q, ~  } x |  i D] } | | j o qo n t i d d t | |   i   } | i d d  } t i d |  o( | i	 d  d |  i
 j o | | =qo qo WxE |  i D]: } | | j o' t i d	 d
 t | |   | | <q	q	W| d |  i j o/ d | j o" t i d | d  o | d =n d | j o |  i | d  | d <n g  }	 t | i    D] \ } } |	 | | g q~	 | d <n | S(   Nu   dataiu   [` - - \s]+u    u   �u   ^[a-z0-9][-+.a-z0-9]*:u   :i    u   url\s*\(\s*[^#\s][^)]+?\)u    u   nameu
   xlink:hrefu   ^\s*[^#\s].*u   style(   t   dictt   allowed_attributest   attr_val_is_urit   ret   subR   t   lowert   replacet   matcht   splitt   allowed_protocolst   svg_attr_val_allows_reft   svg_allow_local_hreft   searcht   sanitize_cssR   t   items(
   R   R   R   t   _[1]t   namet   valt   attrst   attrt   val_unescapedt   _[2](    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyR      s:    
!-
 
 	Ac         C` s  | t  d j o d | d | d <n~ | d o` d i g  } | d D]# \ } } | d | t |  f qG ~  } d | d | f | d <n d | d | d <| i d	  o | d d
  d | d <n | d t t  i    j o d | d <n t  d | d <| d =| S(   Nu   EndTagu   </%s>u   nameu   datau    u    %s="%s"u   <%s%s>u   <%s>u   selfClosingiu   />u   typeu
   Characters(   R   t   joinR   t   getR   R	   (   R   R   R   R    t   kt   vR#   (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyR      s    Dc         C` sr  t  i d  i d |  } t  i d |  p d St  i d |  p d Sg  } xt  i d |  D] \ } } | p qd n | i   |  i j o | i | d | d  qd | i d	  d
 i   d j o] x | i   D]/ } | |  i	 j o t  i d |  o Pq q W| i | d | d  qd | i   |  i
 j o | i | d | d  qd qd Wd i |  S(   Nu   url\s*\(\s*[^\s)]+?\s*\)\s*u    u@   ^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$u    u    ^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$u   ([-\w]+)\s*:\s*([^:;]*)u   : u   ;u   -i    u
   backgroundu   borderu   marginu   paddingu\   ^(#[0-9a-f]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$(   u
   backgroundu   borderu   marginu   padding(   R   t   compileR   R   t   findallR   t   allowed_css_propertiest   appendR   t   acceptable_css_keywordst   allowed_svg_propertiesR'   (   R   t   stylet   cleant   propt   valuet   keyword(    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyR      s.     
 	!(   t   __name__t
   __module__t   __doc__t   acceptable_elementst   mathml_elementst   svg_elementst   acceptable_attributest   mathml_attributest   svg_attributesR   R   R   t   acceptable_css_propertiesR/   t   acceptable_svg_propertiest   acceptable_protocolsR
   R   R-   t   allowed_css_keywordsR0   R   R   R   R   R   (    (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyR   
   s   									t   HTMLSanitizerc           B` s,   e  Z d e e e e d d   Z d   Z RS(   c      
   C` s)   t  i |  | | | | | | d | d  S(   Nt   parser(   R   t   __init__(   R   t   streamt   encodingt	   parseMetat
   useChardett   lowercaseElementNamet   lowercaseAttrNameRD   (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyRE     s    c         c` s=   x6 t  i |   D]% } |  i |  } | o	 | Vq q Wd  S(   N(   R   t   __iter__R   (   R   R   (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyRL     s
     N(   R6   R7   t   Nonet   Truet   FalseRE   RL   (    (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyRC     s   	(   t
   __future__R    R   R   R   t   xml.sax.saxutilsR   R   t	   tokenizerR   t	   constantsR   t   objectR   RC   (    (    (    sY   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/html5lib/sanitizer.pyt   <module>   s   