mō fDc@sŲdkZdkZdkZdkZdkZdkZdkZdkZdZdZ dZ d„Z d„Z d„Z d„Zd„Zd„Zd„Zd „Zd „ZhZdad d „Zd „Zd„ZdS(NicCsti|ddƒdS(NtERRORt Configuration(tParamst niceprinttmsg(R((t'/home/samy/kbilliards/wafadmin/Utils.pyterror scCslt|dƒ}tiƒ}d}x4|o,|i|ƒ}|i |ƒt |ƒ}q$W|i ƒ|i ƒS(Ntrbi( tfiletfilenametftmd5tnewtmt readBytestreadt readStringtupdatetlentcloset hexdigest(R R R RR((Rt h_md5_files   cCs#tiƒ}|i|ƒ|iƒS(N(R R R RtstrR(RR ((Rt h_md5_strs  cCs:tiƒ}x!|D]}|it|ƒƒqW|iƒS(N(R R R tlsttelRRR(RRR ((Rt h_md5_lsts  cCs/t|dƒ}|iƒiƒ}|iƒ|S(NR(RR R Rt__hash__tsR(R RR ((Rt h_simple_file&s cCs |iƒS(N(RR(R((Rt h_simple_str-scCs!td„dg|ƒ}|dS(NcCs|iƒ|iƒAS(N(taRtb(RR ((Rt1sti(treduceRtval(RR$((Rt h_simple_lst0scCsdk}d|_dS(N(RtNonetg_build(R((Rtreset4s cKsdS(N((tkwargs((Rtoptions8stwscriptcBsy e|SWnnXei|ƒ}ye|dƒ}|iƒ}Wne i d|ƒnX||i U|o|i ƒn|e|<|S(Ntrs The file %s could not be opened!(tg_loaded_modulest file_pathtimpt new_moduletnametmoduletopenRRtcodeRtfatalt__dict__R(R.R1R4R2R((Rt load_moduleAs   cCst|dƒadS(Nt wscript_main(R7R.tg_module(R.((Rtset_main_moduleTscCspdk}t|dƒ}d}d}ti||||ƒ}z|i i |i ƒWd|o|i ƒnXdS(NR,R+R"tUi(R"R;i( tOptionsR3R.RR1tdescR/R7R2tg_custom_optionstappendt set_optionsR(R.R1R2R<RR=((Rt fetch_options\s (tosR ttypestsyststringtstatR/Rtg_tracetg_debugtg_errorRRRRRRR%R(R*R-R&R9R7R:RA(RGRIRRRR7R/RARRFRERRRDRCR R(R:R-R%RHRRBR*((Rt?s$?