ÿØÿà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Áß_ÿÙ ]c@sTddlZddlmZddlmZmZddlmZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%dS(#iN(t_utils(t FormatErrortValidationError(t iteritemsc cs|j|dsdSxzt|D]l\}}x]t|D]O\}}tj||r<x.|j||d|d|D] }|VqyWq<q<Wq#WdS(Ntobjecttpatht schema_path(tis_typeRtretsearchtdescend( t validatortpatternPropertiestinstancetschematpatternt subschematktvterror((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyR s c cs:|j|dsdSttj||}|j|drx|D]2}x)|j|||d|D] }|VqjWqGWn| r6|r6d|krt|d}t|dkrd}nd}ddjtt t||djtt |f}t |Vq6d }t |tj |VndS( NRRR itdoestdos&%s %s not match any of the regexes: %ss, s8Additional properties are not allowed (%s %s unexpected)( RtsetRtfind_additional_propertiesR tsortedtlentjointmaptreprRt extras_msg( R taPR RtextrastextraRtpatternstverb((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytadditionalPropertiess( #   ccs|j|dsdS|j|drpxt|D]4\}}x%|j||d|D] }|VqZWq5WnZxWtt||D]@\\}}}x+|j||d|d|D] }|VqWqWdS(NtarrayRRR(Rt enumerateR tzip(R titemsR RtindextitemRR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyR'1s( ccs|j|d s1|j|jdidr5dSt|jdg}|j|drxt||d|D]4\}}x%|j||d|D] }|VqWqvWnb| rt|t|jdgkrd}t|tj|t|jdgVndS(NR$R'RtstartRs3Additional items are not allowed (%s %s unexpected)(RtgetRR%R RRR(R taIR Rt len_itemsR(R)R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytadditionalItemsAs#+ccst|j|dsdS|jdtr=||k}d}n||k}d}|rptd|||fVndS(NtnumbertexclusiveMinimumsless than or equal tos less thans%r is %s the minimum of %r(RR+tFalseR(R tminimumR Rtfailedtcmp((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyR2Us   ccst|j|dsdS|jdtr=||k}d}n||k}d}|rptd|||fVndS(NR/texclusiveMaximumsgreater than or equal tos greater thans%r is %s the maximum of %r(RR+R1R(R tmaximumR RR3R4((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyR6fs   ccsp|j|dsdSt|trD||}t||k}n ||}|rltd||fVndS(NR/s%r is not a multiple of %r(Rt isinstancetfloattintR(R tdBR RtquotientR3((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt multipleOfws  ccs=|j|dr9t||kr9td|fVndS(NR$s%r is too short(RRR(R tmIR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytminItemss$ccs=|j|dr9t||kr9td|fVndS(NR$s%r is too long(RRR(R R=R R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytmaxItemss$ccsA|r=|j|dr=tj| r=td|fVndS(NR$s%r has non-unique elements(RRtuniqR(R tuIR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt uniqueItemssccsA|j|dr=tj|| r=td||fVndS(Ntstrings%r does not match %r(RRR R(R tpatrnR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyRsccsZ|jdk rVy|jj||WqVtk rR}t|jd|jVqVXndS(Ntcause(tformat_checkertNonetcheckRRtmessageRE(R tformatR RR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyRJs ccs=|j|dr9t||kr9td|fVndS(NRCs%r is too short(RRR(R tmLR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt minLengths$ccs=|j|dr9t||kr9td|fVndS(NRCs%r is too long(RRR(R RKR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt maxLengths$ccs|j|dsdSxt|D]\}}||krAq#n|j|dr~xl|j||d|D] }|VqlWq#tj|}x2|D]*}||krtd||fVqqWq#WdS(NRRs%r is a dependency of %r(RRR Rt ensure_listR(R t dependenciesR Rtpropertyt dependencyR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyROs     ccs(||kr$td||fVndS(Ns%r is not one of %r(R(R tenumsR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytenums ccst|jdd}|dkra|jj|)}x|j||D] }|VqIWWdQXn_|jj|\}}|jj|z&x|j||D] }|VqWWd|jjXdS(Ntresolve(tgetattrtresolverRGt resolvingR RTt push_scopet pop_scope(R trefR RRTtresolvedRtscope((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyRZs  ccstj|}g}xt|D]|\}}|dkr>dS|j|drt|j||d|}|sxdS|j|q"|j||r"dSq"Wttj||d|VdS(NtanyRRtcontext( RRNR%RtlistR textendRt types_msg(R ttypesR Rt all_errorsR(ttypeterrors((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt type_draft3s c cs|j|dsdSxt|D]\}}||krpx|j|||d|d|D] }|Vq^Wq#|jdtr#td|}|jddd|dd|d ||jj||j j |dg|Vq#q#WdS( NRRRtrequireds%r is a required propertyR tvalidator_valueR R( RRR R+R1Rt_setRt appendleftRR`(R t propertiesR RRPRR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytproperties_draft3s(      ccsRxKtj|D]:}|j|i|gd6rtd||fVqqWdS(NRds%r is disallowed for %r(RRNtis_validR(R tdisallowR Rt disallowed((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytdisallow_draft3 sccs|j|dr8x|j||D] }|Vq%WdSxBt|D]4\}}x%|j||d|D] }|VqjWqEWdS(NRR(RR R%(R textendsR RRR(R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytextends_draft3s c#sLtj|}tfd|DsHttj|VndS(Nc3s!|]}j|VqdS(N(R(t.0Rd(R R (sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pys "s(RRNR]RRa(R RbR R((R R sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt type_draft4sccsx|j|dsdSx[t|D]M\}}||kr#x2|j|||d|d|D] }|Vq^Wq#q#WdS(NRRR(RRR (R RkR RRPRR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytproperties_draft4&s   ccsI|j|dsdSx,|D]$}||krtd|VqqWdS(NRs%r is a required property(RR(R RgR RRP((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytrequired_draft45s   ccs=|j|dr9t||kr9td|fVndS(NRs"%r does not have enough properties(RRR(R tmPR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytminProperties_draft4=s$ccsS|j|dsdS|j|drOt||krOtd|fVndS(NRs%r has too many properties(RRR(R RwR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytmaxProperties_draft4Ds$ccsIxBt|D]4\}}x%|j||d|D] }|Vq2Wq WdS(NR(R%R (R tallOfR RR(RR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt allOf_draft4Ksccst|}g}xg|D]G\}}t|j||d|}|sS|} Pn|j|qWtd|fd|Vg|D]$\} } |j|| r| ^q} | r| j| djd| D} td|| fVndS(NRs.%r is not valid under any of the given schemasR^s, css|]}t|VqdS(N(R(RsR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pys css%r is valid under each of %s(R%R_R R`RRmtappendR(R toneOfR Rt subschemasRcR(Rterrst first_validtitst more_validtreprs((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt oneOf_draft4Qs"  1 ccstg}xgt|D]A\}}t|j||d|}|sGPn|j|qWtd|fd|VdS(NRs.%r is not valid under any of the given schemasR^(R%R_R R`R(R tanyOfR RRcR(RR((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt anyOf_draft4is ccs.|j||r*td||fVndS(Ns%r is not allowed for %r(RmR(R t not_schemaR R((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pyt not_draft4ws(&Rt jsonschemaRtjsonschema.exceptionsRRtjsonschema.compatRR R#R'R.R2R6R<R>R?RBRRJRLRMRORSRZRfRlRpRrRtRuRvRxRyR{RRR(((sG/opt/alt/python27/lib/python2.7/site-packages/jsonschema/_validators.pytsB