PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib64/python3.6/__pycache__
Viewing File: /usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.opt-2.pyc
3 aiC#�@s�dZddlZdZdZGdd�de�ZGdd�de�Zd d �Zd<d d �Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zd d!�ZGd"d#�d#�ZejGd$d%�d%e��ZejGd&d'�d'e��ZGd(d)�d)�ZGd*d+�d+ee�ZGd,d-�d-e�ZGd.d/�d/ee�ZGd0d1�d1�Zee_Gd2d3�d3�ZGd4d5�d5ee�ZGd6d7�d7e�ZGd8d9�d9ee�Z Gd:d;�d;�Z!e!e_dS)=z1.0�N� �c@s eZdZdS)�AddressValueErrorN)�__name__� __module__� __qualname__�rr�!/usr/lib64/python3.6/ipaddress.pyrsrc@s eZdZdS)�NetmaskValueErrorN)rrrrrrr r sr cCsTyt|�Sttfk r YnXyt|�Sttfk rBYnXtd|��dS)Nz0%r does not appear to be an IPv4 or IPv6 address)� IPv4Addressrr � IPv6Address� ValueError)�addressrrr � ip_addresssrTcCsXy t||�Sttfk r"YnXy t||�Sttfk rFYnXtd|��dS)Nz0%r does not appear to be an IPv4 or IPv6 network)� IPv4Networkrr � IPv6Networkr )r�strictrrr � ip_network9s  rcCsTyt|�Sttfk r YnXyt|�Sttfk rBYnXtd|��dS)Nz2%r does not appear to be an IPv4 or IPv6 interface)� IPv4Interfacerr � IPv6Interfacer )rrrr � ip_interfaceWsrc Cs.y |jdd�Stk r(td��YnXdS)N��bigz&Address negative or too large for IPv4)�to_bytes� OverflowErrorr )rrrr �v4_int_to_packedzs rc Cs.y |jdd�Stk r(td��YnXdS)N�rz&Address negative or too large for IPv6)rrr )rrrr �v6_int_to_packed�s  rcCs*t|�jd�}t|�dkr&td|��|S)N�/�zOnly one '/' permitted in %r)�str�split�lenr)r�addrrrr �_split_optional_netmask�s  r$ccsRt|�}t|�}}x.|D]&}|j|jdkr<||fV|}|}qW||fVdS)N�)�iter�next�_ip)� addresses�it�first�last�iprrr �_find_address_range�s    r.cCs$|dkr |St|||d@j��S)Nrr%)�min� bit_length)Znumber�bitsrrr �_count_righthand_zero_bits�s r2ccs�t|t�ot|t�std��|j|jkr8td||f��||krHtd��|jdkrXt}n|jdkrht}ntd��|j}|j}|j}x^||kr�t t ||�||dj �d�}||||f�}|V|d|>7}|d|j kr�Pq�WdS)Nz1first and last must be IP addresses, not networksz%%s and %s are not of the same versionz*last IP address must be greater than firstr�zunknown IP versionr%) � isinstance� _BaseAddress� TypeError�versionr rr�_max_prefixlenr(r/r2r0� _ALL_ONES)r+r,r-Zip_bitsZ first_intZlast_intZnbits�netrrr �summarize_address_range�s0         r;ccs�t|�}i}xL|rX|j�}|j�}|j|�}|dkr>|||<q||kr||=|j|�qWd}x4t|j��D]$}|dk r�|j|jkr�ql|V|}qlWdS)N)�list�pop�supernet�get�append�sorted�values�broadcast_address)r)Zto_merge�subnetsr:r>Zexistingr,rrr �_collapse_addresses_internals$   rEc Cs8g}g}g}x�|D]�}t|t�rT|rH|dj|jkrHtd||df��|j|�q|j|jkr�|r�|dj|jkr�td||df��y|j|j�Wq�tk r�|j|j �Yq�Xq|r�|dj|jkr�td||df��|j|�qWt t |��}|�r,x&t |�D]\}}|j t||���qWt||�S) Nr%z%%s and %s are not of the same version���rFrFrFrFrF)r4r5�_versionr6r@� _prefixlenr8r-�AttributeError�network_addressrA�setr.�extendr;rE)r)ZaddrsZipsZnetsr-r+r,rrr �collapse_addresses2s4     rMcCs(t|t�r|j�St|t�r$|j�StS)N)r4� _BaseNetwork�_get_networks_keyr5�_get_address_key�NotImplemented)�objrrr �get_mixed_type_keyhs   rSc@s�eZdZfZedd��Zedd��Zedd��Zedd��Zd d �Z d d �Z e d d��Z e dd��Z e dd��Ze dd��Ze dd��Zdd�ZdS)�_IPAddressBasecCs|j�S)N)�_explode_shorthand_ip_string)�selfrrr �exploded�sz_IPAddressBase.explodedcCst|�S)N)r )rVrrr � compressed�sz_IPAddressBase.compressedcCs|j�S)N)�_reverse_pointer)rVrrr �reverse_pointer�s z_IPAddressBase.reverse_pointercCsdt|�f}t|��dS)Nz%200s has no version specified)�type�NotImplementedError)rV�msgrrr r7�sz_IPAddressBase.versioncCsF|dkrd}t|||jf��||jkrBd}t|||j|jf��dS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrGr9r8)rVrr]rrr �_check_int_address�s  z!_IPAddressBase._check_int_addresscCs.t|�}||kr*d}t|||||jf��dS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r"rrG)rVrZ expected_lenZ address_lenr]rrr �_check_packed_address�s z$_IPAddressBase._check_packed_addresscCs|j|j|?AS)N)r9)�cls� prefixlenrrr �_ip_int_from_prefix�s z"_IPAddressBase._ip_int_from_prefixc Cs\t||j�}|j|}||?}d|>d}||krX|jd}|j|d�}d}t||��|S)Nr%�rz&Netmask pattern %r mixes zeroes & ones)r2r8rr ) r`�ip_intZtrailing_zeroesraZ leading_onesZall_onesZbyteslenZdetailsr]rrr �_prefix_from_ip_int�s      z"_IPAddressBase._prefix_from_ip_intcCsd|}t|�d�dS)Nz%r is not a valid netmask)r )r`Z netmask_strr]rrr �_report_invalid_netmask�sz&_IPAddressBase._report_invalid_netmaskc Csjtjj|�s|j|�y t|�}Wntk r@|j|�YnXd|koV|jknsf|j|�|S)Nr)�_BaseV4�_DECIMAL_DIGITS� issupersetrf�intr r8)r`Z prefixlen_strrarrr �_prefix_from_prefix_string�s    z)_IPAddressBase._prefix_from_prefix_stringcCs�y|j|�}Wntk r,|j|�YnXy |j|�Stk rLYnX||jN}y |j|�Stk r�|j|�YnXdS)N)�_ip_int_from_stringrrfrer r9)r`�ip_strrdrrr �_prefix_from_ip_string�s   z%_IPAddressBase._prefix_from_ip_stringcCs|jt|�ffS)N)� __class__r )rVrrr � __reduce__sz_IPAddressBase.__reduce__N)rrr� __slots__�propertyrWrXrZr7r^r_� classmethodrbrerfrkrnrprrrr rT�s        "rTc@s`eZdZfZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dS)r5cCs|jS)N)r()rVrrr �__int__&sz_BaseAddress.__int__c Cs2y|j|jko|j|jkStk r,tSXdS)N)r(rGrIrQ)rV�otherrrr �__eq__)s   z_BaseAddress.__eq__cCsFt|t�stS|j|jkr*td||f��|j|jkrB|j|jkSdS)Nz%%s and %s are not of the same versionF)r4r5rQrGr6r()rVrurrr �__lt__0s     z_BaseAddress.__lt__cCs t|t�stS|jt|�|�S)N)r4rjrQro)rVrurrr �__add__<s z_BaseAddress.__add__cCs t|t�stS|jt|�|�S)N)r4rjrQro)rVrurrr �__sub__As z_BaseAddress.__sub__cCsd|jjt|�fS)Nz%s(%r))rorr )rVrrr �__repr__Fsz_BaseAddress.__repr__cCst|j|j��S)N)r �_string_from_ip_intr()rVrrr �__str__Isz_BaseAddress.__str__cCsttt|j���S)N)�hash�hexrjr()rVrrr �__hash__Lsz_BaseAddress.__hash__cCs |j|fS)N)rG)rVrrr rPOsz_BaseAddress._get_address_keycCs|j|jffS)N)ror()rVrrr rpRsz_BaseAddress.__reduce__N)rrrrqrtrvrwrxryrzr|rrPrprrrr r5s  r5c@sDeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z edd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zd'd(�Zd)d*�Zd+d,�ZdAd/d0�ZdBd1d2�Zed3d4��Zed5d6��Zed7d8��Zed9d:��Zed;d<��Z ed=d>��Z!ed?d@��Z"d.S)CrNcCs i|_dS)N)�_cache)rVrrrr �__init___sz_BaseNetwork.__init__cCsd|jjt|�fS)Nz%s(%r))rorr )rVrrr rzbsz_BaseNetwork.__repr__cCsd|j|jfS)Nz%s/%d)rJra)rVrrr r|esz_BaseNetwork.__str__ccs<t|j�}t|j�}x"t|d|�D]}|j|�Vq$WdS)Nr%)rjrJrC�range�_address_class)rV�network� broadcast�xrrr �hostshs  z_BaseNetwork.hostsccs<t|j�}t|j�}x"t||d�D]}|j|�Vq$WdS)Nr%)rjrJrCr�r�)rVr�r�r�rrr �__iter__ts  z_BaseNetwork.__iter__cCslt|j�}t|j�}|dkr>|||kr0td��|j||�S|d7}|||krZtd��|j||�SdS)Nrzaddress out of ranger%)rjrJrC� IndexErrorr�)rV�nr�r�rrr � __getitem__zs    z_BaseNetwork.__getitem__cCs^t|t�stS|j|jkr*td||f��|j|jkrB|j|jkS|j|jkrZ|j|jkSdS)Nz%%s and %s are not of the same versionF)r4rNrQrGr6rJ�netmask)rVrurrr rw�s       z_BaseNetwork.__lt__c CsFy,|j|jko,|j|jko,t|j�t|j�kStk r@tSXdS)N)rGrJrjr�rIrQ)rVrurrr rv�s   z_BaseNetwork.__eq__cCstt|j�t|j�A�S)N)r}rjrJr�)rVrrr r�sz_BaseNetwork.__hash__cCsL|j|jkrdSt|t�rdSt|j�t|j�koBt|j�kSSdS)NF)rGr4rNrjrJr(rC)rVrurrr � __contains__�s   z_BaseNetwork.__contains__cCs(|j|kp&|j|kp&|j|kp&|j|kS)N)rJrC)rVrurrr �overlaps�s   z_BaseNetwork.overlapscCs<|jjd�}|dkr8|jt|j�t|j�B�}||jd<|S)NrC)r�r?r�rjrJ�hostmask)rVr�rrr rC�s    z_BaseNetwork.broadcast_addresscCs8|jjd�}|dkr4|jt|j�|jA�}||jd<|S)Nr�)r�r?r�rjr�r9)rVr�rrr r��s   z_BaseNetwork.hostmaskcCsd|j|jfS)Nz%s/%d)rJrH)rVrrr �with_prefixlen�sz_BaseNetwork.with_prefixlencCsd|j|jfS)Nz%s/%s)rJr�)rVrrr � with_netmask�sz_BaseNetwork.with_netmaskcCsd|j|jfS)Nz%s/%s)rJr�)rVrrr � with_hostmask�sz_BaseNetwork.with_hostmaskcCst|j�t|j�dS)Nr%)rjrCrJ)rVrrr � num_addresses�sz_BaseNetwork.num_addressescCsdt|�f}t|��dS)Nz%%200s has no associated address class)r[r\)rVr]rrr r��sz_BaseNetwork._address_classcCs|jS)N)rH)rVrrr ra�sz_BaseNetwork.prefixlenccsD|j|jkstd||f��t|t�s2td|��|j|jkoH|j|jksZtd||f��||krfdS|jd|j|jf�}|j �\}}x�||ko�||k�r|j|jkr�|j|jkr�|V|j �\}}q�|j|jkr�|j|jkr�|V|j �\}}q�t d|||f��q�W||k�r|Vn$||k�r.|Vnt d|||f��dS)Nz%%s and %s are not of the same versionz%s is not a network objectz%s not contained in %sz%s/%sz3Error performing exclusion: s1: %s s2: %s other: %s) rGr6r4rNrJrCr rorarD�AssertionError)rVru�s1�s2rrr �address_exclude�s<$               z_BaseNetwork.address_excludecCs`|j|jkrtd||f��|j|jkr,dS|j|jkr<dS|j|jkrLdS|j|jkr\dSdS)Nz"%s and %s are not of the same typer%rrFrF)rGr6rJr�)rVrurrr �compare_networks.s!      z_BaseNetwork.compare_networkscCs|j|j|jfS)N)rGrJr�)rVrrr rO^sz_BaseNetwork._get_networks_keyr%Nc cs�|j|jkr|VdS|dk rJ||jkr0td��|dkr@td��||j}|dkrZtd��|j|}||jkr~td||f��t|j�}t|j�d}t|j�d|?}x(t|||�D]}|j||f�}|Vq�WdS)Nznew prefix must be longerr%z(cannot set prefixlen_diff and new_prefixrzprefix length diff must be > 0z0prefix length diff %d is invalid for netblock %s) rHr8r rjrJrCr�r�ro) rV�prefixlen_diff� new_prefix� new_prefixlen�start�end�stepZnew_addrZcurrentrrr rDhs,       z_BaseNetwork.subnetscCs�|jdkr|S|dk rB||jkr(td��|dkr8td��|j|}|j|}|dkrftd|j|f��|jt|j�t|j�|>@|f�S)Nrznew prefix must be shorterr%z(cannot set prefixlen_diff and new_prefixz;current prefixlen is %d, cannot have a prefixlen_diff of %d)rHr rarorjrJr�)rVr�r�r�rrr r>�s     z_BaseNetwork.supernetcCs|jjo|jjS)N)rJ� is_multicastrC)rVrrr r��s z_BaseNetwork.is_multicastcCs|jjo|jjS)N)rJ� is_reservedrC)rVrrr r��s z_BaseNetwork.is_reservedcCs|jjo|jjS)N)rJ� is_link_localrC)rVrrr r��sz_BaseNetwork.is_link_localcCs|jjo|jjS)N)rJ� is_privaterC)rVrrr r��s z_BaseNetwork.is_privatecCs|j S)N)r�)rVrrr � is_global�s z_BaseNetwork.is_globalcCs|jjo|jjS)N)rJ�is_unspecifiedrC)rVrrr r�s z_BaseNetwork.is_unspecifiedcCs|jjo|jjS)N)rJ� is_loopbackrC)rVrrr r� s z_BaseNetwork.is_loopback)r%N)r%N)#rrrr�rzr|r�r�r�rwrvrr�r�rrrCr�r�r�r�r�r�rar�r�rOrDr>r�r�r�r�r�r�r�rrrr rNVs>            N0 5 ) rNc @s�eZdZfZdZdedZed�Zeddddd d d d d h �Z eZ iZ dd�Z e dd��Ze dd��Ze dd��Ze dd��Zdd�Zdd�Zdd�Zedd��Zed d!��Zd"S)#rgrrr%� 0123456789���������rrcCst|�S)N)r )rVrrr rU0sz$_BaseV4._explode_shorthand_ip_stringc Csn||jkrdt|t�r|}n.y|j|�}Wntk rF|j|�}YnXt|j|��}||f|j|<|j|S)N)�_netmask_cacher4rjrkr rnr rb)r`�argrar�rrr � _make_netmask3s  z_BaseV4._make_netmaskcCs||s td��|jd�}t|�dkr.td|��ytjt|j|�d�Stk rv}ztd||f�d�WYdd}~XnXdS)NzAddress cannot be empty�.rzExpected 4 octets in %rrz%s in %r)rr!r"rj� from_bytes�map� _parse_octetr )r`rmZoctets�excrrr rlKs   z_BaseV4._ip_int_from_stringcCs�|s td��|jj|�s(d}t||��t|�dkrDd}t||��t|d�}|dkrr|ddkrrd }t||��|d kr�td |��|S) NzEmpty octet not permittedz#Only decimal digits permitted in %r�z$At most 3 characters permitted in %r� �r�0z3Ambiguous (octal/decimal) value in %r not permittedr�zOctet %d (> 255) not permitted)r rhrir"rj)r`Z octet_strr]Z octet_intrrr r�es       z_BaseV4._parse_octetcCsdjtt|jdd���S)Nr�rr)�joinr�r r)r`rdrrr r{�s z_BaseV4._string_from_ip_intcCs�|jd�}t|�dkr�y$x|D]}t|�|jkrdSqWWntk rNdSXx0t|�D]$\}}|dkrZ|||dkrZdSqZWdSy t|�}Wntk r�dSXd|ko�|jkSS)Nr�rFrr%T)r!r"rj�_valid_mask_octetsr � enumerater8)rVr��maskr��idx�yrrr �_is_valid_netmask�s"     z_BaseV4._is_valid_netmaskc sh|jd�}y�fdd�tt|�D�}Wntk r:dSXt|�t|�krPdS|d|dkrddSdS) Nr�csg|]}|�jkr|�qSr)r�)�.0r�)rVrr � <listcomp>�sz(_BaseV4._is_hostmask.<locals>.<listcomp>Frr%TrF)r!r�rjr r")rVrmr1�partsr)rVr � _is_hostmask�s z_BaseV4._is_hostmaskcCs&t|�jd�ddd�}dj|�dS)Nr�r%z .in-addr.arparF)r r!r�)rVZreverse_octetsrrr rY�sz_BaseV4._reverse_pointercCs|jS)N)r8)rVrrr � max_prefixlen�sz_BaseV4.max_prefixlencCs|jS)N)rG)rVrrr r7�sz_BaseV4.versionN)rrrrqrG� IPV4LENGTHr9� frozensetrhr�r8r�rUrsr�rlr�r{r�r�rYrrr�r7rrrr rgs"     %  rgc@s�eZdZdZdd�Zedd��Zedd��Zeej �d d ���Z eej �d d ���Z ed d��Z edd��Z edd��Zedd��ZdS)r r(� __weakref__cCsrt|t�r|j|�||_dSt|t�rF|j|d�tj|d�|_dSt|�}d|krbtd|��|j |�|_dS)NrrrzUnexpected '/' in %r) r4rjr^r(�bytesr_r�r rrl)rVr�addr_strrrr r��s     zIPv4Address.__init__cCs t|j�S)N)rr()rVrrr �packedszIPv4Address.packedcCs ||jjkS)N)� _constants�_reserved_network)rVrrr r� s zIPv4Address.is_reservedcst�fdd��jjD��S)Nc3s|]}�|kVqdS)Nr)r�r:)rVrr � <genexpr> sz)IPv4Address.is_private.<locals>.<genexpr>)�anyr��_private_networks)rVr)rVr r�s zIPv4Address.is_privatecCs||jjko|j S)N)r��_public_networkr�)rVrrr r�"szIPv4Address.is_globalcCs ||jjkS)N)r��_multicast_network)rVrrr r�'s zIPv4Address.is_multicastcCs ||jjkS)N)r��_unspecified_address)rVrrr r�2s zIPv4Address.is_unspecifiedcCs ||jjkS)N)r��_loopback_network)rVrrr r�=szIPv4Address.is_loopbackcCs ||jjkS)N)r��_linklocal_network)rVrrr r�GszIPv4Address.is_link_localN)r(r�)rrrrqr�rrr�r�� functools� lru_cacher�r�r�r�r�r�rrrr r �s#    r c@sjeZdZdd�Zdd�Zdd�Zdd�Zd d �Zej Z e d d ��Z e d d��Z e dd��Z e dd��ZdS)rcCs�t|ttf�r2tj||�t|j�|_|j|_ dSt|t �r�tj||d�t |�dkrht|d�|_ n|j|_ t|dd�|_|jj |_ |jj |_ dSt|�}tj||d�t|dd�|_|jj |_ |jj |_ |jj |_ dS)Nrr%F)r)r4r�rjr r�rr(r�r8rH�tupler"r�r�r$)rVrr#rrr r�Ts(        zIPv4Interface.__init__cCsd|j|j�|jjfS)Nz%s/%d)r{r(r�ra)rVrrr r|ps zIPv4Interface.__str__c CsDtj||�}| s|tkr|Sy |j|jkStk r>dSXdS)NF)r rvrQr�rI)rVru� address_equalrrr rvts  zIPv4Interface.__eq__c CsNtj||�}|tkrtSy|j|jkp4|j|jko4|Stk rHdSXdS)NF)r rwrQr�rI)rVru� address_lessrrr rw�s  zIPv4Interface.__lt__cCst|j|jt|jj�f�S)N)r}r(rHrjr�rJ)rVrrr r�szIPv4Interface.__hash__cCs t|j�S)N)r r()rVrrr r-�szIPv4Interface.ipcCsd|j|j�|jfS)Nz%s/%s)r{r(rH)rVrrr r��s zIPv4Interface.with_prefixlencCsd|j|j�|jfS)Nz%s/%s)r{r(r�)rVrrr r��s zIPv4Interface.with_netmaskcCsd|j|j�|jfS)Nz%s/%s)r{r(r�)rVrrr r��s zIPv4Interface.with_hostmaskN)rrrr�r|rvrwrrTrprrr-r�r�r�rrrr rRs     rc@s.eZdZeZddd�Zeej�dd���Z dS)rTcCs�tj||�t|ttf�r&|}|j}n^t|t�rT|d}t|�dkrL|dn|j}n0t|�}|j |d�}t|�dkr~|dn|j}t |�|_ |j |�\|_ |_t|j �}|t|j �@|kr�|r�td|��nt |t|j �@�|_ |j|jdkr�|j|_dS)Nrr%rz%s has host bits set)rNr�r4rjr�r8r�r"r$rlr rJr�r�rHr r�r�)rVrrr#r��argsr�rrr r��s(%    zIPv4Network.__init__cCs&|jtd�ko|jtd�k o$|j S)Nz 100.64.0.0/10)rJrrCr�)rVrrr r��s zIPv4Network.is_globalN)T) rrrr r�r�rrr�r�r�rrrr r�s  Crc@s�eZdZed�Zed�Zed�Zed�Zed�ed�ed�ed�ed�ed�ed �ed �ed �ed �ed �ed�ed�ed�gZed�Z e d�Z dS)�_IPv4Constantsz169.254.0.0/16z 127.0.0.0/8z 224.0.0.0/4z 100.64.0.0/10z 0.0.0.0/8z 10.0.0.0/8z 172.16.0.0/12z 192.0.0.0/29z192.0.0.170/31z 192.0.2.0/24z192.168.0.0/16z 198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z 240.0.0.0/4z255.255.255.255/32z0.0.0.0N) rrrrr�r�r�r�r�r�r r�rrrr r�s( r�c@s�eZdZfZdZdedZdZed�Z eZ iZ e dd��Z e dd ��Ze d d ��Ze d d ��Ze ddd��Zdd�Zdd�Zedd��Zedd��ZdS)�_BaseV6r3rr%rcZ0123456789ABCDEFabcdefcCsJ||jkr@t|t�r|}n |j|�}t|j|��}||f|j|<|j|S)N)r�r4rjrkr rb)r`r�rar�rrr r�<s   z_BaseV6._make_netmaskcCs�|s td��|jd�}d}t|�|kr:d||f}t|��d|dkr�yt|j��j}Wn4tk r�}ztd||f�d�WYdd}~XnX|jd|d ?d @�|jd|d @�|jd}t|�|kr�d |d|f}t|��d}xDtdt|�d�D].} || �s�|dk �r$d |}t|��| }�q�W|dk �r�|} t|�|d} |d �st| d8} | �rtd}t||��|d�s�| d8} | �r�d}t||��|j| | } | dk�r:d}t||jd|f��njt|�|jk�r�d}t||j|f��|d �sd}t||��|d�s*d}t||��t|�} d } d } ytd } x,t| �D] } | d K} | |j || �O} �qJW| d | K} x0t| d �D] } | d K} | |j || �O} �q�W| St k �r�}ztd||f�d�WYdd}~XnXdS)NzAddress cannot be empty�:r�z At least %d parts expected in %rr�r%z%s in %rz%xri��z!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %rrFrFrF) rr!r"r r=r(r@� _HEXTET_COUNTr�� _parse_hextetr )r`rmr�Z _min_partsr]Zipv4_intr�Z _max_partsZ skip_index�iZparts_hiZparts_loZ parts_skippedrdrrr rlNs�    $                z_BaseV6._ip_int_from_stringcCs>|jj|�std|��t|�dkr4d}t||��t|d�S)NzOnly hex digits permitted in %rrz$At most 4 characters permitted in %rr)� _HEX_DIGITSrir r"rj)r`Z hextet_strr]rrr r��s     z_BaseV6._parse_hextetc Cs�d}d}d}d}xJt|�D]>\}}|dkrP|d7}|dkr>|}||krX|}|}qd}d}qW|dkr�||}|t|�kr�|dg7}dg|||�<|dkr�dg|}|S) Nr%rr��rFrFrFrF)r�r") r`�hextetsZbest_doublecolon_startZbest_doublecolon_lenZdoublecolon_startZdoublecolon_len�indexZhextetZbest_doublecolon_endrrr �_compress_hextets�s.   z_BaseV6._compress_hextetsNcsZ|dkrt|j�}||jkr$td��d|��fdd�tddd�D�}|j|�}dj|�S) NzIPv6 address is too largez%032xcs&g|]}dt�||d�d��qS)z%xrr)rj)r�r�)�hex_strrr r�sz/_BaseV6._string_from_ip_int.<locals>.<listcomp>rrrr�)rjr(r9r r�r�r�)r`rdr�r)r�r r{s   z_BaseV6._string_from_ip_intcs�t|t�rt|j�}nt|t�r,t|j�}nt|�}|j|�}d|��fdd�tddd�D�}t|ttf�r�ddj |�|j fSdj |�S) Nz%032xcsg|]}�||d��qS)rr)r�r�)r�rr r�-sz8_BaseV6._explode_shorthand_ip_string.<locals>.<listcomp>rrrz%s/%dr�) r4rr rJrr-rlr�rNr�rH)rVrmrdr�r)r�r rUs     z$_BaseV6._explode_shorthand_ip_stringcCs&|jddd�jdd�}dj|�dS)Nr%r�r�r�z .ip6.arparF)rW�replacer�)rVZ reverse_charsrrr rY2sz_BaseV6._reverse_pointercCs|jS)N)r8)rVrrr r�;sz_BaseV6.max_prefixlencCs|jS)N)rG)rVrrr r7?sz_BaseV6.version)N)rrrrqrG� IPV6LENGTHr9r�r�r�r8r�rsr�rlr�r�r{rUrYrrr�r7rrrr r�(s"    h  0  r�c@s�eZdZdZdd�Zedd��Zedd��Zed d ��Zed d ��Z ed d��Z ee j �dd���Z edd��Zedd��Zedd��Zedd��Zedd��Zedd��ZdS)r r(r�cCsrt|t�r|j|�||_dSt|t�rF|j|d�tj|d�|_dSt|�}d|krbtd|��|j |�|_dS)NrrrzUnexpected '/' in %r) r4rjr^r(r�r_r�r rrl)rVrr�rrr r�Js     zIPv6Address.__init__cCs t|j�S)N)rr()rVrrr r�nszIPv6Address.packedcCs ||jjkS)N)r�r�)rVrrr r�ss zIPv6Address.is_multicastcst�fdd��jjD��S)Nc3s|]}�|kVqdS)Nr)r�r�)rVrr r��sz*IPv6Address.is_reserved.<locals>.<genexpr>)r�r��_reserved_networks)rVr)rVr r�~s zIPv6Address.is_reservedcCs ||jjkS)N)r�r�)rVrrr r��szIPv6Address.is_link_localcCs ||jjkS)N)r��_sitelocal_network)rVrrr � is_site_local�s zIPv6Address.is_site_localcst�fdd��jjD��S)Nc3s|]}�|kVqdS)Nr)r�r:)rVrr r��sz)IPv6Address.is_private.<locals>.<genexpr>)r�r�r�)rVr)rVr r��s zIPv6Address.is_privatecCs|j S)N)r�)rVrrr r��s zIPv6Address.is_globalcCs |jdkS)Nr)r()rVrrr r��s zIPv6Address.is_unspecifiedcCs |jdkS)Nr%)r()rVrrr r��s zIPv6Address.is_loopbackcCs |jd?dkrdSt|jd@�S)Nri��l��)r(r )rVrrr � ipv4_mapped�s zIPv6Address.ipv4_mappedcCs4|jd?dkrdSt|jd?d@�t|jd@�fS)N�`i �@l��)r(r )rVrrr �teredo�s zIPv6Address.teredocCs$|jd?dkrdSt|jd?d@�S)N�pi �Pl��)r(r )rVrrr � sixtofour�s zIPv6Address.sixtofourN)r(r�)rrrrqr�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r Ds$   r c@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zej Z e d d ��Z e d d��Z e dd��Z e dd��Ze dd��Ze dd��ZdS)rcCs�t|ttf�r2tj||�t|j�|_|j|_ dSt|t �r�tj||d�t |�dkrht|d�|_ n|j|_ t|dd�|_|jj |_ |jj |_ dSt|�}tj||d�t|dd�|_|jj |_ |jj |_ |jj |_ dS)Nrr%F)r)r4r�rjr r�rr(r�r8rHr�r"r�r�r$)rVrr#rrr r��s(        zIPv6Interface.__init__cCsd|j|j�|jjfS)Nz%s/%d)r{r(r�ra)rVrrr r|s zIPv6Interface.__str__c CsDtj||�}| s|tkr|Sy |j|jkStk r>dSXdS)NF)r rvrQr�rI)rVrur�rrr rvs  zIPv6Interface.__eq__c CsNtj||�}|tkrtSy|j|jkp4|j|jko4|Stk rHdSXdS)NF)r rwrQr�rI)rVrur�rrr rw"s  zIPv6Interface.__lt__cCst|j|jt|jj�f�S)N)r}r(rHrjr�rJ)rVrrr r.szIPv6Interface.__hash__cCs t|j�S)N)r r()rVrrr r-3szIPv6Interface.ipcCsd|j|j�|jfS)Nz%s/%s)r{r(rH)rVrrr r�7s zIPv6Interface.with_prefixlencCsd|j|j�|jfS)Nz%s/%s)r{r(r�)rVrrr r�<s zIPv6Interface.with_netmaskcCsd|j|j�|jfS)Nz%s/%s)r{r(r�)rVrrr r�As zIPv6Interface.with_hostmaskcCs|jdko|jjS)Nr)r(r�r�)rVrrr r�FszIPv6Interface.is_unspecifiedcCs|jdko|jjS)Nr%)r(r�r�)rVrrr r�JszIPv6Interface.is_loopbackN)rrrr�r|rvrwrrTrprrr-r�r�r�r�r�rrrr r�s       rc@s.eZdZeZd dd�Zdd�Zedd��ZdS) rTcCs�tj||�t|ttf�r&|}|j}n^t|t�rT|d}t|�dkrL|dn|j}n0t|�}|j |d�}t|�dkr~|dn|j}t |�|_ |j |�\|_ |_t|j �}|t|j �@|kr�|r�td|��nt |t|j �@�|_ |j|jdkr�|j|_dS)Nrr%rz%s has host bits set)rNr�r4rjr�r8r�r"r$rlr rJr�r�rHr r�r�)rVrrr#r�r�r�rrr r�_s(    zIPv6Network.__init__ccs@t|j�}t|j�}x&t|d|d�D]}|j|�Vq(WdS)Nr%)rjrJrCr�r�)rVr�r�r�rrr r��s  zIPv6Network.hostscCs|jjo|jjS)N)rJr�rC)rVrrr r��s zIPv6Network.is_site_localN)T) rrrr r�r�r�rrr�rrrr rOs > rc@s�eZdZed�Zed�Zed�ed�ed�ed�ed�ed�ed �ed �ed �ed�g Zed �ed �ed�ed�ed�ed�ed�ed�ed�ed�ed�ed�ed�ed�ed�gZed�ZdS)�_IPv6Constantsz fe80::/10zff00::/8z::1/128z::/128z ::ffff:0:0/96z100::/64z 2001::/23z 2001:2::/48z 2001:db8::/32z 2001:10::/28zfc00::/7z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z fec0::/10N) rrrrr�r�r�r�r�rrrr r��s*         r�)T)"� __version__r�r�r�r rr rrrrrr$r.r2r;rErMrSrT�total_orderingr5rNrgr rrr�r�r�r rrr�rrrr �<module> sT #716:EEuSa5Wj!