ÿØÿà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Áß_ÿÙ ;Pc@sdddYZdddYZdddYZdddYZdefd YZd Zd Zd Zd ZdZ dZ dS(tGraphcBs,eZdZdZdZdZRS(cCs||_||_dS(N(tobjectstarrows(tselfRR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyt__init__s cCs|j|dS(Ni(R(Rtx((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytsourcescCs|j|dS(Ni(R(RR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyttarget scCsY|j}tg|jjD]$\}\}}|||ff^q}|j||S(N(RtdictRtitemst __class__(RRtarrowtsrcttgtR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytget_duals @(t__name__t __module__RRRR(((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRs   tCatcBseZdZdZRS(cCs||_||_dS(N(tgrapht relations(RRR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRs cCs.|jj}t|j}|j||S(N(RRtdual_relationsRR (RRR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRs(RRRR(((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRs tFunctorcBseZdddZRS(cCs4t||_t||_||_||_dS(N(tadapt_functiontfotfaR R (RRRR R ((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR%s N(RRtNoneR(((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR$stFunctioncBs>eZdZdZdZdZdZdZRS(cCset|dd}t|r!n|}t|s?tdn||_|_||_||_dS(Nt __getitem__s.Function: map is neither callable or indexable(tgetattrRtcallablet TypeErrorRt__call__R R (RtmapR R tf((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR,s    cCs d|j|j|j|jfS(Ns%s(%s, %s, %s)(R R R R(R((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyt__str__8scCs*tg|jD]}|||f^q S(N(RR (RR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytasdict;scCs$g|jD]}|||f^q S(N(R (RR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR >scCs t|jS(N(tlistR (R((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytkeysAscCs#g|jD]\}}|^q S(N(R (Rtktv((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytvaluesDs(RRRR"R#R R%R((((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR+s     tIdentitycBseZdZRS(cCstjd||dS(NcSs|S(N((R((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytJt(RR(RR ((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRIs(RRR(((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyR)HscCs|j}xy|jD]n}|j||krMtd||j|fn|j||krtd||j|fqqWdS(Ns+Arrow %r has source %r not in graph objectss+Arrow %r has target %r not in graph objects(RRRt ValueErrorR(tGtGobta((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyt check_graphLs  c Csg}x.|D]&\}}|j||j|q Wx|D]}d}x|D]}||jkrytd|fn|dk r|j||j|krtd||j|||j|fqn|}qQWq>WdS(Ns.Arrow %r, used in a rule, is not a valid arrows>Source of arrow %r (%r) does not match target of arrow %r (%r)(tappendRRR,RR(tRR-tcomstlefttrighttcomta0R/((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyt check_rulesWs    +cCs$t|jt|j|jdS(N(R0RR8R(tC((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyt check_catls cCstt|||S(N(RR(RRR((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pytoarcatqscCs^t|tsZt|tr9|j}|j}n d}d}t|||}n|S(N(t isinstanceRRR%R(R(R!R R ((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRts cCslg}x_|D]W\}}t|}t|}|j|j|jt|t|fq W|S(N(R$treverseR1ttuple(RtdualR/tb((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyRs    #N((((( RRRRR)R0R8R:R;RR(((s@/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/Cat.pyts