Xׯd`ddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z m Z ddlmZdZdZdZdZGd d ZGd d eZGd deZdZdS)N)Version) log_debug3 log_debug2 log_error log_warning) to_unicodect|tj|}|d|dS)NTable Data Import) PowerImportmformsForm main_form set_titlerun)editor selectionimporters +..\modules\sqlide_power_import_export_be.pyshowPowerImportr(sG66;#8#8#:#:IFFH *+++ LLNNNNNct|tj}|||d|dS)NTable Data Export) PowerExportr rr set_sourcerr)rrexporters rshowPowerExportr-sY66;#8#8#:#:;;H  """ *+++ LLNNNNNrctj|d}|d}d|D]^}|jdkrt|jddn9|jdkr+t|jt|jdndSrʼndrDtjd}||ffd |d |tjd }||ffd |d ||dtjdtj dSdS)Nmenurz db.Schema)schematablezdb.Table)r!r r!rc$t|SN)rsenderuser_selections rz#handleContextMenu..Hs_VUc=d=drr c$t|Sr#)rr$s rr'z#handleContextMenu..LsQ_9`9`rr ) r fromgrttypername schemaName newMenuItemadd_clicked_callback insert_itemSeparatorMenuItem)r.r%argsrrsitemr&s @rhandleContextMenur73s} >$v, ' 'D[!IN  6[ (216(:(:TJJN E Vz ! !'1!&'9'9ZPQP\E]E]^^N E FF N ' " &%&9::D  % %F&d&d&d&d&d e e e   Q % % %!"566 !!"`"`"`"`"`aaa D!!! F.r63KLLMMMMM N NrceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dS) base_modulecd|_|j|_i|_d|_d|_d|_g|_d|_d|_d|_ ||_ tj |j |_d|_g|_d|_d|_||_d|_d|_d|_d|_d|_d|_d|_d|_d|_dd d d d d d|_d|_d|_d|_ i|_!dS)Nr FTr,%Y-%m-%d %H:%M:%Sutf-8 is_string is_bignumber is_geometry is_numberis_floatis_json)textbigintgeometryintdoublejson)"r.titleoptions_offset_limit_table_w_prefix_columns _filepath _extension _allow_remote_editorrr, serverVersion_targetVersion_local_mapping _new_table _last_analyze _is_import _current_row _max_rows _thread_event _user_query_decimal_separator _date_format _encoding_force_drop_table_truncate_table _type_map is_running progress_info item_count _columnNamesselfr is_imports r__init__zbase_module.__init__Rs Y    # " %of.BCC  "#!"%/ !&$!,TajuAKU^__!rci|_dSr#rhrjs rreset_column_fixzbase_module.reset_column_fixssrc|}||jvr(d||j|fz}|j|xxdz cc<n d|j|<|S)Nz%s_[%d]rrn)rjr.bnames rfix_column_duplicationz"base_module.fix_column_duplicationvs` D% % %d&7&>??D  e $ $ $ ) $ $ $ $'(D e $ rc|d}|}t|dkrd}||S)Nr rMyUnknownColumn)striplenrt)rjr.s rfix_column_namezbase_module.fix_column_namesA <Dzz|| t99>>$D**4000rcd}d}d}d}|D]R}||rdS||r#|s t|}|dks|dkrd}nd}>||r|d vrd }Pd }|S) NcDt|ttfvrdndSNTF)r-dictlistvs rrCz'base_module.guess_type..is_jsons 77tTl2244 =rct|dr|d}t|} dt|z|krdSdS#YdSxYwNencodeutf8z%sTF)hasattrrstrfloatrs rrBz(base_module.guess_type..is_floatsdq(## %HHV$$AA %((?a''4u uu AAct|dr|d}t|} dt|z|krdSdS#YdSxYwr)rrrrGrs ris_intz&base_module.guess_type..is_intsdq(## %HHV$$AA #a&&=A%%4u uurrIiirErG)NrGrHrD)rG)rjvalsrCrBrcur_typervals r guess_typezbase_module.guess_types > > >        Awqzz vvvayy )a&&CZ''3+<+<#+#(x{{ },,'HH rcD|jr|||dSdSr#)rf)rjpctmsgs rupdate_progresszbase_module.update_progresss3   )   sC ( ( ( ( ( ) )rc||_dSr#)rb)rjforces rforce_drop_tablezbase_module.force_drop_tables!&rc||_dSr#)ra)rjencodings r set_encodingzbase_module.set_encoding !rc|jSr#)r[ros rget_current_rowzbase_module.get_current_rows   rc||_dSr#)r^)rjquerys rset_user_queryzbase_module.set_user_querys rc|jSr#)r\ros r get_max_rowzbase_module.get_max_rows ~rc||_dSr#)rX)rjcreates rcreate_new_tablezbase_module.create_new_tables  rc||_dSr#)rc)rjtruncs rtruncate_tablezbase_module.truncate_tables$rcX|rd|d|d|_dSdt|z|_dS)N`z`.``%s`)rNr)rjr r!s r set_tablezbase_module.set_tablesC  7 728&&%%%#@D #)CJJ#6D rc||_dSr#)rW)rjmappings r set_mappingzbase_module.set_mappings  rc|jSr#)rRros r allow_remotezbase_module.allow_remotes !!rc|jSr#)rQros rget_file_extensionzbase_module.get_file_extensions rc||_dSr#)rO)rjcolss r set_columnszbase_module.set_columnss  rc||_dSr#)rP)rjfilenames r set_filepathzbase_module.set_filepathrrc||_dSr#)rMrjlimits r set_limitzbase_module.set_limits  rc||_dSr#)rL)rjoffsets r set_offsetzbase_module.set_offsets  rc&|jr ||_dSdSr#)rRrV)rjlocals r set_localzbase_module.set_locals"   DKKK  rc||_dSr#)r_)rj separators rset_decimal_separatorz!base_module.set_decimal_separators"+rc||_dSr#)r`)rjformats rset_date_formatzbase_module.set_date_formats"rcg|_|jD]|jjjt fddDt fddDt fddDt fddDt fd d Dt fd d Dt fd dDt fddDdd dS)Nc3*K|] }|jvVdSr# columnType.0xcs r z6base_module.read_user_query_columns..s*#_#_!A$5#_#_#_#_#_#_r)charrDsetenumc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s*!F!F!q|"3!F!F!F!F!F!Fr)rIc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s*#R#R!A$5#R#R#R#R#R#Rr)rGintegerc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s*'N'NaQ\(9'N'N'N'N'N'Nr)rEc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..sB'y'yQqAL'8'y'y'y'y'y'yr)rFgeometrycollection linestringmultilinestring multipoint multipolygonpointpolygonc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s*)o)o!q|*;)o)o)o)o)o)or) timestamptimedatetimedatec3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s* V Vqal!2 V V V V V Vr)geoblobbinaryc3*K|] }|jvVdSr#rrs rrz6base_module.read_user_query_columns..s*"e"e1 #4"e"e"e"e"e"er)decimalrrHreal) r.r-r>rCrAr?r@is_date_or_timeis_binrBvalue)rOcolumnsappendr.rany)rjresultrs @rread_user_query_columnsz#base_module.read_user_query_columnss~  # #A M !&!, ##_#_#_#_?^#_#_#_ _ _!!F!F!F!FX!F!F!FFF ##R#R#R#R?Q#R#R#R R R$''N'N'N'N:'N'N'N$N$N#&'y'y'y'yCx'y'y'y$y$y&))o)o)o)oEn)o)o)o&o&o V V V Vd"e"e"eee  "" "" # # # # # #rc r |jd|jddd|jDdd|dd|jD] }|d |d <d S#t $r}td |zt|j d kr|j ddkrs|j rl |dd|jd|jzd| Yd}~d S#td|zxYwd}~wwxYw)Nz CREATE TABLE  (, cJg|] }|ddu d|dd|d!S)activeTrr.z` r-rcols r z1base_module.prepare_new_table.. srLrLrL^avyzBvCGKvKvKvK@CDJ@K@K@KMPQWMXMXsYvKvKvKr)rrzPrepared new tabler.dest_colTz#Error creating table for import: %sizDrop existing tablez DROP TABLE %sz#Error dropping table for import: %s) rSexecuteManagementCommandrNjoinrWr Exceptionrrxr4rbprepare_new_table)rjres rrzbase_module.prepare_new_tables  L 1 1 1QUQeQeQegkgpgprLrLeierrLrLrLhMhMhMhM3NPQ R R R  &: ; ; ;} . ."%f+J4    ;a? @ @ @16{{aAF1I$5$5$:P$5((.CDDDL99:NQUQe:eghiii**,,,44444CaGHHH  s,A4A88 D6AD1A DD--D11D6cdSNFrros r get_commandzbase_module.get_commandurcdSrrros r start_exportzbase_module.start_export!r rcdSrrros r start_importzbase_module.start_import$r rc||_ d|_|jr|}n|}d|_|S#d|_xYwr|)r]rerZr r )rjeventrets rstartzbase_module.start'sc" "DO *''))''))#DOJ #DO s ?A AN)!__name__ __module__ __qualname__rlrprtryrrrrrrrrrrrrrrrrrrrrrrrr r rrrrr9r9QsB111000f)))'''"""!!!!!!!!!%%%777    ###"""   ,,,### # # #,     rr9c,eZdZdZdZdZdZdZdS) csv_modulec d|_d|_t|||d|_|j|_ddddddd d ddd d dd dddddd ddddddddddddd d|_ddg|_d|_dS)NFcsvzField Separatorselect |;:r;)TABrrrr;) descriptionr-optsrentryzLine Separator z  )CRzCR LFLFzEnclose Strings inrD")rr-rr!z!null and NULL word as SQL keywordyn)YESNO)filedseparator lineseparator encolsestringnullwordaskeywordz$Comma Separated Values (*.csv)|*.csvT) dialect has_headerr9rlr.rJrKrQrRris rrlzcsv_module.__init__7s! T69555 Y 9JS[kotw|FIOReSeS]`ko+p+p0@_cmsz~YYJNY]"^"^0DV]`ko!p!p4W`hx{CFrGrGQT_c&d&dee B5I!rc6|jrd}|jrIdt|jz}|jr+dt|jt|jfz}ddd|jDd|jd|Sd}|jrIdt|jz}|jr+dt|jt|jfz}|j}tj d kr| d d }ddd |jDd|jd |d|j ddd|j dddt|j ddd|S)Nr LIMIT %d LIMIT %d,%dSELECT r;c$g|] }d|dzSrr.rrrs rrz(csv_module.get_query..Ms":m:m:mV[6E&M;Q:m:m:mr FROM  win32\\\c$g|] }d|dzSr6rr7s rrz(csv_module.get_query..[s#AtAtAt]b&5QW=BXAtAtAtrz INTO OUTFILE 'z1' FIELDS TERMINATED BY 'r+rz(' ENCLOSED BY 'r-z/' LINES TERMINATED BY r,)rVrMrGrLrrOrNrPsysplatformlowerreplacerKrepr)rjrfpaths r get_queryzcsv_module.get_queryFs= ; }E{ R"S%5%55<R)S->->DK@P@P,QQE14:m:m_c_l:m:m:m1n1n1n1nptqEqEqEGLGLM ME{ R"S%5%55<R)S->->DK@P@P,QQENE|!!##w.. d622 9<AtAtfjfsAtAtAt8u8u8u8uw{xLxLxLNSNSNS7;|DT7UV]7^7^7^`d`lm|`}FaGaGaGIMNRNZ[jNklsNtIuIuIuIuw|w| } }rc |jr|j}n|}|jr|j|d}|ra|jr|||j|_|ddt|j d5}tj ||j dd|j dd|j dd|j ddr tjn tj }|d |jD|}d }|jr|js|j}d }|r|jrg|jrNt/d |t1|j|jz d d ddddS|dz }|d kr||kr|}|jdz|_t9|jdz|_|t1|j|jz d dg}|jD]} | ds| dr/||| dA| dr/|| | dx| dr/||!| d||"| d|||#|}|dddn #1swxYwY|ddn|j$|ddS)Nrrrz Begin Exportwr+rr,r-) delimiterlineterminator quotecharquotingcg|] }|d S)r.rr7s rrz+csv_module.start_export..os$N$N$NuU6]$N$N$Nrr!Worker thread was stopped by userrz#Data export stopped by user requestFz Data exportrAr?r.rBr@?zExport finishedT)%r^rDrVrSexecuteManagementQueryrrowCountr\ropenrPrwriterrKQUOTE_NONNUMERIC QUOTE_NONEwriterowrO goToFirstRowrLrMr]is_setrroundr[nextRowrgr currentRowrintFieldValueByNamefloatFieldValueByNamegeoStringFieldValueByNamestringFieldValueByNameflushr) rjrrsetcsvfileoutputokrirowrs rr zcsv_module.start_export^sQ   %$EENN$$E ;0 <<66ua@@D, =#700666!%$$S.999$.#..%,' ZT\JZ=[\c=d9=o9VW^9_48L4QRY4ZCKL[\]degyfifzfzknkyzzzFOO$N$N $N$N$NOOO**,,BF|.DK.!%A,-)$2D2K2K2M2M)&'JKKK 00t7H4>7Y[\1]1]`EFFF#(!%,%,%,%,%,%,%,%,$Q!A::!v++!%B$*./A*=,1$/A2E,F,F),,U43Dt~3UWX-Y-Y[hiii #'=UUC";/U3~3FU # 4+C+CCK+P+P Q Q Q Q!$ZU # 4+E+Ec&k+R+R S S S S!$]!3U # 4+I+I#f++V+V W W W W # 4+F+Fs6{+S+S T T T T,,, !\\^^3,%,%,%,%,%,%,%,%,%,%,%,%,%,%,%,L$$S*;<<< L 1 1% ; ; ;tsD+N F)N  NNc z |jsdS|jr|sdS|jr9|dd|jd|jzdd}t|j d5}|ddd |j D}d |jd d d |Ddd d|Dd}td|j D}td|j D}|j tjd}|j|d |j}t%j||j} t*j|j |_|ddd|_| D]A} |jr|jri|jddt9d|t;|j|jz ddddddS|xjdz c_|rd}t=|D]\} } || t?| kr tAd|| d| d}nR| || } || }|| dkr:|r d| |z} n d| |z} |jd| | fzd|| d kr"| |!|j"d!} nJ|| d"kr>tFj#$| ||j%&d#} tO| d$r*| !d%d&!d'd(} |j(d)d*d+kr| )d,krd-| z}nd.| | fz}|j|d |jd/d0 d1t=|Dzd|j*dz|_*|t;|j|jz dd2#tV$rS}tAd3|z|t;|j|jz dd3|zd}Yd}~9d}~wwxYwC|d4d5nQ#tV$rD}ddl,}t[d6|.ztAd7|zYd}~nd}~wwxYw|jdddddn #1swxYwY|S)8NFrTruncate tableTRUNCATE TABLE %srrTrzPrepare Importc.g|]}|d |dSrrrrrcs rrz+csv_module.start_import..%RRRakRa mRRRrPREPARE stmt FROM 'INSERT INTO rr;cg|]}d|zSrrrs rrz+csv_module.start_import..<pXpXpXBEpvy|p|pXpXpXr ) VALUES(cg|]}dS?rrks rrz+csv_module.start_import..:dAdAdAmnehdAdAdAr)'c>g|]}|d |d|dfS)rrcol_norrks rrz+csv_module.start_import..s1aaaqUVW_U`aq}ak:aaarc>g|]}|d |d|dfS)rrr-rrks rrz+csv_module.start_import..s1^^^ARST\R]^a mQvY7^^^rz5.7.5z Begin ImportrDEALLOCATE PREPARE stmtrLrzImport stopped by user requestCan't find col: in row: rFzST_GeomFromText("%s")zGeomFromText("%s")SET @a%d = %s rH.rr<rAr;r<'\'r.rr'NULLzSET @a%d = NULL SET @a%d = '%s' EXECUTE stmt USING %srcg|] \}}d|z Sz@a%drrrcrs rrz+csv_module.start_import..>gVgVgVv|vwy|gmpqgqgVgVgVrz Data import Row import failed with error: %srMzImport finishedImport failed traceback: %sImport failed: %s)/rYrXrrcrrSrrNrPrPrWrr}rU#is_supported_mysql_version_at_leastrfromstrr0rreaderr/ospathgetsizer\r[r]rVrrW enumeraterxrrAr_rstrptimer`strftimerrKupperrgr tracebackr format_exc)rjrr`dest_col_orderr col_ordercol_type is_server_5_7 is_headerrrdrcrrcol_namestmtrrs rr zcsv_module.start_imports! 5 ? ))++ u   a  &6 7 7 7 L 1 12EH\2\^_ ` ` ` $.# & &J P'  &6 7 7 7RRT]RRRNNPTPdPdPdfifnfnpXpXIWpXpXpXgYgYgYgY[^[c[cdAdAr@dAdAdA[B[B[B[BCEaaDMaaabbI^^^^^__H /SST[TcdkTlTlmmM L 1 1% ; ; ;? 3 O GT\::!#!@!@$$S.999$%!!3+3+C)%d.@.G.G.I.I% ==>WYZ[[["#FGGG,,U43Dt~3UWX-Y-Y[{|||$+J PJ PJ PJ PJ PJ PJ PJ P,%%*%% !$)  #,I"6"6$+$+3$S>SXX55%ISVY\Y\&]^^^%*F!E!)C.1#,S>#C=J66,O&ACM&Q&>X&N LAABVZ[]`YaBacdeeee'}88&)(m&;&;D7Y[\1]1]_lmmmm(+++%&H1&LMMM 00t7H4>7Y[\1]1]`BEF`FGGG%*FFFFFF+;"D$$S*;<<<< 3 3 3    89;O;O;Q;QQRRR-122222222 3 L 1 12KQ O O OUJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PJ PX sq>C6V05C(T8*G T85BR?=T8? T ATT8TT87V08 V:V<V0VV00V47V4c |t|jd5}|jCg}t ddD]>}|}t |dkr||?t |}d|}tj ||_tj ||_ |j r |dkrd|_ | d|jj|jdd<|jj|jd d<|jj|jd d<nl|jdd|j_|jd d|j_|jd d|j_| d tj||j}g|_d} t)|}n#t*$r }Yd}~nd}~wwxYw|r|D];} |j|| d d dddddddgd r@r?rArrrBrCrr+r>rCzHFile: %s, probably has got only one line, using it as a header and data z(Error analyzing file, we have no values.Unhandled type:  in r-is_z/Error analyzing file, probably encoding issue: z Traceback is: )%rprPrPr/rangereadlinerxrrrSniffersniffr0seekrGrKrHrIrrOnext StopIterationryrrIloadsrrrrrd startswith UnicodeErrorUnicodeDecodeErrorrrrY)rjr` csvsamplercline csvsample_lenrrow_liner col_valueiirdj json_valuergtypeattribrs r analyze_filezcsv_module.analyze_files  $.# & &[ '|# q//A"++--D4yy1}}!((... #I GGI.. "{}}229== "%+--":":9"E"E?,}'9'9&+DO Q:>,:P -.w79=9T _-g69=9O _-g66)-6F)G)P &.2l?.KG.T +)-o)Fw)O & QA GT\:: " #F||HH$DDDD2<%-WW  ,,d6J6J96U6U`fuyKPbgv{PUafsxDISU.V.VWWWWB#,V#4#4 " "C6609#PP 9!P15I1F1FJDIDM!$4[$ABFDM!$4Y$?$(M!$4W$=$D$DZ$P$P$P$P'0!P!P!P$(M!$4W$=$D$DY$O$O$O$O$O$O$O$O!P P"RxxCMMA$5$5? LrQww#$orvsA%ABBB,5h,?,?LLLAyL-1Z -B-B @E a 0 =>B a 0 ; $ a 0 9 @ @ L L L L#,LLL $ a 0 9 @ @ K K K K K K K KL $}<<s7|,,11%&PQQQ#(U[ [ [ [ [ [ [ [ X!%G = = 66"+)%%%QUQ_Q_,`"a"aa*/CK*-<<#)#4#4U#;#;!<'-1F'F'F6:F 6;F < !"45        dededegpg{g{g}g}g}~%*"uuuw[ [ [ [ [ [ [ [ n o[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ z"tsF8U##S HS  H+!S &H++A4S  AK;:S ; L5 &L0 +S 0L5 5AS AO)(S ) P#3&PS P##5S %A:S U T912T4#U4T99UU U NrrrrlrDr r rrrrrr6sl " " "}}}0777rZZZx`````rrc,eZdZdZdZdZdZdZdS) json_modulect|||d|_|j|_ddg|_d|_dS)NrIz*JavaScript Object Notation (*.json)|*.jsonF)r9rlr.rJrQrRris rrlzjson_module.__init__VsDT69555 Y GP"rc d}|jrIdt|jz}|jr+dt|jt|jfz}ddd|jDd|jd|S) Nr r2r3r4r;c$g|] }d|dzSr6rr7s rrz)json_module.get_query..cs"6i6i6iRWvf 7M6i6i6irr8r9)rMrGrLrrOrNrs rrDzjson_module.get_query]s ; NT[!1!11E| N%T\):):C /B JJJJc&kkk4:dNfNfgjkqgrNsNsCtCtCt'uvvvv _JJJJc&kkk4:dNhNhilmsitNuNuCvCvCv'wxxxx /JJJJc&kkk4C_C_`cdj`kClClCl'mnnnn"6{f44 # #f+++zRVRmRmnqrxnyRzRzG{G{G{+| } } } } # #f+++tzR\]a]x]xy|~DzE^F^FSGSGHHHHHH,I!J!J!J!JBB'+yy~~~~7Kvv7KLDNN4;;w#7#7888NN$$$9%:szz'22333O' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4' 4Rts3BN0JN00N47N4c  |jsdS|jr|sdS|jr9|dd|jd|jzdd}t|j d5}tj |}d|j D}d |jd d d |Dd d d|Dd}td|j D}td|j D}|j|d t||_|D]}|jrQ|jr8t'd|jddddddS|jdz|_t+|D]\} } || |vr t-d|| d|d}nl||| } || } || dkr`dtj| ddddz} |jd| | fzd|| dkr:t3| dr*| dddd} || d kr*| t4|jd!} n|| d"kr9t8j| |jd#} nH|| dkr.rlrrmrr;cg|]}d|zSrorrs rrz,json_module.start_import..rprrqcg|]}dSrsrrks rrz,json_module.start_import..rurrvc>g|]}|d |d|dfS)rrr.rrks rrz,json_module.start_import..s1___QSTU]S^_q}ai8___rc>g|]}|d |d|dfS)rr.r-rrks rrz,json_module.start_import..s/ZZZaPXkZai63ZZZrrLrzr{r|rFz ST_GeomFromGeoJSON('%s')r;r<rrr}rrIrArHr~rr<rGzSET @a%d = %d rrrcg|] \}}d|z Srrrs rrz,json_module.start_import..rrrrr)&rYrXrrcrrSrrNrPrPrIloadrWrr}rxr\r]rVrr[rrrrArrr_rrr`rrGrgrrrr)rjrrdatarrrrrdrcrrrrrs rr zjson_module.start_imports! 5 ? ))++ u   a  &6 7 7 7 L 1 12EH\2\^_ ` ` ` $.$ ' '8 P89X&&DRRT]RRRNNPTPdPdPdfifnfnpXpXIWpXpXpXgYgYgYgY[^[c[cdAdAr@dAdAdA[B[B[B[BCE__$-___``IZZT]ZZZ[[H L 1 1% ; ; ;/ 3!$T(N(NC)%d.@.G.G.I.I%"#FGGG ==>WYZ[[[$8 P8 P8 P8 P8 P8 P8 P8 P)-(9A(=D%"+I"6"6"N"N3$S>44%ISVY\Y\&]^^^%*F!E!)C.1#,S>#C=J66"ADJsOOD[D[\`bhDiDiDqDqruw|D}D}"}C LAABVZ[]`YaBacdeeee'1V;;Y@W@W;&)kk$&?&?&G&GU&S&S'1X==&)c#hh&6&6t7NPS&T&T!)(!3z!A!A&.&7&@&@dFW&X&X&a&abu&v&v!)(!3v!=!=&*joo&=&=dF&K&K&S&STWY^&_&_'1U:: $ E EFZ^_adehaiai]jFjlm n n n n $ E EF\`acf_gFgij k k k kN LAABY\`\e\egVgVAJKTAUAUgVgVgV]W]WCWYZ[[[.2o.ADOO(NNN%&H1&LMMMMMMMMN;"(NT 3 3 3    89;O;O;Q;QQRRR-122222222 3 L 1 12KQ O O Oq8 P8 P8 P8 P8 P8 P8 P8 P8 P8 P8 P8 P8 P8 P8 Pt sp>CS-A$Q58H6Q5/AQQ5 Q/Q*$Q5*Q//Q54S-5 S?:R>9S->SS--S14S1cFg}t|jd5} tj|}nA#t$r4}t d|jzd|_Yd}~ddddSd}~wwxYw dddn #1swxYwYt|dkr t d|jzd|_dSg|_t|tkr|g}|dD](}|j |dddddddddgd )|D]}t|D]t\}}t||ttfvr d|j|d <d|j|d <|j|d  ||u|jD]{}||d }||jvrt!d |d |j||d<|D]3} | dr| |j|krd|| <.d|| <4|d|_dS)NrzJSON file is invalid: %s FrzJSON file contains no data: %s rDTrr>rCrrrr-r)rPrPrIr ValueErrorrrYrxrOr-r}rrr~rrdrr) rjrfrelemrdrcrrrs rrzjson_module.analyze_files  $.$ ' ' 1 y||   6$.IJJJ%*"uuu                          t99>> 8DNK L L L!&D 5 ::  6DG p pD M $Tbgy~NShmy~KP\aln"o"o p p p p < > < <4D ??tTl2249DM!$[126DM!$Y/ a )00T;;;;  < = 0 0COOCL11EDN**ieeeT^^ TUUU#F !00F((//0!T^E%:::*.CKK*/CK 0 "ts6A=/A= A-A(A=(A--A==BBNrrrrrrUsg###III444lGGGR+++++rrc^|dkrt||S|dkrt||SdS)NrrI)rr)r-rrks r create_modulers; u}}&),,, v~~69---~r)r r>rrrrIbase64workbench.utilsr workbench.logrrrr wb_commonr last_locationrrr7r9rrrrrrrs|2  ######HHHHHHHHHHHH    NNN